ICFP Programming Contest 2015
This is the 18th instance of the annual programming contest series
sponsored by the ACM SIGPLAN International Conference on Functional
The contest ran from Friday 7 August
2015 at 12:00 UTC to Monday 10
August 2015 at 12:00 UTC. The lightning division ended on Saturday 8
August 2015 at 12:00 UTC. The winners were announced on 1 September
2015 at ICFP 2015, and a video of the award
presentation is available. The winners were:
- First Place: Team Unagi
We officially declare that C++,
Java, C#, PHP, Ruby and Haskell are the programming tools of choice for
- Second Place: Team Natsubate!
We officially declare that
- Third Place: Team ByCode
We officially declare that
C++11 is not too shabby!
- Lightning Division: Team Frictionless Bananas
officially declare that C++ is very suitable for rapid
- Judge's Prize: Team WILD BASHKORT MAGES
declare that the WILD BASHKORT MAGES are an extremely cool bunch of
These are the leaderboards for the qualifying and final rounds of
both the full contest and the lightning division:
In addition to the contest information available below, all
contest-related artifacts except for contestant submissions and the
actual judging runs are now available on GitHub. Follow
Twitter for contest updates (also
embedded below). Informational tidbits and any necessary rule
clarifications will appear on Twitter and be posted below. Email email@example.com
(or tweet to @ICFPContest2015, for
public disclosure) if you have questions, comments, or exhortations.
During the contest, many contest organizers monitored the
#icfp-contest channel on
their nicks are
ICFP contest participants retain ownership of all intellectual property
rights in and to any submitted solutions, custom tools, and related
materials ("Submissions") that participants had before submission. As a
condition of entry, participants grant Galois, Inc. a non-exclusive,
perpetual, irrevocable, worldwide, royalty-free license to use,
reproduce, publish, distribute, publicly perform and publicly display the
Submissions for the purposes of allowing Galois, Inc. and other ICFP
judges to test and evaluate the Submissions for purposes of the contest.
Tidbits and Clarifications
- (2015-08-10 12:15 UTC) The qualification round has ended, and the
final qualification scoreboard has been posted. There were nearly 1.25
million solutions submitted by over 300 teams, with nearly 800
participants overall. Further information about the final round, the
contest organization/infrastructure, and the fate of the universe will
be forthcoming over the weeks leading to the announcement of the
winners at ICFP 2015. Thanks to all recruits for your participation,
enthusiasm, and dedication!
- (2015-08-10 07:45 UTC) ALERT: At this point, over 1.15
million solutions have been submitted by over 300 teams. Our
preliminary analysis of the discovered davar indicates that Stross was
mistaken; they will delay the inevitable
scenario by 63 months.
- (2015-08-09 11:00 UTC) ALERT: A bug that caused the
leaderboard to sometimes report unexpectedly high
scores—possibly related to including two solutions for a
single problem and seed in a single submission—has been
fixed. Rankings have been adjusted.
- (2015-08-09 11:00 UTC) The formless spawn have transformed one
of the undiscovered words of power, reshaping it in the image of
- (2015-08-08 23:00 UTC) A sample command sequence for problem 6,
seed 0 can be found
in problem6-seed0.txt. This
sequence has 1,180 commands (which is why we have not posted it
directly on this page). It results in a score of 3,261, does not
cause an error, and does not contain any phrases of
power. Video for this
command sequence is available as well.
- (2015-08-08 22:05 UTC) ALERT: It has come to our
attention that participants have submitted many solutions using seeds
that were not provided by AS2H2. Unfortunately, this has caused
elements of the scoring system evaluating those solutions to be
swallowed by the gibbering darkness. We are taking actions to mitigate
this issue by filtering out such unsafe solutions. We hope to have the
leaderboard back online soon. In the meantime, be aware that
repeatedly submitting solutions with unapproved seeds may lead to...
consequences. For you, and anyone within a 10-mile radius.
- (2015-08-08 21:30 UTC) ALERT: The leaderboard is down
temporarily as we make adjustments to improve the performance of
evaluation of submissions. We are nearing 300 teams and 200K
- (2015-08-08 17:45 UTC) RULES CLARIFICATION: Power
phrases must be pronounced precisely, and in their original
tongue---not in isomorphism thereof. Agents may notice subtle
shifts in their mana.
- (2015-08-08 12:00 UTC) ALERT: It has come to
the attention of
that there is considerable risk of an unintentional summoning event in
Vancouver in early September. Because Vancouver borders their domain,
they have invoked the Benthic treaty and demanded extra precautions.
Thus, we have added problem 24 to the
- (2015-08-07 23:30 UTC) RULES CLARIFICATION: Sequences of commands
that do not result in one of the three game-ending conditions described in the
specification are allowed. They are scored in exactly the same way as other
- (2015-08-07 23:00 UTC) A sample play for board 6, seed 0 is
rendered at the Galois Vimeo
(2015-08-08 17:00 UTC) Note that, due to bug
fixes in the evaluation server, the command sequence earlier
provided is no longer valid for this animation.
- (2015-08-07 21:00 UTC) The unpredictability of the eldritch
forces involved makes it impossible for us to provide precise
information on time and memory resource availability during the time
of final judgement. However, we can guarantee that sufficient
resources will be available to accommodate the overhead of any
earthly programming language or runtime system.
- (2015-08-07 21:00 UTC) We have added an optional flag,
to the command line parameters. If supplied, it indicates how many processor
cores are available. Teams may wish to use this when implementing parallel
- (2015-08-07 21:00 UTC) RULES CLARIFICATION: Despite a tweet
earlier in the day implying that board sizes are bounded by the size of the
largest currently-posted problem, there is no fixed constraint on board sizes.
There is also no fixed constraint on unit sizes.
- (2015-08-07 21:00 UTC) RULES CLARIFICATION: When
determining whether all members and the pivot have been moved "to
locations that they have previously occupied", all members are treated
identically. For example, rotating the unit shown on the specification
page 3 times in place constitutes an error.
- (2015-08-07 21:00 UTC) RULES CLARIFICATION: Each occurrence of
a phrase of power—even if that occurrence overlaps with another occurrence of
the same phrase of power—is counted. For example, if "cthulhu cthulhu" is
a phrase of power, then the sequence of commands "cthulhu cthulhu cthulhu" contains
- (2015-08-07 17:15 UTC) SCORING CLARIFICATION: Be mindful of
the fact that scores on a problem leaderboard are averages of
the scores across all seeds for the problem, and seeds for which no solution
is submitted score 0 points.
- (2015-08-07 17:15 UTC) RULES CLARIFICATION: The question
of what happens after death is one of the ancient mysteries, to which
mankind has never found a definitive answer. However, for the purposes
of this competition, programs that are killed for violating resource
limits will earn scores of 0 for their runs. The judges may, at their
discretion, extend resource limits during the judging process;
especially promising programs that are terminated before reaching
their full potential may be reincarnated with more resources.
- (2015-08-07 17:15 UTC) SPEC CLARIFICATION: The command
line parameter "-p" is a phrase of power, as a string. Your program
should not strip quotation marks from it. Your shell may require you
to add quotation marks to it, or escape parts of it, when invoking
- (2015-08-07 15:30 UTC) RULES CLARIFICATION: The sequence
of random numbers to be used for unit selection is computed from all
generator states, including the seed. This is why the example
starts with 0.
- (2015-08-07 15:15 UTC) AS2H2 have created "Galois Live Test Team" for
internal assessment purposes. Its results will not be counted in the final standings.
- (2015-08-07 15:15 UTC) It seems that our scoring system was not properly tuned
for the primal powers unleashed by certain submissions. We have made appropriate
adjustments, and scores for all submissions have been recalculated.
- (2015-08-07 15:15 UTC) RULES CLARIFICATION: A sequence of
commands that continues after the game ends (the last piece has been
played, or the starting position of the next piece would be invalid)
is an error, and results in a score of 0 points.
- (2015-08-07 15:15 UTC) If you receive an error that "Only GET or HEAD is supported"
from the submission server, this likely means that your JSON is malformed. Check your
capitalization and formatting carefully. While the fundamental forces of the universe
are unperturbed by these minor issues, our (maintained by mere mortals)
submission system is very sensitive to such.
- (2015-08-07 13:00 UTC) If a submitted program requires a platform other than
Linux, we will obtain and use it. We have a
wide array of systems at our disposal, including those of Microsoft and
Apple. However, Linux-based submissions will be faster for us to evaluate, so we can
take less time away from our world-protecting duties.