8 Days

298,791 Lines of code

3,294 Attempts to solve a problem

2,577 Problems correctly solved

1,817 People registered

776 People solving at least one problem

776 people passed the first problem and 4 brave participants reached the final optimization problem and fought each other to obtain the best score. This year, the challenges were a little easier than usual, because the 20th challenge was a NP optimization problem, and we wanted people to have some time to try to reach a high score.

There were two stoppers --problems with less solvers than the next one--, problems 11 and 15. The problems with the lowest percentage of solvers among all the people that tried to solve them were problems 14 and 15, as you can see in the graph below. All in all, it seems that problem 15 was one of the toughest.

As usual, we’ve seen a lot of languages being used to solve the problems, 25 this year. We already talked about the most popular, but there are some interesting languages being used to solve only a couple of problems. Visual Basic, Rust and Objective C were used just in one solution, there were two solutions in F# and three in Ocaml. The following graph shows the evolution of the most used languages on every challenge (excluding some non algorithmic ones).

The shortest solution has been a cryptic but well crafted shell script with just one line and 142 characters, which recalls this twitter fight we had two years ago, searching for the shortest solution to a problem. The longest one is a solution for the 9th problem with 12163 lines, including some very long libraries for number factorization.

As usual, in this following graph you have the average number of lines per solution on most used languages.

We introduced a novelty in the last challenge: we created an optimization problem and a score system. An optimization problem is a NP complete problem in which having an optimal solution is too hard and thus the objective is to find a solution as near as possible to the optimal. This means that this challenge never ended and participants could have fun until the end of the contest and compete between them for the best score. We had 4 participants that reached this last level, you can see their score evolution in the following graph:

Kudos to all of them and specially to Jakub who was the best with a score of 34972. Good work!

This solution was quite close to the best solution that, without the time constraints of the contest, we obtained with a greedy algorithm (yes, we have to admit that we had some fun ourselves with this problem ;), which has a score of 35104. Using local search we managed to get a score of 36035. We will give more details of how we got this score in a future post. In the meantime… what’s the best score you can get?