Skip to content


What are the username and password for the Debian testing image?


When the robot moves through earth (“.”), does he replace it with empty (” “)?

Yes – as explained at the end of section 2.2 in the spec, after a successful move, the grid location (x, y) becomes Empty.

Can you give some examples of rocks falling?

In the following situation, if the robot moves left, it will be squashed by the falling rock, because it has moved into a location below a rock which has just fallen:

#*. #
# ..#
# R #

In the following situation, if the robot moves left, it is safe, because robot movement happens before map update, and there is no empty space for the rock to fall into.

#*. #
# R #

In the following sitation, if the robot waits, it is safe, because even though there is a rock on top of a rock which would otherwise fall into an empty square, the square it would fall into is occupied by the robot.

#   #
# * #

If the Robot is underneath a Rock, and moves down, it will be squashed. There is no way to outrun a Rock. For example, if the Robot moves down here, it will be squashed by a falling rock:

#*  #
#R  #

What happens if a beard grows and a rock falls into the same cell during an update?

Update works across the cells from left to right, bottom to top, on the old state, so the effect caused by the higher, rightmost update will take precedence.

What happens if the Robot walks off the edge of the map?

All of our test maps are surrounded by Walls or Lambda Lifts, so this should be impossible. However, there is an implicit wall around the edge so if a Robot attempts to go off the edge of a map, it will execute a Wait instead.

Is it possible to have a negative score?

Yes. The score starts at zero, so after the Robot’s first move, unless it collects a Lambda, its score will move to -1.

How big can the maps get?

We’ve left this unspecified – try to cope with as large a map as you can within the constraints of 1Gb. We have some test maps of 1000×1000, but we may make bigger ones…

How accurate is the web validator?

The web validator uses the same code to validate routes as the scoring system which will be used to judge the contest.

Does waiting (W) cost you a point? What about aborting (A)?

Waiting does cost a point. Trying to move into an immovable object (e.g. moving left when a wall is on your immediate left) will cost you 1 point as well (the same as waiting or moving, but no extra for having a failed move).

Aborting does not cost anything at all, regardless of whether you explicitly abort, or your commands finish without the robot getting to the open lift.

So abort (A) isn’t really needed?

Indeed not – Instead you could just stop giving out commands after when you would have sent an Abort.

What happens if a Robot goes up just as the water level rises?

If this happens, it is as if the robot left the water, then re-entered the water.

Can a robot step on a target?

Targets and trampolines act exactly like walls, except that a robot can step on a trampoline and be transported to a target. So, no, a robot can not step on a target.

How do I use sudo in my install script without a password?

We will turn off the password for sudo before processing submissions.  You can do this in your own VM by running the ‘sudo visudo’ command and changing the line for the sudo group to


Then Ctrl+O and Return to save it, and Ctrl+X to exit.

What’s the easiest way to copy files to a VirtualBox VM?

Use the ‘shared folders’ feature of VirtualBox.  You can add a shared folder from the Shared Folders option in the Devices menu, and mount it on the virtual machine using

sudo mount -t vboxsf <shared folder name> -o uid=1000 /mnt

which will make the shared folder appear in the /mnt directory.

How can I use F# in the VM?

Now that the contest is well underway we’ve had a chance to play with F# on the judging VM. Having passed the rigorous test of printing “Hello, world!” we’ve decided to share a version of the VM with F# preinstalled in it (1.3GB).

Can I use a package from Debian experimental (e.g. pypy)?

As packages in experimental might change quite quickly, we think it would be best if you included a copy of the packages in your submission (i.e., the .deb files for pypy, pypy-lib, etc) and add an “install” script (something like “sudo dpkg -i pypy*.deb” should work).

  1. Vsevolod Oparin permalink

    Can team take a part in both divisions (lighting and full) ?

  2. tnordloh permalink

    will the score go negative at the beginning of the game when you make your first move, or is 0 the lowest possible score?

  3. Igor permalink

    Given the situation:

    # * #
    # R #
    # # # #
    # # # # #

    If the robot moved down, would it be squashed?
    Based on the common sense, the answer should be “no”, because both of them are travelling one cell per turn, so the rock shouldn’t catch up with the Robot.
    But according to the contest rules, the answer is “yes, the Robot will be squashed right away”.
    Is this correct? There’s no way to outrun a rock?

    • Igor permalink

      Something went wrong with multiple spaces… There’s an empty space directly below the Robot, and then a side tunnel so that it can escape sideways.

    • There is no way to outrun a rock. If there is a rock above the robot and the robot goes down, then it is squashed.

    • tnordloh permalink

      the rocks update left to right bottom to top. I think this means that, as long as you keep going down, you stay one step ahead of the rock.

  4. does robot can be killed after abort ?

    • After ‘abort’ no more points can be gained or lost, so no, the robot cannot be killed.

      • Maxim Manuylov permalink

        But according to spec (2.4) “losing” is checked before “abort”, so I’d say robot can be killed after abort (but only in the same turn, of course).

  5. Chris King permalink

    Is there a maximum map size?

    • George Bullis permalink

      from irc channel 1000×1000 would be an upper limit for the map

  6. Chris King permalink

    OK thanks!

  7. Igor permalink

    1. “There can be only one” (c) Robot. But what about the Lifts?
    2. Can a mine be exhausted (no lambdas at all)? When will the Lift open then?

    • 1. There will be exactly one Closed Lambda Lift. I’ve updated the pdf spec accordingly to make this clear.
      2. There could be no Lambdas. The Lift opens when there are no Lambdas, so it would open on the first update in this case.

  8. Joel Croteau permalink

    Will there be any indication provided to the program as to when the map input has ended?

  9. imil42 permalink

    What happens in this situation: two rocks above empty space?
    # #

    The task description says “During map update, all reads are from the old state, and all writes are to the new state”, so I assume that the lower rock will fall, but the one on top will remain steady until next turn:
    # #

    Am I right, or will both rocks fall simultaneously?

    • icfppc2012 permalink

      That is indeed correct – only the bottom rock falls

  10. is there any way to validate submitted zip ?

  11. Igor permalink

    There is no death penalty for pushing a falling rock, right? For example, if a rock is in a free fall, and at some point the Robot happens to be one cell left of this rock, can the robot move right? The outcome would be shifting the rock fall trajectory one cell to the right, correct?

  12. naoki permalink

    From 3.1
    > We will also impose a limit on the length of routes we validate. For a n  m map, we will take at
    most the first n  m steps in the generated route.

    However, on (6 x 6 map) with the cgi validator, we get score -42 for an input UDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUDUD
    It seems that the cgi validator takes more than 6 x 6 steps.
    What’s wrong with it?

  13. Ben permalink

    from section 2.5 is this map just going to be piped to our program? or entered by hand? can you possible give a video showing a program being feed the map?

    • Ben permalink

      or is it strictly a load file operation? either as a command line perimeter or even brows file if in gnome?

      • Ariel D. Moya Sequeira permalink

        Your program should read the map through standard input. Most likely, the maps are going to be piped to our programs.

        Using one of the test maps, one way of doing this is: > ./myprogram

        The output should be written to standard output.

  14. Denis Yakunin permalink

    Hello and thank you for contest!

    What score I will get in these 4 cases?
    – I have negative/positive score and Robot died
    – I have negative/positive score and Time or Moves limit exeeded

    Is it better for me to die or get Time limit if I may achieve only negative score?

  15. Can we assume that the initial map is “stable” – that is, if the robot waits, no rocks will move? Or could we end up on a map where rocks are above air as their initial position?

    • Igor permalink

      Map may be unstable. Take a close look at the sample “Map 8”. There’s an unstable rock, and you are supposed to deal with it really fast.

  16. Will dependencies of packages listed in our PACKAGES file be automatically installed, or do we need to mention them each independently?

  17. Fedor Yakovlev permalink

    Web Validator seems to have 300 turns limit for the robot on all test maps. Task PDF states that turn limit will be depending on map size. Will it be accurate, or do we have to state that 300 turns is al on map size of 1000×1000, which could appear on check, as stated in this FAQ?

    • The validator on the web has a limit simply to keep the load on the server down. The validator we actually use will follow the n*m limit given in the spec.

  18. Niklas Een permalink

    If you do not perform an Abort as your last move, the spec. states that you will receive 25 points per lambda, but the validator gives 50. This matter if in your last move (given a limited number of moves) has the option of getting one more lambda. The validator seem to implicitly put an abort after the last move.

    Also, the Abort command doesn’t count as a “move”, but the Wait command seems to do so (neither of them moves the robot, both of them are listed under “Robot Movement” so this is an unexpected interpretation).

    • It’s 50 because you get 25 for the lambda, and 25 bonus for the abort (which basically means you don’t lose points for being squashed)…

  19. Niklas Een permalink

    My point was that you still get 50 without issuing the abort, which is not in accordance with the spec.

  20. Question about ./lifter program.
    Did I understand correctly steps on test server:
    1. ./lifter is executed with initial map
    2. ./lifter should return full path not longer then 160 seconds.

    Or ./lifter should output single move per each set of input map?

  21. Is it possible to mine lambda “on the last breath” ?
    For example. Map is:


    Water is 2 and Waterproof is 0. So can i mine lambda and then die or i will die immediatelly ?

  22. A question about flooding addon.
    What is meant by consecutive steps?
    If robot left water by moving up and water level increased in the same step, do we start new sequence of underwater steps or continue previous one?

    • In that case the robot is underwater in both steps, so you should keep counting.

      (UPDATE: Sorry, this is wrong. What is stated in the FAQ is correct.)

      • Guest permalink

        But the FAQ states:

        > What happens if a Robot goes up just as the water level rises?

        > If this happens, it is as if the robot left the water, then re-entered the water.

        Which one is correct?

      • The FAQ is correct. I’ve edited my comment, sorry for the confusion.

  23. Joel Klein permalink

    Once we submit a .tgz file, can we update the file on Google Docs/Drive and assume you’ll only use the most recent one?

    • Yes, you can update and we will use the most recent one within the deadline.

  24. Another question on flooding.
    As a result of the flooding when “it becomes inoperative and mining ends,” how is the score?
    Is it a destroy, or abort?

  25. Maxim Manuylov permalink

    Can you please clarify the phrase “1 point lost for every move made”? What is “move” here: a command received by robot or an actual move? I mean if robot received a command “D”, but there is a wall under him (so he actually just waits), does he lose a point in this case? And what about “wait” and “abort” – are they treated as “moves”?

    • icfppc2012 permalink

      Left, Right, Up, Down and Wait will all decrease your score by 1.

      If you’re against a wall and move towards it, the move becomes a wait, and will decrease your score.

      Abort ends the game immediately, with no decrease to the score for making the move.

  26. This doesn’t make any sense.. In the first example of rocks falling, it says the robot will be squashed for moving left.. Why? The rock has two spaces to fall in order to hit the robot, and, according to the spec, “…this means a Rock will only fall one space per update.”

    • Jan permalink

      The rock is considered hitting the bot when he reaches the space right above the bot, not the space containing the bot. As in the spec: if the Robot is at location (x; y) and location (x; y + 1) contains a Rock which was placed at that location in the most recent map update, then the Robot is destroyed.

  27. ForNeVeR permalink

    Spec says that the “registration number” for submission have to be obtained from EventBrite. But where is that number? I cannot find it in the web interface.

    • Jan permalink

      I got an mail with subject “Order Confirmation for ICFP 2012 Programming Contest”, containing an order number, which looks like 37xxxxxxxx-95xxxxxxx. The 95xxxxxx part is the registration number, afaik.

      • ForNeVeR permalink

        Oh, really. Just found this in my mailbox. Thanks.

  28. How can I submit my original maps?

    • You can include them as part of your submission. I’d suggest in a directory called ‘maps’ with your README mentioning it.

  29. val permalink

    What wil be in the next situation (_ – Empty):

    And robot goes Right?
    My vision is next:


    Am I right?

  30. val permalink

    Can you explain map updating 2.3:
    “After Robot movement, the map is updated at each cell…”
    “During map update, all reads are from the old state, and all writes are to the new state.”
    What is the old state? Is it after robot move?

    • Yes, robot movement updates the map, then the map update phase updates the map.

  31. val permalink

    End next situatuins:
    1) robot is under the water at the begining of game and Waterproof = 0. The game is over? Or he can do 1 turn?
    2) robot is not in water, waterproof = 0. And it goes into the water on the cell with Open Lift. Does It win?

  32. Fedor Yakovlev permalink

    Is is right that test maps Trampoline2 and Trampoline4 are identical? Not that it really matters, just a little strange…

  33. How do trampolines affect rocks? Do rocks just sit on top of them, or do they get moved to the target by the trampoline?

  34. val permalink

    Can robot step on Target? If Yes, what would be with it’s trampolines?

    • The only way to get to a target is by stepping on a trampoline – otherwise it just acts like a Wall.

  35. Igor permalink

    trampoline1 input DLLLLLURRR
    Why 290?
    I can count something around 140-150… But 290? How?

    • There is an implicit abort at the end, so it’s giving 25 bonus points per collected lambda.

  36. Tapani permalink

    1. The specification does not say that razors are consumed by shaving. Is this true?

    2. Does shaving occur in ‘robot phase’ or in ‘update phase’. Does shaving cause a rock on top of beard to fall immediately or in the next update phase?

    • Razors are consumed by shaving (this is what we mean by there being a limited number). It occurs on the robot phase. Any updates caused by beards being removed will happen in the next update phase.

  37. Tapani permalink

    3. What happens if there is a collision between beard and rock? I mean both check for an empty space in the current state (according to spec) and an update affects the next state. This way both rock and beard could end up on the same square.

    Please clarify.

    • val permalink

      I’m testing this on beard3 and saw, that beard “smashes” the rock at this situations.
      Try “DDRRRRRRRRRRRRURRRWR” and you see, that one rock will disappear.

    • Update happens bottom to top, left to right, reading from the old state. So whichever happens latest.

  38. UCS permalink

    Are there same trampolines in a map? like…

    Trampoline A Targets 1

  39. val permalink

    Why rock is disapear when robot moves it to the BEARD and BEARD is growing – like result the cell with rock is EMPTY (without BEARD or ROCK)?

    Example: beard3:
    and then run the same with R: DDRRRRRRRRRRRRURRRRLLULLDWWWWR

  40. Jan permalink

    Is there a time limit for the install file execution?

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: