Registration for the Google Code Jam 2018 is now open.
Also, there are some pretty big changes for this year as they have a new system to compile and run code themselves. Kind of really sad for me, because the ability to submit the code in any language you want and the multilanguage leaderboards were what made the contest unique in my eyes.
What about the prizes? Any changes?
you and I are still not getting any
I think he is talking about winning T-shirt as a prize. Do you think he can't win it ? Also, why can't you win it?
Forgot that t-shirts are also prizes, sorry
Are there other prizes than shirts?
Oh yes, the socks from Bloomberg!
In case it's a serious questions, then there are money prizes for winners
Is the converse also true?
No, if there are money prizes for winners, it does not necessarily mean that it’s a serious question.
Also, 4500 contestants in Round 2 and 1000 in Round 3.
Where did you find it? I couldn't (thanks to their new design).
https://code.google.com/codejam/resources/faq#changing-in-2018
And? I Ctrl+F-ed "1500" and "4500" and didn't find anything.
Try here: https://code.google.com/codejam/terms
lol read it: "Compared to past years, more contestants will advance from Round 1 to Round 2, and from Round 2 to Round 3. See section 3.1 (B) and (C) of the Terms and Conditions for more details."
From the site: 3.1 Code Jam Structure.
For the sake of information:
In the previous years the bounds were 3000 for Round 2(1k each from rounds 1A, 1B and 1C) and 500 for Round 3.
The number of T-shirts awarded stays the same (1000).
It is reduced. It was up to 1500: 1000 for GCJ, 500 for DCJ (if not received in GCJ already).
No, last year also only the top 1000 got shirts.
I got a T-Shirt from top 500 DCJ and I wasn't in top 1000 GCJ, which clearly condradicts your thesis :)
Same happened to me, didn't make it into the top 1000, but got a shirt via DCJ.
But I (and I think the others) were talking about GCJ alone. In that regards, the shirt numbers are the same, the top 1000 will receive a shirt. The change is, that this year there will be no more shirts from DCJ.
Only the Round 3 is qualified for DCJ this year, so only 1000 participants in DCJ instead of 3000 last year which is a pretty big change.
I am unable to register for Google Code Jam 2018. When I click on sign in to register nothing happens.
Well shit. Way to destroy a contest. How does that work now, do we lose information about what our code is ran on and what it outputs, with still no chance to resumbit after 10 minutes are up?
Translation: fuck the fringe 2.5 percent, use C++ or get out.
As I understand, you can resubmit as many times as you want. However, there is a limit of 10 submissions per any 10 minutes, so you won't overload the system.
Good thing they now replaced that fringe with the Chromebook fringe \s
"(B) Programming Language. You may use the following programming languages to solve a problem or sub-problem for Code Jam: (1) C, C++, Python, Java, Bash and Go; and (2) any other languages communicated to you by Google via email or on the Contest website."
Excel? Up your game a little and do it in Bash!
EDIT: I'm actually happy for the changes, less hassle downloading and changing filenames and then uploading right files + people with very fast machines don't get an advantage.
As much as I was also surprised to see Bash in the list and as much as I do get you’re joking, I’d like to point out that using Bash instead of Excel really isn’t upping one’s game; quite the opposite. Bash is much more like a proper programming language: it has control structures, variables, user-defined functions, arrays, and being able to call all the standard UNIX command-line tools gives quite a lot of additional power and flexibility. Bash was (therefore) also somewhat commonly used in Code Jam, whereas Excel was used by eduardische alone, plus occasionally a second person for a single test input.
Given that my main goal in Code Jam in recent years was to use as many different languages as possible, and seeing as the new format is almost no different from other contests such as CodeForces sans hacking, I’m not sure I even want to participate any more. But I guess I will anyway, at least for the T-shirt and for DCJ. DCJ was kinda fun when I participated last year.
Codeforces even without hacking is still good, man, nevermind I haven't participated yet, I wanna read Cormen first.
I wonder if CHelper parser will continue to work. Probably not :(
It will after the test round
For me most important change is that everybody has same memory/time limits etc. I actually never forced myself to either write tool for local distribution of testcases or find one and get familiar with it and I think it is good that this is standardized and people with that tool or with faster laptops don't get advatanges. FBHC remains with these rules where such tool would introduce significant advantage, but it currently means too little to me to actually care :P.
Moreover we can't use external tools like LPsolvers which was a nice feature.
I basically agree with all points listed as advantages. Except for "It makes it easier to participate via a variety of devices, e.g., Chromebooks." which is of course ridiculous xD. But at the same time I see that loss of uniqueness. Regarding using Excel and other technologies (couldn't use "languages" here xD), I see your point, but this is something relevant to only qualification round, no serious person uses Excel on rounds which have any meaning.
The same limits on different languages means C++ is a great choice, Java is ok, Python is a pretty bad choice. Note that Python was the second most popular language on non-quals last year, so that is a big nerf. Note that different limits for different languages don't work, since the speed ratio is highly non-constant and there are speedups that might not work on the testing server. Being able to use external libraries is a good thing, not a bad thing — in that, the only difference between an LP solver and a RB tree is that one is included in STL.
I'm especially pissed because I was hoping to finally write and use a multithreading tool this year and this was basically Goolag saying "lol nope". I know what it's like to be too lazy to give yourself an advantage, but I don't want everyone else having that potential advantage taken away! Equality by affirmative action comes to mind.
Reading your posts gives an impression that "multithreading tool" is something very complex. Lol, mine was like 30 lines of code in the solution template.
Also, you can still use any library with the help of code inliners (unless the inlined code is too big).
30 lines (or less) of code is what I had in mind too, I wrote TooLazy not TooSimpIe.
I hope they use PyPy for running Python to make it faster, but there’s no telling at this point. In the old system, I could at least control what interpreter I use.
http://mirror.codeforces.com/blog/entry/51579?#comment-354411
But one can advantage by spending more money (besides not being lazy).
By the way, what's with the hype on providing editors in browser?? Seriously, who codes in browser?? It seems to me that currently many sites (Hackerrank, CSAcademy, GCJ) are providing these to look cool but in fact this is something utterly useless and for me it could as well be a big irrelevant ad. Only profit I see is that on CSA it comes with running checkers on samples in problems with nonunique output.
Just because it gives you a competitive edge when you use a non-browser IDE doesn't mean it's useless. You can solve a problem on a mobile device which is pretty nice. Also, in TopCoder you can solve a problem directly in the applet and it was used by some contestants, I even remember Petr solving a problem in C++ that way (he needed the stl::map lower/upper_bound).
I always use TC applet directly. It isn't a big deal.
Maybe because codes for SRM problems are extremely short usually.
On CSA I code in their editor because it's good + running on samples.
o0 What if you have segfault and want to execute your program in gdb/valgrind? What if you want to do some stresstesting? What about compilation flags (however maybe they support them, don't know)? What if your code is too slow and you want to profile it? What if you want to write some auxiliary program like in generator or some additional experiments? What if you want to extend your tests set and test your program on samples + few more tests every time? Or do "cerr debugging" that has more than 5 lines?
Surely for some of these questions you may be able to temporarily move to your local workspace but then it is inconvenient and kills any advantages browser editor may have.
First of all, I'm bad at CP so I've never done some of these things.
Things that I've done at least one time are:
- stresstesting
- writing generator
- adding my own tests, of course. But I've never used something to run it in a convenient way (like always writing code as it was multitest problem), so I don't see why CSA is less convenient.
- cerr debugging. CSA doesn't restrict number of lines in stderr, at least I've never bumped in that restriction
So the last two things I'm using can be done in CSA editor. The first two things are mostly used in team ACM-style contests. On two-hour rounds most problems are easy enough to debug without stresstesting, and you don't have enough time to write a stress.
+ some stresstesting can be done inside your code, so you don't have to use external files and generator.
'I'm bad at CP so I've never done some of these things'
When LGM says these kind of words...........
I think you meant "I'm bad at making use of extra CP tools". Unless by CP you meant something else...
Well, OK. I meant that I don't really do something apart from solving problems, but these thing could (probably) make my results better. So I'm not good at trying my best at competitions.
Are you going to tell me you never used gdb and valgrind? What do you do if you encounter segfault in your code? Read whole code searching for its cause? Have you really never used any flags, like -g, -fsanitize=address, -fsanitize=undefined, -D_GLIBCXX_DEBUG, -Wshadow, -Wunused, -O2, etc.?
I consider gdb as extremely useful, it literally tells me "hey, you have bug in line 123". Profilers tell me "hey, you get TLE because of line 123" (ok, maybe for profiles it's a bit more mysterious, but for gdb it wasn't an exaggeration).
For adding my own tests, let's say I created tests in1, and in2. Then I test my program on them by typing "./A < in1", "./A < in2". When I want to do this next time this is just few up arrows and enter. I suppose there is no option to create local files in browser editor, so everytime I would like to test my new version of code on two files I would need to either type them separately every time or store them locally and copy/paste them what would require a lot of switching windows.
lazy
I use browser editor when there is one. When I need to gdb, I copy my code into
~/prog/test/00/qwe.cpp
and do whatever I want. This definitely doesn't "kill any advantages browser editor may have". Moreover, it happens quite rarely. Browser editor is still good and allows to test my code on samples without copying them.I’m obviously no grandmaster, but I don’t use gdb or other debuggers, Valgrind or any of the options you listed in competitive programming; although I’m not sure what you mean when you say
-O2
: how are optimization flags relevant here? I do enable optimization, of course, but it’s either-O3 -march=native -flto -fwhole-program
or the exact flags the competition’s server is known to use, or at worst maybe-O2
or even-O1
if I don’t know the server’s flags while being really paranoid about TLE (and if I had to use gdb, then obviously-Og
or-O0
). I may have enabled-Wall -Wextra
at times, but frankly I can’t tell now and most of those times would have to be out of habit. OK, fine, if I want to be awfully precise, I imagine I may have used gdb in some particularly hard case as I do have it installed (although it’s been somewhat broken for several years), but I have no recollection of doing so.For debugging, I add debugging output and recompile.
I assume you mean it tells you which line segfaults. But keep in mind that segfaults are not the only (or necessarily the most common) error and even if you do find which line segfaults, you still need to figure out why it does and how to fix it. Of course, gdb can do various other things too, and I won’t contest that with a good grip of gdb you can perhaps do some things faster than in other ways: e. g. you can set a breakpoint and print a variable’s value, which, compared to debugging output, saves you the time to add the right output call in the code, to recompile and to rerun the solution up to that point; but there are other ways and I don’t think these time savings are huge. If you’re not good with gdb, you can even lose time instead. And if your breakpoints is within a loop and stuff takes some iterations to break, resuming gets annoying quickly. I guess it ultimately mostly depends on your habits.
I do use files for tests, both the samples and my own, and I do sometimes generate maxed-out test cases to test my solution’s performance (especially when using a slow language in Code Jam). Having to copy & paste the desired test case repeatedly when repeatedly running the solution to debug it is annoying (I do this sometimes before I get frustrated enough to save the test case to its own file), but not terrible.
On the topic of browser editors, I’ve never used one. I haven’t encountered many (decent) browser code editors, but when I did, I think I usually ended up preferring my own favourite editor (Sublime Text) because it’s more powerful and I’m very used to it, so I can get things done faster in it.
Information which line segfaults is incredibly useful. In some cases segfault may be a result of some more involved bug, but in majority it is obvious why it was a case or when it is not obvious it puts you on a right track which you will not find quickly without it instead of wasting a lot of time wondering about other correct parts of code. Things like not initialized with proper size vectors take 10s to debug with gdb instead of 10min.
One and only thing I do with gdb is "r < A.in" and "bt". I never use anything else, so my knowledge about it is very poor. But I still can't overstate how useful it is to me.
I remember my case from IOI, when I was not familiar with gdb and was dealing with some segfault for something like an hour. In the end I didn't find bug and missed gold medal because of it. After contest, when we were allowed again on our workspaces, my team leader ran my code with gdb and I immediately learned what was that bug. Not knowing gdb costed me gold medal and one hour of wasted time.
As for O2, I threw it there randomly (but all other flags are actually useful), don't focus on that one.
I have never used gdb and valgrind (well, once in university teacher said what I should type and he used gdb output, not me).
In case of RTE I can do binsearch with cerr to find bad line of code. Maybe it is not that fast but you also gain useful info about variables to that moment.
Well, if you like performance so much, why don't you use an IDE, and instead launch GDB / run your program from the command line?
Clearly, IDEs allow you to do things faster than manual invocations (especially debugging).
I will provide some answers for you, with equally valid answers for those who use debug output:
"IDE is of course not faster than GDB" => "GDB is of course not faster than debug output"
"I am just used to running from command line" => "I am just used to debug output"
"There are no good C++ IDEs for Linux, and I use Linux" => "There's no GDB in the CSA web editor, and I use CSA web editor"
Finding a line with segfault takes O(log(code)) with prints ;p
its breaks on recursion algorithms
Does it? It will just print a lot of things. The last printed line is important.
Respect!
Can't wait to see their judge queue
Common its google.
Facebook Hacker Cup had a very fun first year...
I only hope design of T-shirts will be new too
I accidentally saw a tweet by whom I consider as a Google engineer, which contains a picture of advertisement on GCJ with the T-shirt design-like figure... (The tweet was deleted in a few minutes)
This one?
If the investors don't like their new Code Jam T-shirt design, Google stock will fall 10% after this leak :(
Twitter is lethal weapon nowadays..
Are you referring to me? :)
So, I tweeted the original tweet with the image, but I figured out there is a typo in my tweet, so I removed the original tweet, fix the typo, but forgot to re-attach the image.
I just tweeted a new tweet with both the image and the typo fix. https://twitter.com/jonathanirvings/status/971977840294940673
Anyway, the image is just the 2018 Code Jam flyer that the Code Jam team shared to all of Google engineers and asked us to share. We are not implying that the image contains the T-shirt design :)
I don't like changing the GCJ to be just like any other contest. Running programs on our own computers was something (almost) unique. I understand that now the contest will be more fair, without advantages to those with stronger machines — it's a plus. On the other hand, it was cool to download the input and work with that. Instead of just MLE/TLE/WA verdict, we see what happens when we run a program. Maybe it's a bit too slow and making it 2 times faster will be enough, and maybe it crashes on N=1. We can analyze the test case where an asserts fails. I would be so happy if some problems could be solved partially by hand, just looking at tests and maybe using some auxiliary program. All of this makes the contest unique, different.
That being said, I will still happily participate because GCJ has good-quality problems :)
Disappointing that they do not use a grand prix system similar to Yandex, everything is on a high stakes round to cut from 1000->25.
They delayed the practice session by one week.