eatmore's blog

By eatmore, history, 6 years ago, In English

Google Code Jam 2019 Qualification Round will start on April 5 at 23:00 UTC and last for 27 hours. Here is the official announcement:

Hi everyone,

Code Jam is back for its 16th year, kicking off with the Qualification Round in one week! We're excited to provide you with another season of intriguing problems (including some interactive ones) and a refreshed user experience. Register today for a chance to earn the coveted title of Code Jam Champion at the World Finals in San Francisco, California, and take home the grand prize of $15,000.

Here’s what you need to know about this year’s competition:

  • The 27-hour Online Qualification Round begins on Friday, April 5 @ 23:00 UTC; registration will be open from now until the round ends.
  • Registration is now a two-part process: first, you'll create a coding competitions profile, then you'll be prompted to complete registration for Code Jam specifically. Make sure you complete both steps and lookout for a registration confirmation in the "Alerts" section of our site.
  • We hope you enjoy new and familiar features alike such as "ask a question," testing your solution on our servers, and receiving a participation certificate. You'll receive a certificate after the last round you participate in (so long as you make at least one competitive attempt during the Qualification Round.).
  • The top 1,000 contestants in Round 2 win a limited edition Code Jam t-shirt.
  • You can start warming up with previous Code Jam problems.

Visit g.co/codejam to register and review the updated Code Jam FAQs, Rules and Terms. See you on the scoreboard!

P.S. Spread the word about #CodeJam with these resources: Code Jam video, 2019 flyer and a Google Keyword blog post.

And another one:

Reminder: the 2019 Code Jam Qualification Round begins later today. We have a few exciting updates and helpful reminders to share:

  • We've made several updates to our FAQ, and are proud to offer 20 additional languages this season! Please review all of the FAQ sections before the round — especially "Competing," "Coding," and "Interactive Problems", which contain important details about supported languages, updated tools and testing on our servers

  • The round will be open for 27 hours, starting April 5 at 23:00 UTC and ending April 7 at 2:00 UTC. You can spend as much or as little of the 27 hours competing as you would like, but you must attain a final score of at least 30 points to move on to Code Jam’s Round 1. If you're a new competitor who is comfortable with programming, the odds are good that you will be able to earn enough points to advance within a few hours.

  • You can prepare by: working through past problems, reviewing the Code Jam FAQ & Rules and Terms. If you have questions during the round, use the "Ask a Question" feature in the competition interface. If you can't find an answer in the FAQ or Rules, reach out to codejam@google.com.

Good luck!

The Code Jam Team

This year, Code Jam has a new competition interface. To register for Code Jam, you will have to first create a profile in the new system (even if you participated in the previous years), and then to register for the Code Jam itself.

Also, the list of supported languages was significantly expanded. The supported languages are: Bash, C, C++, C#, Clojure, Dart, F#, Go, Groovy, Haskell, Java, JavaScript, Julia, Kotlin, Lisp, Lua, Objective-C, OCaml, Octave, Pascal, Perl, PHP, Python 2, Python 3, PyPy 2, R, Ruby, Rust, Scala, Swift, TypeScript, and Visual Basic.

You may want to read some useful posts about Code Jam:

Good luck & have fun!

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

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

Do I understand correctly that solving the samples of A and B is enough to qualify?

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

    Since 6+10+5+9=30, and since "Contestants with at least 30 points at the end of this round will advance to Round 1." then yes, I think so :)

    EDIT: I had misread sample as visible test cases, so my comment was completely wrong. Apologies. :(

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

    No.

    As stated in Code Jam Rule:

    4.3 Judging and Scoring.
    ...
    "Visible Test Sets" are test sets for which the outcome of judging will be reported during a Round.
    

    Visible test set can contain testcases other than sample.

    It's enough to qualify after solving visible test sets for problem A and B.

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

How to solve D2?

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

    Read the editorial.

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

    Here's my solution:

    The key idea I used was to think of the queries as sending $$$N$$$ $$$F$$$-bit numbers rather than $$$F$$$ $$$N$$$-bit strings. So, for example if you sent the following $$$3$$$ queries:

    $$$1010$$$

    $$$0100$$$

    $$$1101$$$

    Think of it like you are sending $$$4$$$ numbers, $$$5$$$, $$$6$$$, $$$1$$$, $$$4$$$ in that order. Here each number is represented by a vertical column, where the $$$i$$$th row determines the bit in the number $$$i$$$th from the right. So, first row corresponds to $$$2^{0}$$$, second row corresponds to $$$2^{1}$$$ and so on. Read the judge's response in the same way.

    This makes the solution for $$$F = 10$$$ quite simple, as now you can send $$$N$$$ $$$F$$$-bit numbers, you just make each worker output its ID, that is, output $$$0$$$, $$$1$$$, $$$\ldots$$$, $$$1023$$$ in that order. Now, the judge will return some $$$N-B$$$ among these numbers and you just output the $$$B$$$ missing numbers as the answer.

    Now, notice you haven't used $$$2$$$ details yet: 1. The numbers returned are returned in the order they were given. 2. $$$B$$$ cannot be more than $$$15$$$.

    This allows us to let each worker output its ID modulo $$$16$$$ rather than the exact ID. So, your output looks like:

    $$$0$$$, $$$1$$$, $$$\ldots$$$, $$$15$$$, $$$0$$$, $$$1$$$, $$$\ldots$$$

    And the judge will return these numbers in the same order with atmost $$$15$$$ numbers missing. Now, notice each group of $$$0$$$, $$$1$$$, $$$\ldots$$$, $$$15$$$ contains $$$16$$$ numbers, so no group can go completely missing. So, in the returned numbers, if a number is less than or equal to the number before it, that means a we are in the next group. In this way, we can uniquely determine the ID's of the workers returned and thus output the ID's of the remaining workers. As, we output only $$$4$$$-bit numbers, we can solve this with $$$F = 4$$$.

    Implementation

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

    Bonus: it's possible to solve D2 with $$$F = 4$$$.

    (AwakeAnay have really nice solution, my idea is way more complicated)

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

      Yeah, to make sure the solution worked fine I submitted one attempt with a fixed F = 4.

      IMO, the "Hidden" test set wasn't that hidden — you simply had to make a submission with a fixed F (rather than the value sent by the judge) and emulate either the Visible or the Hidden set.

      But that was a great problem, totally loved it.

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

Why the platform doesn't show the error message for samples? I got RTE for python3 without knowing a reason while my code runs em well on codeforces custom and ideone.com T_T

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

Is the stack limit with G++ specified anywhere ?

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

I think there is a editorial of the qualification round but i am not able to found in google code jam website. Does anyone know where to find it?

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

    In the new platform, the editorial for each problem is in a tab above the problem statement and right below the last updated label

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

Can someone explain how to use the sample grader on problem D?

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

    Download 2 scripts provided and run the command like the following

    python3 interactive_runner.py python3 testing_tool.py 1 -- ./D

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

    In most cases you can write your own emulator. Look: https://pastebin.com/SGGz9uza

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

      I did a completely different solution... was fun reading yours.

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

Did anyone try to parse the new website and get statistics?

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

    Here is a scoreboard parser: gcj-2018-scoreboard-api It's a node application. Works pretty good for my usage.

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

      What different commands are there to retrive more details like name of participants of a country etc. or it shows only no of participants statistics of a country ?

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

        For each participants it shows you the rank, name, country, points, times, and which problems and test cases were solved. Either for a country or for everybody.

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

      Thank you!

      How should we run "node scoreboard contestID [country]"?

      (Sorry if the question is stupid — I'm gray at practical programming.)

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

        You need to install node somehow. E.g. with apt install nodejs or pacman -S nodejs under common Linux distributions. It will also run on other OSes, but I cannot help in that regard.

        Then download the program files (either with git clone https://github.com/nhho/gcj-2018-scoreboard-api.git or as a zip file from the website and extract it), navigate into that directory using your terminal, and execute the command with a valid contestId (listed in the Readme) and an optional country name, e.g. node scoreboard 0000000000051705 Japan. To do further processing of the data I suggest piping the output into a text file.

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

          A cross-platform alternative (also not suffering from outdated versions like apt often does) would be installing Anaconda, which is either terminal-based in Linux or with a separate command prompt. Then, conda install -c conda-forge nodejs is sufficient to install Node.

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

Did anyone solve C2 using C++ ? If yes, please share the code..

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

Is it no longer possible to see other contestants' codes in the new interface?

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

    Click on the contestant's name to see their all submissions.

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

What are the DP flux algorithms?

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

    "we do not even have to know a bevy of DP flux algorithms, whatever those are!". Google's Words!

    link

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

Who cares about adding some Clojure, Dart, PHP and whatever if they can't give us usable site?

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

    Well, it is not correct to say that they don't have a usable site.

    The last year's website was more or less fine, and the two years ago and below site was even better.

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

    Nah. According to Pablo Heiber, whether a site is usable or not is subjective. Also, the Google UI people don't think usable sites are good for newcomers. /sarcasm

    I decided to just not participate. Distributed isn't there, interface changes are a pain and it simply isn't worth my time.

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

    Who cares about adding some Clojure, Dart, PHP and whatever

    *outdated versions of Clojure and PHP (not to mention C++14, Java 8, python 3.5, etc)

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

Is it possible to use Google CodeJam Old website?

We can submit Qualification round problems in there and see the counter for the next round.

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

UX is getting from bad to worse every year.