This year, 650 people passed the first problem, and four of them solved all the problems correctly. This is the second time in a row that we had 15 challenges instead of the usual 20, but we made them a little bit easier this year, since during the last edition nobody managed to solve the last problem in time.
There was only one “stopper” (problem with less solves than the next one) this time: problem 7, in which consisted in downloading a Game Boy ROM, extracting the base64-encoded string it contained, decoding it, reversing the word order and then executing it with a Pikalang parser. The steps weren’t straightforward, so many people skipped the problem after running out of ideas.
The second problem required the usage of 128-bit or arbitrary-precision integers. A lot of participants may have not known about them, and so it has the highest amount of users who either stopped at the test phase or skipped the problem.
Problem 11 had the highest ratio of wrong answers (and almost the same amount as problems 4 or 5!). It was solvable by transforming the venue into a graph and finding the minimum vertex cover. Almost all the participants who tried other methods ended up submitting a wrong answer.
A total of 31 languages were used this year to solve the problems. You can clearly see that C++ and Python dominate most of the problems, although C++’s ratio is very small in problems 2 and 8, which were normally solved using arbitrary-precision integers (and Python natively includes this functionality!).
As for the less common languages, bc and Picat were only used for one solution. PARI/GP appeared three times: one solution was fully written in it, while the other two solutions were a mix of Perl and GP (they were both Perl scripts which generated GP code, which outputted the correct solution).
The strangest we’ve seen is an iOS application which outputted the solution through the debugging log. You can also see the most used languages per challenge in the following graph (excluding challenges 7 and 12, in which people normally just uploaded plain-text instructions for finding the solution):
Lines of code
The shortest code this year goes to a 103 bytes long bash script which executes an AWK program. The largest, however, is a 1214 lines long Swift solution for problem 2 which included code for the BigInt class. Looking at the average lines of code figures of the most popular languages, Python wins another edition with only 57 lines per solution, one line better than last year!
Writeups and solutions
We have compiled some solutions and writeups made by participants that you may find interesting. We hope you like them.
- @daniel_swdev: https://fahrenheitfreiheit.wordpress.com/2018/05/05/tuenti-challenge-8/
- @FlavioCorpa: https://github.com/kutyel/TuentiChallenge8
- @furstenheim: https://github.com/furstenheim/tuenti-challenge-8
- @ivancea96: https://github.com/ivancea/TuentiChallenge8
- @joseotoro: http://blog.joseotoro.com/blog/programming-contest/python/tuenti-challenge-8/ and https://github.com/joseotoro/TuentiChallenge8
- @Landertxu0: http://simulaciones.es/blog/tuenti-challenge-8/