· Nov 26, 2021

Advent of Code 2021: Code in ObjectScript to win!

Hey Developers,

Ready to participate in our annual December competition?

Join the Advent of Code 2021 with InterSystems and participate in our ObjectScript contest to win some $$$ prizes!

🏆 Our Leaderboard 🏆

Here you can find our last year's participants.

👉🏼 Join the ObjectScript private leaderboard with 130669-ab1f69bf code.

Note: You need to sign in to Advent of code (e.g. with GitHub / Google / Twitter / Reddit account) to see the leaderboard and participate in the contest.


🥇 1st place - $3,000 

🥈 2nd place - $2,000 

🥉 3rd place - $1,000

All winners will also get a special high-level Global Master badge.

Note: InterSystems employees are not eligible for money prizes.

Win Conditions:

1. To win our prize you should be on the top of the ObjectScript Leaderboard and upload all the solutions in a public repository on GitHub and present the code in InterSystems ObjectScript in UDL form as presented in the template below:

⬇️ The Advent of Code contest ObjectScript template

2. There should be no errors in the ObjectScript quality scanner for your project.

3. All participants have two days (December 26-27) to make your repository public. Winners will be announced on December 28.

4. All participants must be registered on the InterSystems Developer Community.


The first puzzles will unlock on December 1st at midnight EST (UTC-5).

See you then and good luck to all of you! 

Discussion (51)5
Log in or sign up to continue

I was going to play but it is difficult to get started.

Tried to get the template, downloaded git and Docker desktop, got a git account, got IRIS working through Docker - was quite impressed with that) but cannot get the template. Am getting at least 2 errors on "docker-compose build" command:

Is it possible to play without the template? Surely it's just a class in UDL format?

The day 1 problem is easy to solve. I expect most of us could do it in one line of code. But what are the rules? How does the scoring work? Is it a race? Do you need to be in the first 5 people to finish it every day? Is it judged by someone? If so, what are you looking for? If you can't get your entry in on day 1 will you be too far behind?

Going to try it on a MAC instead of Windows, maybe that will help.

Based on past years (participating as I have time between my day job and family obligations... so typically dropping off around the 15th), the ObjectScript leaderboard tends to be pretty competitive. Especially in terms of when the challenges drop - I'm not staying up until midnight or whatever it is to be in the top few.

Generally, Docker is better on a Mac than Windows, from what I hear.

Watching the daily results of our private leaderboard I did some observations:

  • the number of registered participants has grown since start from 68 to 93, 82 no surprise with the published code
  • actually, only 33 participants have collected  points and stars
  • I downloaded the actual ranking as JSON file into a local table 
  • I could identify only 17  22 names from DC that I flagged DC for our ranking
  • if I missed you pls. let me know your identity in AoC by DC mail  to add your DC flag

Date:  2021-12-27 08:53:47 UTC

Rank    DC      stars   score   name
1       1       50      4087    Kevin An
2       1       50      4026    Yuval Golan
3       1       50      4056    rcemper     disqualified by using Embedded Python
4       1       50      3798    ISC Jacques HUSER
------------------------------------------------ all completed
5       1       41      2901    Bert Sarens
6       1       36      2825    Oliver Wilms
7       1       36      2689    dspools
8       1       36      2683    Ivo ver eecke
9       1       28      2060    Tim Leavitt
10      1       22      1775    Fabian
11      1       17      1273    rhodery
12      1       18      1265    Shamus Clifford
13      1       18      1230    CrashAvery
14      1       16      1149    TylerFeldhege
15      1       15      1147    Sergei Shutov (Banksia Global)
16      1       11      764     José Roberto Pereira Junior
17      1       9       599     jackpto
18      1       6       386     NjekTt
19      1       5       307     Stuart Byrne
20      1       4       267     goran7t
21      1       2       148     David Hockenbroch
22      1       2       116     Evgeny Shvarov
------------------------------------------------ DC members
23              50      4145    Steven Reiz
24              32      2584    Navæéd Ålæm
25              28      2271    Carter Bourette
26              11      804     jonasvandervennet
27              11      768     @leeto
28              8       548     Paul Langelaan
29              6       416     alex2008alex
30              1       57      maxisimo

Instead of a daily reply, I plan just to update this reply once a day

I wrote a script to calculate what the scoreboard looks like if we only account for people using COS (using @Robert Cemper's list). That is, I used the provided JSON data to form my own sorted lists of solve times for part 1 and part 2 for each question, discluding users not present in Robert's list. Scores are then recalculated based on each user's position in the sorted lists and summed up (which should match how they are calculated by AoC).

Ah, I am using the same json inputs as you (freshly downloaded a few seconds before the script was run). The thing with only sorting the scores from the json file is that people who didn't solve in CoS shouldn't really reflect the "actual standings" for the contest. That's why the scores are so different- for example suppose the leaderboard only consists of the three users "cos_coder_1", "cos_coder_2", and "non_cos_coder". My script effectively removes the effect that "non_cos_coder" has on the leaderboard (e.g. on days where they got first, the other two users effectively get first/second).

The overall decreased scores is because this means we consider fewer participants as "active".

I see!  And I feel it is right.
Therefore I suggested using a different private leaderboard about 2 weeks ago
where you have to request the access code from Developer Community Managers.
Instead of this public published access key. It could be kind of a registration.
And with 23 actives ist's not much extra effort + no need for recalculation and filtering.

Eventually, this may happen next year.
Though technically It may still be possible this year it's just bad taste
to change rules if you dislike the results during the game.

The next challenge is that ISC employees are excluded from prizes.
which requires a further step of filtering.  Though I have this Info, I didn't apply. 

After the holidays, could we get an update on the use of embedded Python for these contests?

I always got the feel from InterSystems events like this that we are trying to push for greater product visibility to those outside the InterSystems/CoS/Mumps umbrella, and that these contests welcome new people to take part in these technologies. Please correct me if I'm incorrect in this assumption- if this is the case, the rest of this post is just nonsensical rambling.

I don't fault anyone who used it during the contest; for example, I see from scrolling up that @FabianHaupt asking for clarifications on additional rules for the code in this thread, which I guess could have been hinting at this feature (which didn't receive any public follow up). However, it makes me feel strange that this is both allowed and no announcement was made about it.

From my perspective, the first rule which says "...present the code in InterSystems ObjectScript in UDL form..." would automatically make most new contestants write in CoS only, when its more likely (from a probabilistic perspective) that they have more experience and would have done much better with Python. Obviously, the fact that embedded Python in IRIS as a feature isn't a state secret, but I still feel like new users are disadvantaged from knowing about it.

Hi @Kevin An! Embedded Python was not eligible for the contest.

It was an ObjectScript contest only as it ware stated by @Anastasia Dyubaylo 

As for the next year we don't know yet whether it makes a lot of sense to compete in Embedded Python as it looks like the sort of tasks in AoC can be solved without deep usage of DBMS or/and globals so it becomes a competition in clear python.

Any advice on how we could make Embedded Python competition within AoC and keep the sense is much appreciated.

It feels weird to me that the rules should be changed to disallow Python for this year, as that would actively cost Robert Cemper his 3rd place prize, but on this it's of course up to the organizers.

As for your second point, I think it is correct that having the IRIS wrapper around pure Python code would be a bit pointless, and it would also be strange for InterSystems to sponsor such a event. I think the main selling point of doing these problems in CoS is a flexibility of working with multidimensional arrays and the flexibility of this data structure to solve challenging and intricate problems.

@Kevin An and @Yuval Golan!

Congratulations on your victory in the contest! Could you please submit both repositories to Open Exchange?

It's a pity that's it all the code is in mac and int thus so there is no quality check available that works for CLS ObjectScript code only for now.

Also, it's difficult to run and examine the code you submitted as it needs a lot of manual steps to load it into a docker. 

It'd be great if you could add a docker environment into the repo (like in a template) and hopefully convert code to CLS ObjectScript.

It's not "the must", but it'd be very convenient to use for the community. 

Thanks, and congratulations!