# Robot Unlock

• Currently 4.4/5
• 1
• 2
• 3
• 4
• 5

Robot Unlock is a puzzle game by Madflame Software in which you're challenged to program a robot to perform certain tasks. What sort of tasks, you ask? Is it vacuuming the carpet starting along the outside walls and working in toward the center? Is it making breakfast sandwiches and wrapping them in foil for you and your co-workers to nosh on during the day? Is it riding a unicycle through a world of perilous flashing neon blocks? Nope, it's a much simpler, more worthy task. MATHS. Write that down in your copy book now.

In each level of Robot Unlock, your goal is to program a path for your Executor robot to travel around a series of command tiles that alter the robot's stored memory. Your memory consists of four slots, each of which hold a number. In some levels your starting digits are randomly generated, while in others the numbers are constants, but your goal always remains the same; change the input (Initial Code) in your memory to match the output (Required Code) on the right. As instructed by Ted, your friendly robot guide, the Required Code has to match a certain set of criteria based on the Initial Code, such as swapping the numbers in the first two memory slots or comparing the input values and moving the third-largest to slot 1.

Your instruments through this journey are a range of mathematical stepping stones which can be placed along the Executor's path, as well as two indicators to mark your position in the memory, colored dark green and light green. You can move the memory pointers left and right using the double-arrow tiles, then perform mathematical equations that compare the numbers held by the pointers, with the output replacing the number in one of your slots. It would take a long time to discuss every possible operation, but know that you can perform the four basic operation (add, subtract, multiply, divide), force the robot to take a detour if one number is greater than another, and other functions.

Once you think you know how to program your speedy robot, use the toolbars at the top to select the tiles to drop down below. You have three palettes to choose from, including one that features commands relating to the dark green memory pointer, one for the light green pointer, and a blue tileset that corresponds to the movements of the Executor itself. Click on a tile to use, then click on the grid to plop it down there. When everything's in place, hit the play button and watch as your robot works it's magical mathematical mojo. Your bot will follow the tiles you've set until it falls into "the abyss" surrounding the play area. If your memory matches the required output, you'll unlock a new level for fiddling about in.

Analysis: Robot Unlock taps into a very basic concept employed by what is essentially its chemistry-based predecessor, SpaceChem. Each level challenges you to solve a complicated problem using only the resources and space provided. As I was playing through this game, I found myself frequently longing for a way to change higher numbers into 1s and 0s quickly, without repeatedly ticking down one digit at a time until the target is reached. There's not a false sense of difficulty that comes from the lack of available tools, but a pleasurable challenge of simplicity that hits you in the forehead when you realize how quick and easy the task is (for example, dividing a number by itself gives you a 1, subtracting a number from itself gives you 0).

That said, finding those solutions can still be a tricky mess. Determining the plan of action is often times the hardest part of each puzzle, given how few resources you have to work with. One factor that greatly contributes to the difficulty is the randomness of the input numbers given. Very much unlike SpaceChem, where the inputs are constants (or are limited to three possibilities), any integer (with a limit of +/-100ish) is fair game. You can't just program a path that works for one set of numbers that you think might pop up, you've got to program a path that works for every set of numbers.

Along this same vein, there's a pseudo-bug worth mentioning. Since the numbers are randomly generated, it's entirely possible that a set of numbers will satisfy the output conditions, without a single tile laid down. In the early levels, this is overlooked and treated as a valid solution. As far as introducing people to concepts goes, this isn't the greatest way to start off the game, since you can bypass levels in which you familiarize yourself with critical strategies. However, this is corrected in later levels with the requirement that your program must function three consecutive times in order to pass. It's a good save, but it really would be worth considering for use earlier in the game.

Unfortunately, this game's interface is a bit crude, which can lead to some confusion if you're not careful. One problem is that while selecting tiles, there's no way to tell what tile in the palette you've selected, such as highlighting your choice or a separate indicator. Also, Ted's instructions, though helpful, can linger on the screen a bit too long with no way of working around them or clearing them without waiting a short period of time. They're minor presentation quibbles, but they can become grating after a while.

Still, Robot Unlock packs some difficult challenges into a fun atmosphere. Just like other programming games, you might spend more time working outside of the game to produce an answer, but seeing your analysis pay off in the end (with, well, pixely fireworks) is worth it, just to know you trounced the troublesome task. If you're looking for a number-crunching challenge that emphasizes how you crunch rather than the numbers themselves, Robot Unlock is here to satisfy your need. And who knows, maybe it does help with the vacuuming.

Windows:

Mac OS X:
Not available.
Try Boot Camp or Parallels or CrossOver Games.

### Walkthrough Guide

(Please allow page to fully load for spoiler tags to be functional.)

Okay, here's my shot at a walkthrough for the first 18 levels. (I haven't gotten any further yet, and it's way too late to keep playing.)

For each level, I've written a description of what you need to do, then, nested in additional spoiler tags, I have some hints as to how you can do it (usually just 1, but a few levels have additonal levels), and finally a spoiler tag hiding my own solution which you can copy into the program. It's all nested so you can't accidentally get to the solution without going through the hints.

Note that I've sometimes applied a little trickery which may make my particular solutions seem slightly less straight-forward than they could be. If you are having trouble following the logic, try slowing the robot down with the down arrow key and take one step at a time.

For all levels, I've done my best to ensure the output follows the actual rules exactly, but as with any kind of programming, there may be bugs. :)

Note that the game is rather picky about the copied solutions - you have to be careful that no hidden line breaks snuck in while you copy them. Paste into a text editor first (e.g. Notepad) so you can make sure you copy the right thing.

Level 1

Go from 0 0 0 0 to 1 1 1 1.

Use ++ to increment the current cell and >> to switch cells.

01"%-#%/\$%-%%/&%-'%/(%-

Level 2

Go from 0 0 0 0 to 1 2 3 4.

You can use the increment function for every thing, but you can save a little space by using the + operation to add cell values.

02&%-'%/(%-)%-*%<+%/,%5-%-.%&.&/.'5.(5

Level 3

Go from 0 0 0 0 to 2 2 2 2.

You can use the # operation to jump to the second half of the playing field, but the first half is enough space to solve the puzzle.

03&\$&&%-&&''\$/'%-'&-(\$5(%/(&/)\$%)%\$)&5

Level 4

Calculate 2 + 3 * (7 - 5) and store the result in First.

Remember the order of operations: first parentheses, then multiplication, then addition. The correct result is therefore 8.

If you're really desperate, you can cheat - the game doesn't check how you reached a result, so you can just add First to itself 2 times (2 + 2 = 4, 4 + 4 = 8).

04\$%/%%/&%='%6(%<)%<*%7+%=,%B

Level 5

Swap First and Second.

You may use Third and Fourth as you wish, so start by copying First to Third.

05\$%<%%<&%B'%6(%/)%<*%B+%6,%0-%5.%//%=0%5

Level 6

Like Level 1, but the starting values are random.

You have to subtract each cell from itself - this will get the cell to 0, at which point you can increment and move on to the next cell.

06\$%6%%-&%/'%<(%C)%:*%<+%/,%6-%-.%//%<0%&0&C0':

Level 7

Let First be the remainder of dividing Second by Third (that is, First = Second modulo Third).

The cells only store integers - if a division yields a fractional part, it is discarded, e.g. 11 / 10 = 1. In programming, this kind of division is called integer division.

Due to this integer division, A / B * B = A - (A modulo B).

07\$%<%%5&%<'%8(%7)%=*%6+%*

Level 8

Copy First to Second, Third and Fourth.

Instead of moving back to First to make the copy, you can move to the last copied value instead - that is, you copy First to Second, then Second to Third, and finally Third to Fourth.

08\$%/%%<&%C'%=(%5)%/)&5*%<*&=+%<+&C,%C,&<-%=-&<.%5.&//%&/&%

Level 9

Set First to 1 if all values are the same, otherwise to 0.

This is where the colored directional arrows come into play. They compare whether the value at their color pointer is greater than the value at the other pointer, and are activated if this is the case.

If light > dark, then a light arrow will be followed. If light < dark, then a dark arrow will be followed. What then happens when light = dark?

09"\$/#\$3#%0#&6\$\$@\$%0\$&6%\$/&\$3&%0&&0&'6'\$@'%0'&0''6(\$/)\$3)%/)&6*\$@*%/*&6+\$/,\$6-\$-

Level 10

Calculate the maximum value of First and Second, and of Third and Fourth; then take the smaller value of these two and put it in First.

The simplest way to do this is to set First = max(First, Second) and Third = max(Third, Fourth). Then, set First = min(First, Third).

10"%/#!'#"/##C#\$0#%1\$!&\$"B\$%'%%<&%<'%<(%/)!')"0)#6)\$/)%1*!&*"B*%'+!&+"B+%/,%/-!'-"=-#C-\$<-%1.!5

Level 11

Reverse the order of the cells.

What you want to do is to swap First and Fourth, and Second and Third.

There's a trick you can do to swap two different values using only addition and subtraction - simply perform the following operations: A = A + B, B = A - B, A = A - B. You can only assign to the first operand, however, so you'll have to rewrite it a bit...

One way to rewrite this is as B = B + A, A = A - B, B = B + A, A = -A.

11"%=#%B\$%6%%B&%*'%/(%=)%B*%6+%B,%*

Level 12

Go from 0 0 0 0 to 1 10 100 1000.

Start by getting 10 in Second.

12"%-#%-\$%<%%B&%D'%D(%B)%.*%/+%/,%5-%7.%//%50%71%7

Level 13

Add Second to First, but without the arithmetic operators.

This is where it gets a bit tricky. You have to construct a loop which increments First until all of Second has been added. That means you'll also have to decrement Second every time, and stop when it hits 0.

13"%0#%0\$%-%%<&%''%3(%/)%/*%-+%/,%/-%;.%32%%

Level 14

(NOTE: Game description is incorrect here.)

Calculate a Boolean expression: First = Second OR NOT (Third AND Fourth). (Don't know what that means? Read up on Boolean algebra on Wikipedia.) 0 represents False, and 1 represents True.

All four cells start with random values, so it's a good idea to start by resetting First to 0.

If Second is 1, you can use a principle called short-circuiting: the result will be 1 regardless of Third and Fourth, so you don't have to check those at all in that case.

14"%6#%<\$%@\$&-%%<&%@&&<&'A&(-'%-''&

Level 15

(NOTE: Game description is incorrect here.)

Go from 0 0 0 0 to 32 64 128 256.

Once you get First to 32, every other cell can be filled in correctly with 2 additions.

15"%-#%-\$%7%%7&%5'%<(%B)%B*%<+%/,%B-%B.%</%/0%B1%B

Level 16

Copy Second to First, but without the arithmetic operators.

Clearly, you have to set up a loop. This time, keep incrementing First as long as Second > First.

16)\$A)%<)&\$*\$-+\$?

Level 17

(NOTE: Game description is incorrect here.)

Go from 0 0 0 0 to 10 20 30 40, but without the arithmetic operators.

There's enough room to lay out 100 increment operations and path the robot around it. I don't know of any better solution for this one.

17"!'"%\$#&&#''\$"&\$#'\$\$&\$%'\$&/\$(&\$)'%!-%"-%#-%\$-%%-%&-%'-%(-%)-%*-&!-&"-&#-&\$-&%-&&-&'-&(-&)-&*-'!-'"-'#-'\$-'%-'&-''-'(-')-'*-(!-("-(#-(\$-(%-(&-('-((-()-(*-)!-)"-)#-)\$-)%-)&-)'-)(-))-)*-*!-*"-*#-*\$-*%-*&-*'-*(-*)-**-+!-+"-+#-+\$-+%-+&-+'-+(-+)-+*-,!-,"-,#-,\$-,%-,&-,'-,(-,)-,*--!--"--#--\$--%--&--'--(--)--*-.!-."-.#-.\$-.%-.&-.'-.(-.)-.*-/!//#//%&/&%/'&/(%/)&/*%0!&0"%0#&0\$%

Level 18

Swap First and Second, but without the arithmetic operators.

Store one value in Third, then gradually increment or decrement First and Second.

18"%<#%<\$"'\$#3\$\$:\$%1\$&'%"&%%'%&\$&%='"''#@'\$-'%>'&'("'(#3(\$.(%1(&')"&)%')&\$*%/+%/,#3,\$:,%1-#@-\$;-%>

Here's levels 19 to 27.

Level 19

Find the expected number.

You have to continually increment First until it matches the target number. To check if you have the right number, move over a plate with a dot on it - if the value is correct, the robot stops and you complete the puzzle.

You'll have to use jumps to create the loop.

19(&&('!((')&-*\$'*%!*',*(\$+\$-+&,,\$&,%!,&%

Level 20

(NOTE: The description given is incorrect.)

Set First = Second / 3 and Second = Second modulo 3.

As long as Second is greater than or equal to 3, remove 3 from Second and add 1 to First.

20"%0#%<\$%-%%-'!&'"/'#-'\$0'%'(!%(";(#;(\$;(%>

Level 21

If Second, Third and Fourth are all divisible by 3, set First to 1, otherwise set First to 0.

This is a bit like Level 20, except you're not actually storing the integer part of the division.

First always starts as 0.

For each cell, keep subtracting 3 as long as it's greater than 0. If you ever get a value smaller than 0, that cell was not divisible by 3.

21"%<#"&##;#%'\$"%\$#;\$\$;\$%>%%1&%<'"&'#;'%'("%(#;(\$;(%>)%1*%<+"&+#;+%',"%,#;,\$;,%>-%1.%-

Level 22

Check if all values are 1 and store the result in First.

Any one of the values may be incorrect, but only a single one.

22"%<##C#\$=#%>\$#C\$\$=\$%1%%<&"C&#=&\$=&%>'"C'#='\$='%1(%<)#C)\$<)%>*#C*\$<*%1

Level 23

A random multiple of 5 will be picked. Find it.

This is almost exactly like Level 19, except the number is always a multiple of 5.

23%%&%''&'!''-('-)'-*'-+'-,'!-'%

Level 24

Determine if the 4-digit number in Second is a palindrome. (Note: I've had 10000 come up during one run. The solution still works in this case.)

Use division and modulo to isolate the digits, then compare them. Start with the first and fourth digits.

24"!'""-"#="\$0"%\$#!-#"&##<#\$'#%&#&C#':\$!B\$"7\$\$<\$%0\$&C%!B%"7%\$C%%0%&C&!:&"7&\$/&%@&&0&'0&(6'!:'"='\$E'%3'&0''0'(6(!0("3(#'(\$<(%<)!=)"@)#')\$0)%8*!=*"<*#/*\$6*%=+!5+"8+#/+\$0+%C,!<,"8,#6,\$B,%<-!<-"8-\$<-%7.!8."=.\$<.%8/!7/"C/\$0/%=0!<0"/0\$60%/1!01"B1\$/1%B2!&2"%2\$&2%%

Level 25

Go from 0 0 0 0 to 345 456 678 789.

There's a pattern: Second-First=Fourth-Third=111 and Third-Second=222.

Get 111 into one of these cells, and create one more cell.

25!&&!''"%-"&D"';#%-#&0#'=\$%5\$&0\$'/%%5%&:%'/&%-&&:&'6'%-'&B''<(%<(&/('5)%B)&/)'=*%:*&D*'=+%D+&0+'6+(&,%:,&0,'=,(5-%0-&B-'0-(C.%0.&<.'0.(C/%-/&-/'6/(C0%-0&50'/0(01%-1&<1'/1(B2%&2&%2'&2(%

Level 26

Calculate the integer part of the square root of Second and put it in First.

Count up Third and Fourth by one each iteration, until Third * Fourth > Second. When that becomes the case, copy Third to First and decrement.

26"%/#%/\$%=%%'%&\$&%-&&E'%:'&/(%D(&@('=((0()5(*.)%0*%&*&%

Level 27

A random multiple of 11 will be picked. Find it.

Exactly like Level 23, but a different multiple and no addition plates.

27"%'"&-"'-"(\$#%!#(-\$%-\$(-%%-%(-&%-&(-'%&'&-''-'(%

Now levels 28-36... They're getting trickier now.

Level 28

Go from 0 0 0 0 to 128 432 360 375.

This one is really tricky. We need to find some sort of system here.

One way to solve this level is to use 8 as the main element of your computations.

54 = (8 * 8) - 8 - 2
45 = 54 - 8 - 1
360 = 45 * 8
375 = 360 + 8 + 8 - 1
432 = 54 * 8
128 = (8 * 8) + (8 * 8)

28"!'""5"#-"\$-"%\$#!5\$!/%!5%"\$&!7'!6'"7(!.("0)!.)"7*!<*"0+!<+"0,!B,".-!0-"5.!C."5/!;/"=0!D0"=1!01"52!&2"%

Level 29

Set First to the greatest common divisor of Second and Third.

The Euclidean algorithm for calculating the GCD is fairly simple to implement: gcd(a, 0) = a, gcd(a, b) = gcd(b, a modulo b).

29"%/#%/\$"B\$#0\$\$4\$%\$%\$=%%0&\$0&%<'\$B'%6(\$/(%/)\$E)%6*\$D*%<+\$0+%6,\$C,%/-\$=-%5.\$5.%C/\$&/%%

Level 30

A random multiple of 13 will be picked. Find it.

You should know the drill by now.

30(#&(\$-(%-(&-((')#%)\$-)%-)&-)'\$*#&*\$-*%-*&-*'%*(!+#%+\$-+%-+&-+'-+(\$

Level 31

(NOTE: The description given is incorrect.)
Determine the Second'th Fibonacci number and store it in First.

Use Second as an iteration counter by counting down to 0. Use Third and Fourth to store the results. Keep them sorted so you know which one to copy to First.

If you decrement the counter after checking it, initialize Third and Fourth to 0 and 1. If you decrement before checking, initialize both to 1.

31"%=\$%=%%:&%='!5'"<'#<'\$A'%\$''<'(\$(\$;(%&(&<('C((%)\$<)%**\$5*%B+\$<+%6,\$5,%B-\$0-%<.\$=.%//\$B/%*0\$60%B1\$&1%%

Level 32

Calculate the logarithm of Second in base 2 and store it in First.

The base-b logarithm of n is defined as the value x which satisfies n = b^x.

Since we're after the integer logarithm, you're essentially being asked for the length of n written in base b, minus 1.

Keep dividing Second with your base until Second = 1. Count how many times you had to divide to get to this result.

32"%0#%-\$%-%%0&%-'%<(\$A(%\$)\$=*\$:+\$/+%0,\$<,%E-\$&-%%

Level 33

Calculate First=2^Second, with no arithmetic operations.

2^n = 2^(n-1) + 2^(n-1). Level 16 told you how to copy a value, and Level 13 told you how to add the two values back together.

33"%-#%=\$%/%\$4%%\$%&\$&\$.'\$/'&0(\$)%')&=)(:*!&*%&*&%*'.*(\$

Level 34

Calculate the mean of the 4 random numbers and store it in all cells, without arithmetic operations. (In other words, distribute the cell contents evenly.)

Make three of the cells equal by moving stuff to the remaining cell. Move to or from this last cell depending on its value.

34"%<#!&#";##/#\$'#%>#&'#'/#(-#)\$\$!%\$"-\$#0\$\$>\$%3\$&3\$'.\$(0\$)%%\$&%%'%&\$&%<&&'&'-&(<&);&*\$'!&'";'#/'\$''%>'&/'*=(!%("-(#0(\$>(%3(&3('.((0()-(*%)\$&)%')&\$*!&*"-*#0*\$'*%<+!/+\$'+%>,!-,%3,&','0,(.,)/,*\$-!<-*..!:.*</!=/*;0!;0*=1!%1";1#;1\$>1&31':1(:1):1*%

Level 35

A random multiple of 11 will be picked. Find it.

Level 27, but the level layout is different.

Since there's no penalty for guessing, you can just make a loop that checks every number...but try to come up with a design which only checks the possible numbers.

35&#''#!(#-)#-*#-+#-,"',#&,\$,,%-,&-,'\$-#,."&.#%

Level 36

Sort 4 random numbers, with the lowest in First and the highest in Fourth.

You have arithmetic operations, so swapping numbers is easy enough. The simplest way is to use a Bubble sort as the basis for your code, but you'll have to write each iteration manually.

36"%<#"'##C#\$5#%1\$"&\$#5\$\$+\$%'%%<&%/&&@&'B&(6&)B&**'"''#C'\$5'%1'&0("&(#5(\$+(%'(&=)%<)&%)'*)(B))\$*%/*&@*'B*(6*)%+"'+#C+\$5+%1+&<,"&,#5,\$+,%',&/-%0-&%-'+-(5-)\$.%<.&@.'5.(C.)%/%&/&%

+1 for the Look Around You reference! Yay!

You beat me to it, Cyann!

This one's a lot of fun; I love programming games when they're done well.

Sometimes the directions given by Ted have minor errors, though. I've beaten the first 15 problems and I found that 14's instructions ask for the value of 2 & !(3 || 4) while the game accepts only the opposite, or !(2 & !(3 || 4)). Also, 15 asks to build 31 63 127 255 but only accepts 32 64 128 256.

Besides this and the negative points brought up in the review, though, it's a great game.

ok..... very poor in game instructions.... have no idea what do to. I'm supposed to change the zeros into ones, but how? I can move the guy around, spilt and un-split....

I can't solve level 3! How do I get it to stop?

My technique for reaching 0 is to divide the number by itself and subtracting 1 (obtained by doing the same to another number).

@Lavos: How on earth did you work out those were valid answers? Think I need your skills on level 5 :) It says 8 x x x, and I can get the leading 8 easily but no other obvious combination seems to work. Maybe I have to brute force it?

Sorry - I actually meant level 4 but it seems the issue was that I'd already solved it by accident so no fireworks the second ("correct") time. As mentioned in the review that is an issue...

2+3*(7-5)=10

Can someone please explain what stupid way they solved this to give 8????

@Luraman

7-5=2
3*2=6
6+2=8

Standard rules. First parentheses, then multiplication, finally addition.

What i don't like about this game, is how most of the levels can easily be bruteforced. Even if they try to make you win 3 times in a row, just press space until the wanted output arrives and it will still count :P

lol sry, my mistake :)

July 11, 2011 5:29 PM

@Lavos- it doesn't seem to recognize my solution for level 7 (divide Two by Three, store remainder in One). First effort put the remainder in One, left junk in Two and Three- no solution. Thinking maybe it wanted to see [remainder 0 0 0], I rewrote to wipe Two and Three, still no joy. Since you've solved up to 15, would you kindly take a look at my solution and tell me what's wrong?

```07\$%<%%5&%/'%/(%E)%D*%0+%0,%6-%/.%6/%&/&//'</(C ```

Lavos can you explain what your symbols for 14 mean? A few examples would be helpful. The 1 example given in game doesnt help.

July 11, 2011 7:36 PM

@JIGuest: As long as the remainder is in One, that's enough. I don't see anything wrong with your solution - is it actively telling you that you're wrong, or is nothing happening? If nothing's happening, you might already have cleared that level - check the level select screen.

@Jason: In the C programming language (and those with similar syntax), ! means boolean negation (so true becomes false and vice versa), || means "logical or" (true if either operand is true) and && means "logical and" (both operands are true) - Lavos is using this as a shorthand, and doing this is very common among programmers.

You don't really have to worry about that, though - the game uses the words "not", "or" and "and".

July 11, 2011 8:13 PM

@Lavos: Actually, that's not exactly what it wants either. I've run the level a couple of times to gather the 8 possible sets of inputs and the expected output for each - the only combination that must result in 0 is Second=0, Third=1, Fourth=1. With your formula, Second=1, Third=Fourth=0 would be 0.

A proper formula would be Second OR NOT (Third AND Fourth).

@Pidgeot: Guess I got lucky then. =/

There are other levels with incorrect directions, as well. It almost seems like the author edited some puzzles to make them easier/less annoying/more interesting, but forgot to update the written instructions.

@Jason: Sorry, as Pidgeot explained, it's programmer shorthand. What the level is doing is asking you to find the truth value of the given Boolean logical expression, using the number 0 to represent "false" and 1 to represent "true". As Pidgeot found out, what the game really wants you to evaluate is the expression Second OR NOT (Third OR Fourth).

Here's an example of how to do this by hand:

Suppose you're given the data 0 0 1 1.
Again, the expression is Second OR NOT (Third OR Fourth).

First you evaluate the expression in parentheses, Third OR Fourth. This is true if either Third or Fourth is true (i.e., 1) and false only if both are false (i.e., 0). In this example, both Third and Fourth are true, so we replace "Third OR Fourth" with "True", giving:

Second OR NOT(True)

NOT reverses the value of the expression after it, hence the name. "NOT(True)" then can be replaced with "False":

Second OR False

The Second value given to us is 0, or false, giving us:

False OR False

As explained above, if both values compared by OR are False, then the result is False, leaving us with:

False

Thus, the value of the entire expression is false, so you would want to put a 0 in the First position.

What you want to to is make a solution that automates this process. Hope this helped =)

July 11, 2011 9:46 PM

Okay, here's my shot at a walkthrough for the first 18 levels. (I haven't gotten any further yet, and it's way too late to keep playing.)

For each level, I've written a description of what you need to do, then, nested in additional spoiler tags, I have some hints as to how you can do it (usually just 1, but a few levels have additonal levels), and finally a spoiler tag hiding my own solution which you can copy into the program. It's all nested so you can't accidentally get to the solution without going through the hints.

Note that I've sometimes applied a little trickery which may make my particular solutions seem slightly less straight-forward than they could be. If you are having trouble following the logic, try slowing the robot down with the down arrow key and take one step at a time.

For all levels, I've done my best to ensure the output follows the actual rules exactly, but as with any kind of programming, there may be bugs. :)

Note that the game is rather picky about the copied solutions - you have to be careful that no hidden line breaks snuck in while you copy them. Paste into a text editor first (e.g. Notepad) so you can make sure you copy the right thing.

Level 1

Go from 0 0 0 0 to 1 1 1 1.

Use ++ to increment the current cell and >> to switch cells.

01"%-#%/\$%-%%/&%-'%/(%-

Level 2

Go from 0 0 0 0 to 1 2 3 4.

You can use the increment function for every thing, but you can save a little space by using the + operation to add cell values.

02&%-'%/(%-)%-*%<+%/,%5-%-.%&.&/.'5.(5

Level 3

Go from 0 0 0 0 to 2 2 2 2.

You can use the # operation to jump to the second half of the playing field, but the first half is enough space to solve the puzzle.

03&\$&&%-&&''\$/'%-'&-(\$5(%/(&/)\$%)%\$)&5

Level 4

Calculate 2 + 3 * (7 - 5) and store the result in First.

Remember the order of operations: first parentheses, then multiplication, then addition. The correct result is therefore 8.

If you're really desperate, you can cheat - the game doesn't check how you reached a result, so you can just add First to itself 2 times (2 + 2 = 4, 4 + 4 = 8).

04\$%/%%/&%='%6(%<)%<*%7+%=,%B

Level 5

Swap First and Second.

You may use Third and Fourth as you wish, so start by copying First to Third.

05\$%<%%<&%B'%6(%/)%<*%B+%6,%0-%5.%//%=0%5

Level 6

Like Level 1, but the starting values are random.

You have to subtract each cell from itself - this will get the cell to 0, at which point you can increment and move on to the next cell.

06\$%6%%-&%/'%<(%C)%:*%<+%/,%6-%-.%//%<0%&0&C0':

Level 7

Let First be the remainder of dividing Second by Third (that is, First = Second modulo Third).

The cells only store integers - if a division yields a fractional part, it is discarded, e.g. 11 / 10 = 1. In programming, this kind of division is called integer division.

Due to this integer division, A / B * B = A - (A modulo B).

07\$%<%%5&%<'%8(%7)%=*%6+%*

Level 8

Copy First to Second, Third and Fourth.

Instead of moving back to First to make the copy, you can move to the last copied value instead - that is, you copy First to Second, then Second to Third, and finally Third to Fourth.

08\$%/%%<&%C'%=(%5)%/)&5*%<*&=+%<+&C,%C,&<-%=-&<.%5.&//%&/&%

Level 9

Set First to 1 if all values are the same, otherwise to 0.

This is where the colored directional arrows come into play. They compare whether the value at their color pointer is greater than the value at the other pointer, and are activated if this is the case.

If light > dark, then a light arrow will be followed. If light < dark, then a dark arrow will be followed. What then happens when light = dark?

09"\$/#\$3#%0#&6\$\$@\$%0\$&6%\$/&\$3&%0&&0&'6'\$@'%0'&0''6(\$/)\$3)%/)&6*\$@*%/*&6+\$/,\$6-\$-

Level 10

Calculate the maximum value of First and Second, and of Third and Fourth; then take the smaller value of these two and put it in First.

The simplest way to do this is to set First = max(First, Second) and Third = max(Third, Fourth). Then, set First = min(First, Third).

10"%/#!'#"/##C#\$0#%1\$!&\$"B\$%'%%<&%<'%<(%/)!')"0)#6)\$/)%1*!&*"B*%'+!&+"B+%/,%/-!'-"=-#C-\$<-%1.!5

Level 11

Reverse the order of the cells.

What you want to do is to swap First and Fourth, and Second and Third.

There's a trick you can do to swap two different values using only addition and subtraction - simply perform the following operations: A = A + B, B = A - B, A = A - B. You can only assign to the first operand, however, so you'll have to rewrite it a bit...

One way to rewrite this is as B = B + A, A = A - B, B = B + A, A = -A.

11"%=#%B\$%6%%B&%*'%/(%=)%B*%6+%B,%*

Level 12

Go from 0 0 0 0 to 1 10 100 1000.

Start by getting 10 in Second.

12"%-#%-\$%<%%B&%D'%D(%B)%.*%/+%/,%5-%7.%//%50%71%7

Level 13

Add Second to First, but without the arithmetic operators.

This is where it gets a bit tricky. You have to construct a loop which increments First until all of Second has been added. That means you'll also have to decrement Second every time, and stop when it hits 0.

13"%0#%0\$%-%%<&%''%3(%/)%/*%-+%/,%/-%;.%32%%

Level 14

(NOTE: Game description is incorrect here.)

Calculate a Boolean expression: First = Second OR NOT (Third AND Fourth). (Don't know what that means? Read up on Boolean algebra on Wikipedia.) 0 represents False, and 1 represents True.

All four cells start with random values, so it's a good idea to start by resetting First to 0.

If Second is 1, you can use a principle called short-circuiting: the result will be 1 regardless of Third and Fourth, so you don't have to check those at all in that case.

14"%6#%<\$%@\$&-%%<&%@&&<&'A&(-'%-''&

Level 15

(NOTE: Game description is incorrect here.)

Go from 0 0 0 0 to 32 64 128 256.

Once you get First to 32, every other cell can be filled in correctly with 2 additions.

15"%-#%-\$%7%%7&%5'%<(%B)%B*%<+%/,%B-%B.%</%/0%B1%B

Level 16

Copy Second to First, but without the arithmetic operators.

Clearly, you have to set up a loop. This time, keep incrementing First as long as Second > First.

16)\$A)%<)&\$*\$-+\$?

Level 17

(NOTE: Game description is incorrect here.)

Go from 0 0 0 0 to 10 20 30 40, but without the arithmetic operators.

There's enough room to lay out 100 increment operations and path the robot around it. I don't know of any better solution for this one.

17"!'"%\$#&&#''\$"&\$#'\$\$&\$%'\$&/\$(&\$)'%!-%"-%#-%\$-%%-%&-%'-%(-%)-%*-&!-&"-&#-&\$-&%-&&-&'-&(-&)-&*-'!-'"-'#-'\$-'%-'&-''-'(-')-'*-(!-("-(#-(\$-(%-(&-('-((-()-(*-)!-)"-)#-)\$-)%-)&-)'-)(-))-)*-*!-*"-*#-*\$-*%-*&-*'-*(-*)-**-+!-+"-+#-+\$-+%-+&-+'-+(-+)-+*-,!-,"-,#-,\$-,%-,&-,'-,(-,)-,*--!--"--#--\$--%--&--'--(--)--*-.!-."-.#-.\$-.%-.&-.'-.(-.)-.*-/!//#//%&/&%/'&/(%/)&/*%0!&0"%0#&0\$%

Level 18

Swap First and Second, but without the arithmetic operators.

Store one value in Third, then gradually increment or decrement First and Second.

18"%<#%<\$"'\$#3\$\$:\$%1\$&'%"&%%'%&\$&%='"''#@'\$-'%>'&'("'(#3(\$.(%1(&')"&)%')&\$*%/+%/,#3,\$:,%1-#@-\$;-%>

July 11, 2011 11:40 PM

@Lavos- err, duh, apparently I'm clever enough to solve the level, but dense enough not to realize it! Must have missed the fireworks the first time around, then too stupid to realize the light green on level 7 meant "solved", not "unlocked". Anyway, thanks for prodding me to look twice- sorry for the waste of bandwidth!

Abashedly yours,

JIGuest

July 12, 2011 7:39 AM

Here's levels 19 to 27.

Level 19

Find the expected number.

You have to continually increment First until it matches the target number. To check if you have the right number, move over a plate with a dot on it - if the value is correct, the robot stops and you complete the puzzle.

You'll have to use jumps to create the loop.

19(&&('!((')&-*\$'*%!*',*(\$+\$-+&,,\$&,%!,&%

Level 20

(NOTE: The description given is incorrect.)

Set First = Second / 3 and Second = Second modulo 3.

As long as Second is greater than or equal to 3, remove 3 from Second and add 1 to First.

20"%0#%<\$%-%%-'!&'"/'#-'\$0'%'(!%(";(#;(\$;(%>

Level 21

If Second, Third and Fourth are all divisible by 3, set First to 1, otherwise set First to 0.

This is a bit like Level 20, except you're not actually storing the integer part of the division.

First always starts as 0.

For each cell, keep subtracting 3 as long as it's greater than 0. If you ever get a value smaller than 0, that cell was not divisible by 3.

21"%<#"&##;#%'\$"%\$#;\$\$;\$%>%%1&%<'"&'#;'%'("%(#;(\$;(%>)%1*%<+"&+#;+%',"%,#;,\$;,%>-%1.%-

Level 22

Check if all values are 1 and store the result in First.

Any one of the values may be incorrect, but only a single one.

22"%<##C#\$=#%>\$#C\$\$=\$%1%%<&"C&#=&\$=&%>'"C'#='\$='%1(%<)#C)\$<)%>*#C*\$<*%1

Level 23

A random multiple of 5 will be picked. Find it.

This is almost exactly like Level 19, except the number is always a multiple of 5.

23%%&%''&'!''-('-)'-*'-+'-,'!-'%

Level 24

Determine if the 4-digit number in Second is a palindrome. (Note: I've had 10000 come up during one run. The solution still works in this case.)

Use division and modulo to isolate the digits, then compare them. Start with the first and fourth digits.

24"!'""-"#="\$0"%\$#!-#"&##<#\$'#%&#&C#':\$!B\$"7\$\$<\$%0\$&C%!B%"7%\$C%%0%&C&!:&"7&\$/&%@&&0&'0&(6'!:'"='\$E'%3'&0''0'(6(!0("3(#'(\$<(%<)!=)"@)#')\$0)%8*!=*"<*#/*\$6*%=+!5+"8+#/+\$0+%C,!<,"8,#6,\$B,%<-!<-"8-\$<-%7.!8."=.\$<.%8/!7/"C/\$0/%=0!<0"/0\$60%/1!01"B1\$/1%B2!&2"%2\$&2%%

Level 25

Go from 0 0 0 0 to 345 456 678 789.

There's a pattern: Second-First=Fourth-Third=111 and Third-Second=222.

Get 111 into one of these cells, and create one more cell.

25!&&!''"%-"&D"';#%-#&0#'=\$%5\$&0\$'/%%5%&:%'/&%-&&:&'6'%-'&B''<(%<(&/('5)%B)&/)'=*%:*&D*'=+%D+&0+'6+(&,%:,&0,'=,(5-%0-&B-'0-(C.%0.&<.'0.(C/%-/&-/'6/(C0%-0&50'/0(01%-1&<1'/1(B2%&2&%2'&2(%

Level 26

Calculate the integer part of the square root of Second and put it in First.

Count up Third and Fourth by one each iteration, until Third * Fourth > Second. When that becomes the case, copy Third to First and decrement.

26"%/#%/\$%=%%'%&\$&%-&&E'%:'&/(%D(&@('=((0()5(*.)%0*%&*&%

Level 27

A random multiple of 11 will be picked. Find it.

Exactly like Level 23, but a different multiple and no addition plates.

27"%'"&-"'-"(\$#%!#(-\$%-\$(-%%-%(-&%-&(-'%&'&-''-'(%

Now levels 28-36... They're getting trickier now.

Level 28

Go from 0 0 0 0 to 128 432 360 375.

This one is really tricky. We need to find some sort of system here.

One way to solve this level is to use 8 as the main element of your computations.

54 = (8 * 8) - 8 - 2
45 = 54 - 8 - 1
360 = 45 * 8
375 = 360 + 8 + 8 - 1
432 = 54 * 8
128 = (8 * 8) + (8 * 8)

28"!'""5"#-"\$-"%\$#!5\$!/%!5%"\$&!7'!6'"7(!.("0)!.)"7*!<*"0+!<+"0,!B,".-!0-"5.!C."5/!;/"=0!D0"=1!01"52!&2"%

Level 29

Set First to the greatest common divisor of Second and Third.

The Euclidean algorithm for calculating the GCD is fairly simple to implement: gcd(a, 0) = a, gcd(a, b) = gcd(b, a modulo b).

29"%/#%/\$"B\$#0\$\$4\$%\$%\$=%%0&\$0&%<'\$B'%6(\$/(%/)\$E)%6*\$D*%<+\$0+%6,\$C,%/-\$=-%5.\$5.%C/\$&/%%

Level 30

A random multiple of 13 will be picked. Find it.

You should know the drill by now.

30(#&(\$-(%-(&-((')#%)\$-)%-)&-)'\$*#&*\$-*%-*&-*'%*(!+#%+\$-+%-+&-+'-+(\$

Level 31

(NOTE: The description given is incorrect.)
Determine the Second'th Fibonacci number and store it in First.

Use Second as an iteration counter by counting down to 0. Use Third and Fourth to store the results. Keep them sorted so you know which one to copy to First.

If you decrement the counter after checking it, initialize Third and Fourth to 0 and 1. If you decrement before checking, initialize both to 1.

31"%=\$%=%%:&%='!5'"<'#<'\$A'%\$''<'(\$(\$;(%&(&<('C((%)\$<)%**\$5*%B+\$<+%6,\$5,%B-\$0-%<.\$=.%//\$B/%*0\$60%B1\$&1%%

Level 32

Calculate the logarithm of Second in base 2 and store it in First.

The base-b logarithm of n is defined as the value x which satisfies n = b^x.

Since we're after the integer logarithm, you're essentially being asked for the length of n written in base b, minus 1.

Keep dividing Second with your base until Second = 1. Count how many times you had to divide to get to this result.

32"%0#%-\$%-%%0&%-'%<(\$A(%\$)\$=*\$:+\$/+%0,\$<,%E-\$&-%%

Level 33

Calculate First=2^Second, with no arithmetic operations.

2^n = 2^(n-1) + 2^(n-1). Level 16 told you how to copy a value, and Level 13 told you how to add the two values back together.

33"%-#%=\$%/%\$4%%\$%&\$&\$.'\$/'&0(\$)%')&=)(:*!&*%&*&%*'.*(\$

Level 34

Calculate the mean of the 4 random numbers and store it in all cells, without arithmetic operations. (In other words, distribute the cell contents evenly.)

Make three of the cells equal by moving stuff to the remaining cell. Move to or from this last cell depending on its value.

34"%<#!&#";##/#\$'#%>#&'#'/#(-#)\$\$!%\$"-\$#0\$\$>\$%3\$&3\$'.\$(0\$)%%\$&%%'%&\$&%<&&'&'-&(<&);&*\$'!&'";'#/'\$''%>'&/'*=(!%("-(#0(\$>(%3(&3('.((0()-(*%)\$&)%')&\$*!&*"-*#0*\$'*%<+!/+\$'+%>,!-,%3,&','0,(.,)/,*\$-!<-*..!:.*</!=/*;0!;0*=1!%1";1#;1\$>1&31':1(:1):1*%

Level 35

A random multiple of 11 will be picked. Find it.

Level 27, but the level layout is different.

Since there's no penalty for guessing, you can just make a loop that checks every number...but try to come up with a design which only checks the possible numbers.

35&#''#!(#-)#-*#-+#-,"',#&,\$,,%-,&-,'\$-#,."&.#%

Level 36

Sort 4 random numbers, with the lowest in First and the highest in Fourth.

You have arithmetic operations, so swapping numbers is easy enough. The simplest way is to use a Bubble sort as the basis for your code, but you'll have to write each iteration manually.

36"%<#"'##C#\$5#%1\$"&\$#5\$\$+\$%'%%<&%/&&@&'B&(6&)B&**'"''#C'\$5'%1'&0("&(#5(\$+(%'(&=)%<)&%)'*)(B))\$*%/*&@*'B*(6*)%+"'+#C+\$5+%1+&<,"&,#5,\$+,%',&/-%0-&%-'+-(5-)\$.%<.&@.'5.(C.)%/%&/&%

Here's my variation on 13 using the minimum amount of instructions (I believe)

13"%

I think this is a better solution to #34.

34"%'"'\$#%/\$"'\$#-\$\$;\$%>\$&&%"'%#:%\$.%%1%'/&"'&%\$&&3&'%'"/'&@''%("@(#;(\$-(%'(&/('/)"3)#.)\$:)%')&3)'%*"&*%'*&@*'%+%/+&/+'/,"',#-,\$;,%>,&3,'%-"'-#:-\$.-%1-&@-'%."'.%\$.&//"&/%//&%

July 13, 2011 1:42 PM

Did I miss a rule? The robot is ignoring my second change direction arrow and just runs off the bottom of the screen here.

http://i51.tinypic.com/b8wrwh.png

@golden_cow2:

The light green arrows only function if the number at the light green pointer is greater than the number at the dark green pointer; vice-versa for the dark green arrows.

You'll want to use the dark blue arrows, which the robot will always obey.

Is there some way to select a whole bunch of tiles and drag them around? I'm too impatient for this game otherwise, I'll just start programming and then have to shift the whole thing over one tile after I'm halfway through...

Funny how this great game doesn't even have enough votes to show the score. "Math" is the magic repulsion word :P

I'm still playing this on-and-off, but it's gotten very difficult. Here are the general strategies for the levels I've beaten and Pidgeot hasn't covered:

#37:

The easiest way to do this is to build Second, Third, and Fourth digit-by-digit. Increment them until you have the correct ones digits. Then set First to 10 and use that to build the correct tens digits. Then make First equal 100 and use that to build the correct hundreds digits. Same idea for the thousands digits. Once you have Second, Third, and Fourth built, reset First to zero and build it using the fact that 1728 = 2*2*2*2*2*2*3*3*3.

#38:

You'll need to use almost all the space provided. Use forks to have one robot counting and the other robot checking to see if the target number has been reached. When the target number has been reached, have the checking robot kill the counting one, and move on to the next memory slot.

#39:

The key here is to use the fact that the memory slots can only hold integers; if you try the operation x/y when y is not a factor of x, the game will round off the result. Thus, to check if y is a factor of x:
1) Store the value of x in another memory location.
2) Divide x by y, then immediately multiply x by y. If y is not a factor of x, this will cause some rounding error.
3) Compare the value of x to the value you stored at the beginning. If they are equal, then y is a factor of x.

Use this technique to check every integer greater than 1 and less than the value of Second. If any of them are a factor of Second, then Second is not prime.

#41:

The only solution I've found to this one requires a bit of subtle trickery that's difficult to explain, but here's the step-by-step process:

1) Increment First, Second, and Third. Then increment Fourth twice. Repeat until Third is equal to Fourth.
2) Repeatedly decrement Fourth until Fourth is equal to First.
3) Decrement Second once.
4) Check if First is equal to Second. If so, the program is complete and you can send the robot into the abyss. Otherwise, go to step 1.

March 1, 2014 12:20 AM

You can solve 17 with a loop. It uses less space but takes more cycles.

17"%0#\$&#%'#&\$\$%:%%:&%:&&/'%:'&%''\$(%:('*)%:)&/)'/*%:*&3*'%+%:+&@+'*,%:,&0-%:-&

Please consider creating a Casual Gameplay account if you're a regular visitor here, as it will allow us to create an even better experience for you. Sign-up here!
• You may use limited HTML tags for style:
(a href, b, br/, strong, em, ul, ol, li, code, spoiler)
HTML tags begin with a less-than sign: < and end with a greater-than sign: >. Always. No exceptions.
• To post spoilers, please use spoiler tags: <spoiler> example </spoiler>
If you need help understanding spoiler tags, read the spoiler help.
• No link dropping, no domains as names; do not spam, and do not advertise! (rel="nofollow" in use)

## Monkey GO Happy Turkeys

3,932 Views
1 Comment
> Dora It's Thanksgiving day! But how can you celebrate without a feast! Help the monkeys look all over town in this point-and-click puzzle game from Pencil Kids to find everything they need, including a whole lot of apples, and the bird of honor!  ...

## Hoverboard

4,503 Views
> Dora Webcomic xkcd has been around for over a decade, and to celebrate the release of his new book, creator Randall Munroe has created a very simple piece of platforming interactive art. But venture beyond the small playing field, and you'll find a much bigger world than you thought that's full of surprises.  ...

## Rock 'n' Roll Escape

5,471 Views
> Dora Pine Studio serves up a short but rock-worthy escape in your browser or free on iOS and Android as you try to find your way out of a cozy, abandoned little concert venue. But with a soundtrack this catchy, will you be able to resist air-guitaring long enough to escape?  ...

## Weekday Escape N°103

3,413 Views
> Dora This week on Weekday Escape! no1game gets inside your computer and asks if you WANT TO PLAY A GAME? (Maybe you should call Matthew Broderick?) MayMay isn't letting you go anywhere until you get these snails out of the yard. And Vitamin Hana turns you right 'round baby, right 'round.  ...

### Support Us

Limit to the last 5 comments