Блог пользователя eduardische

Автор eduardische, история, 6 лет назад, перевод, По-русски

Регистрация на Google Code Jam 2018 открыта.

Также в этом году были объявлены большие изменения в связи с вводом новой системы -- компиляция и запуск теперь будет происходить там. На самом деле мне весьма грусто, так как для меня возможность решить задачу на каком угодно языке и ранки "полиглотов" делали этот контест уникальным.

  • Проголосовать: нравится
  • +310
  • Проголосовать: не нравится

»
6 лет назад, # |
  Проголосовать: нравится -8 Проголосовать: не нравится

А мне грустно, что надо все данные заполнять заново при регистрации...

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится +5 Проголосовать: не нравится

    Мне только одно поле пришлось дозаполнить.

»
6 лет назад, # |
  Проголосовать: нравится -83 Проголосовать: не нравится

What about the prizes? Any changes?

»
6 лет назад, # |
  Проголосовать: нравится +15 Проголосовать: не нравится

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

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

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

    • »
      »
      »
      6 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
    • »
      »
      »
      6 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится

      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 лет назад, # ^ |
      Проголосовать: нравится +21 Проголосовать: не нравится

    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 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

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

      • »
        »
        »
        »
        6 лет назад, # ^ |
          Проголосовать: нравится +3 Проголосовать: не нравится

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

        • »
          »
          »
          »
          »
          6 лет назад, # ^ |
            Проголосовать: нравится +5 Проголосовать: не нравится

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

          • »
            »
            »
            »
            »
            »
            6 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

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

            • »
              »
              »
              »
              »
              »
              »
              6 лет назад, # ^ |
                Проголосовать: нравится +8 Проголосовать: не нравится

              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 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    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 лет назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится

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

»
6 лет назад, # |
  Проголосовать: нравится +69 Проголосовать: не нравится

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 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится

    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 лет назад, # ^ |
      Проголосовать: нравится +27 Проголосовать: не нравится

    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 лет назад, # |
Rev. 2   Проголосовать: нравится +24 Проголосовать: не нравится

"(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 лет назад, # ^ |
    Rev. 4   Проголосовать: нравится +13 Проголосовать: не нравится

    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 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

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

»
6 лет назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится

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

»
6 лет назад, # |
  Проголосовать: нравится +47 Проголосовать: не нравится

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 лет назад, # ^ |
      Проголосовать: нравится +55 Проголосовать: не нравится

    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 лет назад, # |
  Проголосовать: нравится +49 Проголосовать: не нравится

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 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    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 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

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

      Maybe because codes for SRM problems are extremely short usually.

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится +40 Проголосовать: не нравится

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

    • »
      »
      »
      6 лет назад, # ^ |
      Rev. 3   Проголосовать: нравится -8 Проголосовать: не нравится

      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 лет назад, # ^ |
          Проголосовать: нравится +65 Проголосовать: не нравится

        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 лет назад, # ^ |
            Проголосовать: нравится +30 Проголосовать: не нравится

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

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

        • »
          »
          »
          »
          »
          6 лет назад, # ^ |
            Проголосовать: нравится +20 Проголосовать: не нравится

          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 лет назад, # ^ |
              Проголосовать: нравится +24 Проголосовать: не нравится

            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 лет назад, # ^ |
            Проголосовать: нравится +27 Проголосовать: не нравится

          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 лет назад, # ^ |
              Проголосовать: нравится +19 Проголосовать: не нравится

            lazy

          • »
            »
            »
            »
            »
            »
            6 лет назад, # ^ |
              Проголосовать: нравится +8 Проголосовать: не нравится

            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 лет назад, # ^ |
            Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

            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 лет назад, # ^ |
              Rev. 2   Проголосовать: нравится +13 Проголосовать: не нравится

              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 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

            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 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

            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 лет назад, # ^ |
                Проголосовать: нравится +37 Проголосовать: не нравится

              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 лет назад, # ^ |
          Проголосовать: нравится +88 Проголосовать: не нравится

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

    • »
      »
      »
      6 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Respect!

»
6 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

Жалко. Закончилась эпоха переборных решений. Не получится теперь решить C(Hard) в Round 2 перебором и занять там 105 место, а потом B(Hard) в Round 3 перебором и занять 84 место... Видимо, придется пропустить сезон.

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Я бы назвал это единственным плюсом перехода

»
6 лет назад, # |
  Проголосовать: нравится +156 Проголосовать: не нравится

Can't wait to see their judge queue

»
6 лет назад, # |
  Проголосовать: нравится +49 Проголосовать: не нравится

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

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится +20 Проголосовать: не нравится

    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 лет назад, # ^ |
        Проголосовать: нравится +50 Проголосовать: не нравится

      This one?

      • »
        »
        »
        »
        6 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится +11 Проголосовать: не нравится

        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 лет назад, # ^ |
      Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

      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 лет назад, # |
  Проголосовать: нравится +54 Проголосовать: не нравится

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 лет назад, # |
  Проголосовать: нравится -20 Проголосовать: не нравится

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 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

They delayed the practice session by one week.