eduardische's blog

By eduardische, history, 6 years ago, In English

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.

  • Vote: I like it
  • +310
  • Vote: I do not like it

| Write comment?
»
6 years ago, # |
  Vote: I like it -83 Vote: I do not like it

What about the prizes? Any changes?

  • »
    »
    6 years ago, # ^ |
      Vote: I like it +182 Vote: I do not like it

    you and I are still not getting any

    • »
      »
      »
      6 years ago, # ^ |
        Vote: I like it +57 Vote: I do not like it

      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?

      • »
        »
        »
        »
        6 years ago, # ^ |
        Rev. 2   Vote: I like it +69 Vote: I do not like it

        Forgot that t-shirts are also prizes, sorry

        • »
          »
          »
          »
          »
          6 years ago, # ^ |
          Rev. 2   Vote: I like it +19 Vote: I do not like it

          Are there other prizes than shirts?

          Oh yes, the socks from Bloomberg!

          • »
            »
            »
            »
            »
            »
            6 years ago, # ^ |
              Vote: I like it +7 Vote: I do not like it

            In case it's a serious questions, then there are money prizes for winners

            • »
              »
              »
              »
              »
              »
              »
              6 years ago, # ^ |
                Vote: I like it -13 Vote: I do not like it

              Is the converse also true?

              • »
                »
                »
                »
                »
                »
                »
                »
                6 years ago, # ^ |
                  Vote: I like it +93 Vote: I do not like it

                No, if there are money prizes for winners, it does not necessarily mean that it’s a serious question.

»
6 years ago, # |
  Vote: I like it +15 Vote: I do not like it

Also, 4500 contestants in Round 2 and 1000 in Round 3.

  • »
    »
    6 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Where did you find it? I couldn't (thanks to their new design).

    • »
      »
      »
      6 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it
      • »
        »
        »
        »
        6 years ago, # ^ |
          Vote: I like it -38 Vote: I do not like it

        And? I Ctrl+F-ed "1500" and "4500" and didn't find anything.

    • »
      »
      »
      6 years ago, # ^ |
        Vote: I like it +5 Vote: I do not like it

      From the site: 3.1 Code Jam Structure.

      (A) Qualification Round. Code Jam will start with a qualification round on Friday, April 6, 2018 at 23:00 UTC and run for 27 hours, ending on Sunday, April 8, 2018 at 2:00 UTC. In the qualification round, you must log in to the Contest website to attempt to solve a number of problems within the 27-hour period. If you earn a minimum number of points (which will be displayed on the Contest website) during the qualification round, you will advance to Round 1 of Code Jam.
      (B) Round 1. Code Jam Round 1 is conducted online and is offered in three sub-rounds at the times specified at https://code.google.com/codejam/schedule from Saturday, April 14, 2018 to Sunday, May 5, 2018. If you advanced to Code Jam Round 1, you can participate in any or all of the sub-rounds by logging into the Contest website to solve a number of problems to attempt to qualify for Code Jam Round 2. However, once you qualify for Code Jam Round 2, you may not participate in any later sub-rounds of Code Jam Round 1. You will advance to Code Jam Round 2 if you are one of the highest-ranked 1500 contestants from one of the sub-rounds in Code Jam Round 1. A total of 4500 contestants will advance to Code Jam Round 2. You will be notified by email after the end of each sub-round if you are advancing to Code Jam Round 2.
      (C) Round 2. Code Jam Round 2 is conducted online and will begin on Saturday, May 19, 2018 at 14:00 UTC and will end on Saturday, May 19, 2018 at 16:30 UTC. To participate in Code Jam Round 2, you must log in to the Contest website to solve a number of problems. You will advance to Code Jam Round 3 if you are one of the highest-ranked 1000 contestants from Code Jam Round 2. You will be notified by email after the end of Code Jam Round 2 if you are one of the 1000 contestants advancing to Code Jam Round 3.
      (D) Round 3. Code Jam Round 3 is conducted online and will begin on Saturday, June 9, 2018 14:00 UTC and will end on Saturday, June 9, 2018 at 16:30 UTC. To participate in Code Jam Round 3, you must log in to the Contest website to solve a number of problems. You will advance to the onsite final round of Code Jam if you are one of the highest-ranked 25 contestants from Code Jam Round 3. You will be notified by email after the end of Code Jam Round 3 if you are one of the 25 contestants advancing to the final round of Code Jam.
  • »
    »
    6 years ago, # ^ |
      Vote: I like it +21 Vote: I do not like it

    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.

    • »
      »
      »
      6 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      The number of T-shirts awarded stays the same (1000).

      • »
        »
        »
        »
        6 years ago, # ^ |
          Vote: I like it +3 Vote: I do not like it

        It is reduced. It was up to 1500: 1000 for GCJ, 500 for DCJ (if not received in GCJ already).

        • »
          »
          »
          »
          »
          6 years ago, # ^ |
            Vote: I like it +5 Vote: I do not like it

          No, last year also only the top 1000 got shirts.

          • »
            »
            »
            »
            »
            »
            6 years ago, # ^ |
              Vote: I like it 0 Vote: I do not like it

            I got a T-Shirt from top 500 DCJ and I wasn't in top 1000 GCJ, which clearly condradicts your thesis :)

            • »
              »
              »
              »
              »
              »
              »
              6 years ago, # ^ |
                Vote: I like it +8 Vote: I do not like it

              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.

  • »
    »
    6 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    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.

»
6 years ago, # |
  Vote: I like it +11 Vote: I do not like it

I am unable to register for Google Code Jam 2018. When I click on sign in to register nothing happens.

»
6 years ago, # |
  Vote: I like it +69 Vote: I do not like it

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?

We currently support the following, which represent over 97.5% of the submissions in last year's Qualification Round

Translation: fuck the fringe 2.5 percent, use C++ or get out.

  • »
    »
    6 years ago, # ^ |
      Vote: I like it +3 Vote: I do not like it

    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.

  • »
    »
    6 years ago, # ^ |
      Vote: I like it +27 Vote: I do not like it

    It makes it easier to participate via a variety of devices, e.g., Chromebooks.

    Good thing they now replaced that fringe with the Chromebook fringe \s

»
6 years ago, # |
Rev. 2   Vote: I like it +24 Vote: I do not like it

"(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.

  • »
    »
    6 years ago, # ^ |
    Rev. 4   Vote: I like it +13 Vote: I do not like it

    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.

    • »
      »
      »
      6 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Codeforces even without hacking is still good, man, nevermind I haven't participated yet, I wanna read Cormen first.

»
6 years ago, # |
  Vote: I like it +11 Vote: I do not like it

I wonder if CHelper parser will continue to work. Probably not :(

  • »
    »
    6 years ago, # ^ |
      Vote: I like it +14 Vote: I do not like it

    It will after the test round

»
6 years ago, # |
  Vote: I like it +47 Vote: I do not like it

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.

  • »
    »
    6 years ago, # ^ |
      Vote: I like it +55 Vote: I do not like it

    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.

    • »
      »
      »
      6 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      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).

    • »
      »
      »
      6 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      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.

    • »
      »
      »
      6 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      http://codeforces.com/blog/entry/51579?#comment-354411

      But one can advantage by spending more money (besides not being lazy).

»
6 years ago, # |
  Vote: I like it +49 Vote: I do not like it

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.

  • »
    »
    6 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    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).

    • »
      »
      »
      6 years ago, # ^ |
      Rev. 2   Vote: I like it 0 Vote: I do not like it

      I always use TC applet directly. It isn't a big deal.

      Maybe because codes for SRM problems are extremely short usually.

  • »
    »
    6 years ago, # ^ |
      Vote: I like it +40 Vote: I do not like it

    On CSA I code in their editor because it's good + running on samples.

    • »
      »
      »
      6 years ago, # ^ |
      Rev. 3   Vote: I like it -8 Vote: I do not like it

      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.

      • »
        »
        »
        »
        6 years ago, # ^ |
          Vote: I like it +65 Vote: I do not like it

        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.

        • »
          »
          »
          »
          »
          6 years ago, # ^ |
            Vote: I like it +30 Vote: I do not like it

          'I'm bad at CP so I've never done some of these things'

          When LGM says these kind of words...........

        • »
          »
          »
          »
          »
          6 years ago, # ^ |
            Vote: I like it +20 Vote: I do not like it

          I'm bad at CP

          I think you meant "I'm bad at making use of extra CP tools". Unless by CP you meant something else...

          • »
            »
            »
            »
            »
            »
            6 years ago, # ^ |
              Vote: I like it +24 Vote: I do not like it

            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.

        • »
          »
          »
          »
          »
          6 years ago, # ^ |
            Vote: I like it +27 Vote: I do not like it

          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.

          • »
            »
            »
            »
            »
            »
            6 years ago, # ^ |
              Vote: I like it +19 Vote: I do not like it

            lazy

          • »
            »
            »
            »
            »
            »
            6 years ago, # ^ |
              Vote: I like it +8 Vote: I do not like it

            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.

          • »
            »
            »
            »
            »
            »
            6 years ago, # ^ |
            Rev. 2   Vote: I like it 0 Vote: I do not like it

            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.

            it literally tells me "hey, you have bug in line 123"

            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.

            • »
              »
              »
              »
              »
              »
              »
              6 years ago, # ^ |
              Rev. 2   Vote: I like it +13 Vote: I do not like 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.

              If you’re not good with gdb, you can even lose time instead.

              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.

          • »
            »
            »
            »
            »
            »
            6 years ago, # ^ |
              Vote: I like it 0 Vote: I do not like it

            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.

          • »
            »
            »
            »
            »
            »
            6 years ago, # ^ |
              Vote: I like it 0 Vote: I do not like it

            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).

            • »
              »
              »
              »
              »
              »
              »
              6 years ago, # ^ |
                Vote: I like it +37 Vote: I do not like it

              I will provide some answers for you, with equally valid answers for those who use debug output:

              1. "IDE is of course not faster than GDB" => "GDB is of course not faster than debug output"

              2. "I am just used to running from command line" => "I am just used to debug output"

              3. "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"

      • »
        »
        »
        »
        6 years ago, # ^ |
          Vote: I like it +88 Vote: I do not like it

        Finding a line with segfault takes O(log(code)) with prints ;p

        • »
          »
          »
          »
          »
          6 years ago, # ^ |
            Vote: I like it 0 Vote: I do not like it

          its breaks on recursion algorithms

          • »
            »
            »
            »
            »
            »
            6 years ago, # ^ |
              Vote: I like it 0 Vote: I do not like it

            Does it? It will just print a lot of things. The last printed line is important.

    • »
      »
      »
      6 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Respect!

»
6 years ago, # |
  Vote: I like it +156 Vote: I do not like it

Can't wait to see their judge queue

»
6 years ago, # |
  Vote: I like it +49 Vote: I do not like it

I only hope design of T-shirts will be new too

  • »
    »
    6 years ago, # ^ |
      Vote: I like it +20 Vote: I do not like it

    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)

    • »
      »
      »
      6 years ago, # ^ |
        Vote: I like it +50 Vote: I do not like it

      This one?

      • »
        »
        »
        »
        6 years ago, # ^ |
        Rev. 2   Vote: I like it +11 Vote: I do not like it

        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..

    • »
      »
      »
      6 years ago, # ^ |
      Rev. 3   Vote: I like it 0 Vote: I do not like it

      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 :)

»
6 years ago, # |
  Vote: I like it +54 Vote: I do not like it

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 :)

»
6 years ago, # |
  Vote: I like it -20 Vote: I do not like it

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.

»
6 years ago, # |
  Vote: I like it +3 Vote: I do not like it

They delayed the practice session by one week.