[2024-07-02] ICFPC 2024

I took part in ICFPC 2024 the past weekend. This was a really nice contest that combined the best elements of the classic contests from 2006 and 2007. As usual, I had a lot of fun during the contest, but did not have any breakthrough in actually solving the problems.

The task this year was to decipher programs written in a functional programming language in order to solve problems of increasing difficulty. You begin by implementing a parser and an interpreter for this language and then use it to communicate with a web-server hosted by the organizers. You pretend to do an on-line course to learn more and more about an alien civilization by fetching documents associated with different keywords. When you solve problems, you unlock more and more of these special keywords.

I chose to solve the problems this year using Python, simply because it was easy to get started and iterate from there. Its “batteries included” standard library contains almost everything I needed to get going. I implemented a simple REPL that allowed me to decode the alien language and poke around the remote server. That said, I kept running into efficient evaluation issues in the interpreter that made it crash on certain degenerate problems. Unfortunately, I could not solve these by the end of the contest and I did not get the time to follow up after that.

An experiment I tried this time was to see if ChatGPT, Gemini, et al could help me create the basic evaluator faster, so that I could concentrate on the core problems. As has been my experience elsewhere, these LLMs spewed plausible looking solutions that actually contained some blatant and some subtle bugs. Finding and resolving these bugs took more time that the initial saving in creating the program. On the whole, the experience was a bit promising at the begining and frustrating in the end. I do not know how others find LLMs so useful for coding, since this has consistently been my experience with them so far. Maybe I am not prompting them properly.

Shortly after the contest ended, the organizers kindly shared a repository containing everything related to the contest (task-description, problems, server-implementation in Haskell, etc.). Technically, this allows you to continue to play with the problems by running your own server, tweaking things, etc.

The source-code for my attempt this year can be found on GitHub, on GitLab, and on Bitbucket. You can find links to some other write-ups here on the contest web-site. Weirdly, /r/icfpcontest was quite quiet during the contest this year. I wonder if that sub-reddit is dying out. Sad.

Other Posts from 2024