For Christmas, I got the ThinkFun 36 Cube. It is consists of 36 towers in 6 colors and 6 different sizes and a base plate with 6 by 6 slots to plug in the towers. These slots are of different heights. The goal is to place one towers of every color in each row and column. And theΒ towers must fit to form a level cube.
After some tries, I came to the conclusion that this puzzle is the work of the devil and that I should not waste more brain cycles on solving it. So I wrote a little python script to solve the puzzle for me.
Show sourcecode
#!/usr/bin/python
COLORS = dict(zip((1 << i for i in range(6)), ('P','Y','O','B','R','G')))
COLORS[False] = 'X'
used_towers = [0 for i in range(6)]
cube = ((1,3,4,5,2,0),
(2,5,0,4,1,3),
(0,1,3,2,5,4),
(5,4,1,3,0,2),
(4,2,5,0,3,1),
(3,0,2,1,4,5))
solution = [[False for x in range(6)] for x in range(6)]
used = tuple(set() for i in range(6))
def test_color(pos, solution, used_towers, color, size):
#check if tower of this size and color has already been used
if color & used_towers[size]:
return False
#check if tower has already been used in row or column:
for i in range(6):
if color == solution[pos/6][i]: return False
if color == solution[i][pos%6]: return False
return True
def print_solution(solution):
for i in range(6):
print zip((COLORS[c] for c in solution[i]), (6 - s for s in cube[i]))
def solve(pos, solution, used_towers, best):
if pos == 36: return best, solution
size = cube[pos/6][pos%6]
for i in range(6):
color = 1 << i
if test_color(pos, solution, used_towers, color, size):
used_towers[size] = used_towers[size] | color
solution[pos/6][pos%6] = color
if pos > best:
print "#######", pos + 1, "towers placed"
print_solution(solution)
best = pos
best, solution = solve(pos+1, solution, used_towers, best)
if best >= 35:
return best, solution
solution[pos/6][pos%6] = False
used_towers[size] = used_towers[size] ^ color
return best, solution
solve(0, solution, used_towers, 0) |
#!/usr/bin/python
COLORS = dict(zip((1 << i for i in range(6)), ('P','Y','O','B','R','G')))
COLORS[False] = 'X'
used_towers = [0 for i in range(6)]
cube = ((1,3,4,5,2,0),
(2,5,0,4,1,3),
(0,1,3,2,5,4),
(5,4,1,3,0,2),
(4,2,5,0,3,1),
(3,0,2,1,4,5))
solution = [[False for x in range(6)] for x in range(6)]
used = tuple(set() for i in range(6))
def test_color(pos, solution, used_towers, color, size):
#check if tower of this size and color has already been used
if color & used_towers[size]:
return False
#check if tower has already been used in row or column:
for i in range(6):
if color == solution[pos/6][i]: return False
if color == solution[i][pos%6]: return False
return True
def print_solution(solution):
for i in range(6):
print zip((COLORS[c] for c in solution[i]), (6 - s for s in cube[i]))
def solve(pos, solution, used_towers, best):
if pos == 36: return best, solution
size = cube[pos/6][pos%6]
for i in range(6):
color = 1 << i
if test_color(pos, solution, used_towers, color, size):
used_towers[size] = used_towers[size] | color
solution[pos/6][pos%6] = color
if pos > best:
print "#######", pos + 1, "towers placed"
print_solution(solution)
best = pos
best, solution = solve(pos+1, solution, used_towers, best)
if best >= 35:
return best, solution
solution[pos/6][pos%6] = False
used_towers[size] = used_towers[size] ^ color
return best, solution
solve(0, solution, used_towers, 0)
My program quickly came up with a correct placement for 34 towers – but it failed to find the complete solution.
[('P', 5), ('Y', 3), ('O', 2), ('B', 1), ('R', 4), ('G', 6)]
[('Y', 4), ('O', 1), ('P', 6), ('R', 2), ('G', 5), ('B', 3)]
[('O', 6), ('B', 5), ('R', 3), ('G', 4), ('P', 1), ('Y', 2)]
[('R', 1), ('G', 2), ('Y', 5), ('P', 3), ('B', 6), ('O', 4)]
[('B', 2), ('P', 4), ('G', 1), ('Y', 6), ('O', 3), ('R', 5)]
[('G', 3), ('R', 6), ('B', 4), ('O', 5), ('X', 2), ('X', 1)]
Legend:
P = Purple, Y = Yellow, O = Orange, B = Blue, R = Red, G = Green, X = Empty
The number is the size of the tower.
As you can see, I didn’t waste much time on making the output pretty π
So close and yet so far
After spending lots of time verifying that my program was working correctly, I became impatient and googled for help. I found an answer, but it revealed too much, taking all the fun.
Therefore, I split my solution into multiple hints. If you are stuck, reveal just one of them at a time and try to figure it out by yourself. It is way more rewarding!
Hint #1 (show): Your assumptions are probably wrong.
Now go back and try to solve it. I’m waiting here.
Hint #2 (show): The assumption that all towers of the same size only differ in color is wrong.
Hint #3 (show): There are two towers which do fit on slots where the other towers of the same size do not fit.
Hint #4 (show): The two special towers are the orange one of heigh 5 and the red one of height 6.
Hint #5 (show): The orange tower of height 5 has to go to position (1,2) and the red tower of height 6 to (3,2) in my coordinate system.
Even if you uncovered all hints, the puzzle is still far from solved. You can still tinker with it forever.
Spoiler alert: Don’t uncover the solution, unless you are really desperate!
Click to show the 36cube solution.
After I had found the two culprits, I adjusted my program by changing the array and inserting two special conditions. Within seconds I had a complete solution of the 36 Cube:
[('P', 5), ('Y', 3), ('B', 2), ('O', 1), ('R', 4), ('G', 6)]
[('B', 4), ('P', 1), ('Y', 5), ('G', 2), ('O', 5), ('R', 3)]
[('R', 6), ('G', 5), ('P', 3), ('Y', 4), ('B', 1), ('O', 2)]
[('G', 1), ('R', 2), ('O', 6), ('B', 3), ('Y', 6), ('P', 4)]
[('Y', 2), ('O', 4), ('R', 1), ('P', 6), ('G', 3), ('B', 5)]
[('O', 3), ('B', 6), ('G', 4), ('R', 5), ('P', 2), ('Y', 1)]
Finally solved
#!/usr/bin/python
COLORS = dict(zip((1 << i for i in range(6)), ('P','Y','O','B','R','G')))
COLORS[False] = 'X'
used_towers = [0 for i in range(6)]
# definition with (1,2) and (3,2) switched
cube = ((1,3,4,5,2,0),
(2,5,1,4,1,3),
(0,1,3,2,5,4),
(5,4,0,3,0,2),
(4,2,5,0,3,1),
(3,0,2,1,4,5))
solution = [[False for x in range(6)] for x in range(6)]
used = tuple(set() for i in range(6))
def test_color(pos, solution, used_towers, color, size):
#check if tower of this size and color has already been used
if color & used_towers[size]:
return False
#check if tower has already been used in row or column:
for i in range(6):
if color == solution[pos/6][i]: return False
if color == solution[i][pos%6]: return False
# special conditions for the two special towers
if (pos/6, pos%6) == (1,2) and color != 2: return False
if (pos/6, pos%6) == (3,2) and color != 4: return False
return True
def print_solution(solution):
for i in range(6):
print zip((COLORS[c] for c in solution[i]), (6 - s for s in cube[i]))
def solve(pos, solution, used_towers, best):
if pos == 36: return best, solution
size = cube[pos/6][pos%6]
for i in range(6):
color = 1 << i
if test_color(pos, solution, used_towers, color, size):
used_towers[size] = used_towers[size] | color
solution[pos/6][pos%6] = color
if pos > best:
print "#######", pos + 1, "towers placed"
print_solution(solution)
best = pos
best, solution = solve(pos+1, solution, used_towers, best)
if best >= 35:
return best, solution
solution[pos/6][pos%6] = False
used_towers[size] = used_towers[size] ^ color
return best, solution
solve(0, solution, used_towers, 0) |
#!/usr/bin/python
COLORS = dict(zip((1 << i for i in range(6)), ('P','Y','O','B','R','G')))
COLORS[False] = 'X'
used_towers = [0 for i in range(6)]
# definition with (1,2) and (3,2) switched
cube = ((1,3,4,5,2,0),
(2,5,1,4,1,3),
(0,1,3,2,5,4),
(5,4,0,3,0,2),
(4,2,5,0,3,1),
(3,0,2,1,4,5))
solution = [[False for x in range(6)] for x in range(6)]
used = tuple(set() for i in range(6))
def test_color(pos, solution, used_towers, color, size):
#check if tower of this size and color has already been used
if color & used_towers[size]:
return False
#check if tower has already been used in row or column:
for i in range(6):
if color == solution[pos/6][i]: return False
if color == solution[i][pos%6]: return False
# special conditions for the two special towers
if (pos/6, pos%6) == (1,2) and color != 2: return False
if (pos/6, pos%6) == (3,2) and color != 4: return False
return True
def print_solution(solution):
for i in range(6):
print zip((COLORS[c] for c in solution[i]), (6 - s for s in cube[i]))
def solve(pos, solution, used_towers, best):
if pos == 36: return best, solution
size = cube[pos/6][pos%6]
for i in range(6):
color = 1 << i
if test_color(pos, solution, used_towers, color, size):
used_towers[size] = used_towers[size] | color
solution[pos/6][pos%6] = color
if pos > best:
print "#######", pos + 1, "towers placed"
print_solution(solution)
best = pos
best, solution = solve(pos+1, solution, used_towers, best)
if best >= 35:
return best, solution
solution[pos/6][pos%6] = False
used_towers[size] = used_towers[size] ^ color
return best, solution
solve(0, solution, used_towers, 0)
Daniel,
I came across your “36 Cube” solution page and enjoyed it a great deal. I don’t know whether my name is familiar, but it might be if you read the very fine print on either the puzzle packaging or the rules pamphlet, where I’m cited as the inventor of the puzzle.
Truth be told, I once rued the very concept of solution pages such as yours, but I liked the way you handled the process and slowly unwrapped the solution. I couldn’t have asked for more, and I certainly hope that you enjoyed the puzzle.
Although the puzzle has been out for a year-plus now, I have yet to see the solution process described as I originally described it to ThinkFun. Specifically, I was envisioning that people would get to 34, either repeatedly on their own or perhaps with computer assistance. (Yes, I took some pleasure in the fact that the puzzle couldn’t be solved by computer alone.) There are many different ways to achieve 34 correct towers, and the common denominator is that they all have an intractable set of four towers that are just plain wrong — two colors and two heights, but no way to make them flat. Of course, that’s the situation in a 2×2 version of this puzzle, and in fact the 2×2 and 6×6 sizes are the only cases where no “Euler square” exists. But once you reduce to the 2×2 case you can see that you can make the towers flat with a little hijinx. That’s precisely what I did in designing my original prototype, and I thought that maybe the characterization of the “34s” would be a common route to success, but thus far I haven’t heard it mentioned.
Anyway, congrats and thanks again for the write-up.
Derrick
Derrick,
I’m glad you like my solution and the way I present it. I don’t know if anyone who finds this page actually reveals the first hint and then goes back to figure it out, but I think it is better to give people the choice.
I don’t know if I would have come up with a complete solution on my own, but I enjoyed the puzzle a lot anyway and I think even if one knows the solution there is still a lot of fun in store. For example, one could code a more elegant solver, as my approach is rather brute force, or dive into the mathematical background of the puzzle.
Thanks a lot for taking the time to comment!
Hi Derrick and Daniel – this is Andrea at ThinkFun – I enjoyed reading Daniel’s posting and of course Derrick’s response – I will be sure that Bill Ritchie @ ThinkFun sees this so that we can continue to evolve the best “hints” and unraveling of solution – Cheers! Andrea
Hi Folks
In case you’re interested, I’ve included the VB.net source code for solving the puzzle. It’s probably similar to Daniel’s but I wrote it from scratch just for fun. Turns out there are four unique solutions (not counting just swapping all the towers of two colors.)
Derrick, I’m curious that you seemed to be alluding to the idea that there was another way to solve this puzzle than a depth first search (either human or computer). Can you elaborate?
Sub Main()
Dim h(,) As Short = { _
{4, 2, 1, 0, 3, 5}, _
{3, 0, 4, 1, 4, 2}, _
{5, 4, 2, 3, 0, 1}, _
{0, 1, 5, 2, 5, 3}, _
{1, 3, 0, 5, 2, 4}, _
{2, 5, 3, 4, 1, 0} _
}
Dim u(5, 5) As Boolean ‘color, height
Dim ux(5, 5) As Boolean ‘color, x
Dim uy(5, 5) As Boolean ‘color, y
Dim c(5, 5) As Short
Dim x As Short = 0
Dim y As Short = 0
For i As Short = 0 To 5
For j As Short = 0 To 5
u(i, j) = False
ux(i, j) = False
uy(i, j) = False
c(i, j) = -1
Next
Next
Dim ct As Short = 0
Do
‘find next one for x,y
Dim h1 As Short = h(x, y)
For c1 As Short = c(x, y) + 1 To 5
If Not u(c1, h1) AndAlso Not ux(c1, x) AndAlso Not uy(c1, y) Then
ct += 1
c(x, y) = c1
If x = 5 And y = 5 Then
For i As Short = 0 To 5
For j As Short = 0 To 5
Console.Write(c(j, i) & ” “)
Next
Console.WriteLine()
Next
Console.WriteLine(“(” & ct & “)”)
Console.WriteLine()
Continue Do
End If
u(c1, h1) = True
ux(c1, x) = True
uy(c1, y) = True
x += 1
If x = 6 Then
x = 0
y += 1
End If
Continue Do
End If
Next
‘rollback
c(x, y) = -1
x -= 1
If x = -1 Then
x = 5
y -= 1
If y = 0 Then ‘no point rolling back to the first row, which is arbitary.
Exit Do
End If
End If
Dim c2 As Short = c(x, y)
Dim h2 As Short = h(x, y)
u(c2, h2) = False
ux(c2, x) = False
uy(c2, y) = False
Loop
Console.Read()
End Sub
Daniel, can you elaborate on what you meant in the clues? I didn’t read them properly until now, and I find it strange that I came to the same solution as you, without handling any exceptions. Is there really something unique about some of the pieces? I thought the unique thing was that some of the rows of the base had more than one base of a particular height (thus getting around Euler’s pesky problem)
Hi Colin,
thanks for your comprehensive response and your solution.
I think the fields (1,2) and (3,2) are special. At (1,2), any tower of height 6 matches, but only the yellow tower of height 5. At position (3,2), any tower of height 5 matches, but only the violet tower. I hope that answers your question.
OK, time for a confession. I never touched the actual puzzle. I got my tower heights from your solution (discarding your color information). So I never realized that there was a ‘trick’ and just threw the processing power at it. I assumed that the base was obviously not a latin square. But apparently it does appear to be one. Consequently, I retract my original comments
So this isn’t a puzzle in the genre of rush hour, it’s a ‘find the mechanical trick’ puzzle.
Incidentally I think thinkfun should make a version of this where no towers are special, but the base can be shuffled to create challenges of varying difficulty. What do you think?
I’d be interested to know if you think this would have been a better puzzle if there were no secrets.
Thank you for the hints!!! I looked through the first three till the catch hit me π Previously I had done a complicated analysis of the options and I remember me complaining multiple times “MY LOGIC IS SOUND! WHAT IS WRONG?” so I eventually gave it up (not being able to give up and look for the solution), but recently I decided to finally feed my growing curiosity so I found this web site and saw the option for hints (Thank you SO much!) I am very happy now and still feel like I solved it. Thank you again!!! π
Hi, Daniel
Thank you for your hints.
I tried to use your script with Python 3.1.2 without success. It only runs in version 2.7.
My 36 cube – selled in Germany – differs from yours: the special towers are yellow (height 5 position 1,2) and orange (height 6, position 3,2). The positions are the same.
Next I modified your script changing the sequence of the colors.
The first color must be one without having a special tower!
The second color always must be one having a special tower!
Now you may change the positions of the colors.
Result: 48 solutions to 36 cube.
If you like you may redesign your script to generate all posible solution at once – without printing the temporary results π
Thanks again for your effort.
Wulf
After trying to solve this puzzle for 15 hours (with coloured crayons and paper) I wanted to explain to the person who gave me this puzzle that it couldn’t be done. You can only solve 34 towers. I was really agitated.
While explaining it, I said: ‘look, you can only solve it if this tower could fit here.’ And I took the yellow 5 and orange 6 and tried to swap them. To my great surprise it fitted.
Joris
i think ur solution is slightly wrong (i haven’t run the code) but in the solution above …
[(‘P’, 5), (‘Y’, 3), (‘B’, 2), (‘O’, 1), (‘R’, 4), (‘G’, 6)]
[(‘B’, 4), (‘P’, 1), (‘Y’, >>5), (‘G’, 2), (‘O’, >>5), (‘R’, 3)]
[(‘R’, 6), (‘G’, 5), (‘P’, 3), (‘Y’, 4), (‘B’, 1), (‘O’, 2)]
[(‘G’, 1), (‘R’, 2), (‘O’, >>6), (‘B’, 3), (‘Y’, >>6), (‘P’, 4)]
[(‘Y’, 2), (‘O’, 4), (‘R’, 1), (‘P’, 6), (‘G’, 3), (‘B’, 5)]
[(‘O’, 3), (‘B’, 6), (‘G’, 4), (‘R’, 5), (‘P’, 2), (‘Y’, 1)]
but in those two places the number is repeated in the same row …
No, this is not a mistake, as explained in hint #4 and #5. Let me know if it is still unclear.
// 36 cubes is a constraint game with a twist
// given a set of blocks with numbers 1 to 6
// a base is provided that allows different colors to be placed with different height posts
// arange in a 6×6 all blocks with unique colors in each vertical and horizontal row
// Additionally, all placed posts must be of the same height
// if you make the assumption that the base is a latin square
// i.e. that every position accepts one height for any color
// then the following constraint program (written in FOID) will demonstrate that no solution exists
// send me some email and I’ll send you the working FOID solution
// bmatichuk @ gmail.com
// Bruce Matichuk, 2010
//
Given:
type
{
int Num
Color = {Blue;Green;Orange;Purple;Red;Yellow}
int Row
int Column
}
ValidNum(Row,Column,Num)
Find:
Block(Color,Num)
Position(Color,Row,Column,Num)
Satisfying:
// every color has one height
! color[Color] num[Num] : Block(color,num).
// latin square assumption for base
! x[Row] y[Column] : ?1n : ?c: (ValidNum(x,y,n) & Block(c,n) & Position(c,x,y,n).
// The next two lines assume that block heights and colors are unique in each row and column
! x y1 y2 c1 c2 n1 n2: (Position(c1,x,y1,n1) & Position(c2,x,y2,n2) & y1 ~= y2) => (c1 ~= c2 & n1~=n2).
! x1 x2 y c1 c2 n1 n2: (Position(c1,x1,y,n1) & Position(c2,x2,y,n2) & x1 ~= x2) => (c1 ~= c2 & n1~=n2).
// This last line states that each block usage for a given height and position is unique
! x1 x2 y1 y2 c n1 n2 : (Position(c,x1,y1,n1) & Position(c,x2,y2,n2) & x1~=x2 & y1~=y2) => n1~=n2.
// if you assume that the base is a latin square, then the first row can be any choice of color array
Position(Blue,1,1,5).
Position(Green,1,2,3).
Position(Orange,1,3,2).
Position(Purple,1,4,1).
Position(Red,1,5,4).
Position(Yellow,1,6,6).
Data:
Num = {1..6}
Row = {1..6}
Column = {1..6}
// according to latin square assumption for base
ValidNum = {
1,1,5;1,2,3;1,3,2;1,4,1;1,5,4;1,6,6;
2,1,4;2,2,1;2,3,6;2,4,2;2,5,5;2,6,3;
3,1,6;3,2,5;3,3,3;3,4,4;3,5,1;3,6,2;
4,1,1;4,2,2;4,3,5;4,4,3;4,5,6;4,6,4;
5,1,2;5,2,4;5,3,1;5,4,6;5,5,3;5,6,5;
6,1,3;6,2,6;6,3,4;6,4,5;6,5,2;6,6,1;
}
When I first got my puzzle, I was eager to try it out, and got all the way to 34 pieces without “cheating”, although the 2 pieces I had left were not the 5 and 6 pieces, so there was no way I was going to stumble on the solution by randomly swapping pieces.
I then hit the internet to see if there were any hints on building a program to brute force the solution (or at least point me in the right direction as I do enjoy solving things on my own). In my search I discovered the wiki page for the Graeco-Latin Square (http://en.wikipedia.org/wiki/Graeco-Latin_square) and in there, Euler’s 36 Officer’s problem. When I found that, I was thoroughly confused. I thought there was no way, either the wiki was wrong (which I highly doubted), or the inventor of this puzzle has proven a conjecture incorrect after it had been proven correct (which I also has my suspicions of).
I then read a blurb that the inventor had said about how “It struck me as the basis for a potentially great 3-D puzzle”, that’s when I got suspicious of the puzzle. I went back to it, and remembered that I had noticed when I first inspected the puzzle that some of the base towers were different shapes even though they were for the same height tower pieces. I then tried every tower of the same height on every base, and lo and behold, found the two pieces that fit over the two odd bases (mine are orange and yellow, btw). I then cursed the inventor for playing such an evil trick on us poor unsuspecting puzzlers and then worked backward like it was an ordinary logic puzzle until I had the solution.
It’s a great puzzle, and your program is awesome, as well as your handling of the solution.
My hat’s off to the inventor, for being devious enough to unleash this on the world. It should come with a warning though, that states that this puzzle is impossible.
@Bruce: thanks for your code! I never heard about FOID before and unfortunately can’t find any information about it.
@Benjam: thanks for the kind words and congratulations on solving the puzzle on your own!
I’ve been playing with your program, and have gotten it to work in Python 3.1.3 with a few minor edits. It still returns the solution you got, so I’m assuming it’s still working properly (python is not my native language)
Version that works in 3.1.3:
http://36cube.pastebin.com/KwRLEhA4
I am going to continue to edit the program to see if I can force it to find all possible solutions to the puzzle.
Thanks Benjam for the 3.x version. I’m currently running 2.x, but I’ll look into it and try to make it compatible with both versions.
So after a late night and writing my own program to solve the cube using a different method, I have found that the puzzle has 4 unique solutions, with any other solution just being a color swap of the original 4 solutions.
My program is here: http://36cube.pastebin.com/qBYVWxxY
I first discovered that there are only 2 solutions for the ‘special’ colors (for me: Yellow and Orange), and funnily enough, they both have the same footprint, which makes solving the rest a little easier: just solve for one set, and multiply end value by 2.
My next color was Red, and it has 8 unique solutions. I sorted them and gave them each a letter A-H.
I then solved Green for each of the 8 Reds and found that although it has 3 solutions for each Red, it only has 8 unique solutions, with each of them being identical to the original Red 8, so I also labeled them with A-H.
This continued with the Blue and Purple colors, each having 8 unique solutions, and after finding the combinations that work together, I came up with 2 unique solutions: ACFH and BDEG. (see my code for what those letters actually mean)
And when multiplied by the original 2 Yellow and Orange solutions, that gives us a grand total of 4 solutions.
If anybody finds any other solutions that are not in my set of 4, please let me know.
I had fun doing this (lost some sleep, but who doesn’t when doing this kind of stuff), thanks for the inspiration.
1 jan 2011. My turn to try this. Indeed it is soon clear that the amount of possibilities seems overwhelming. Ignoring the mechanical irregularity and starting with one colour at any point, there are -as it turns out-4 different ways to finish that colour. So there are 6×4 different ways to sove the first colour. Though I did a brave attempt to find these manually I missed 3 of them, so I wrote a program in matlab to find the remaining ones. More programming showed:
24 Solutions with 1 colour
120
160
30
0
0
1 jan 2011. My turn to try this.
Indeed it is soon clear that the amount of possibilities seems overwhelming.
Ignoring the mechanical irregularity and starting with any colour at any point, there are -as it turns out-4 different ways to finish that colour. So there are 6Γ4 different ways to sove the first colour. Though I did a brave attempt to find these manually I missed 3 of them, so I wrote a program in matlab to find the remaining ones. Putting these combinations in partly transparent matrices, it is then possible to graphically prove there is no solution for 6 overlapping matrices.
These 24 1-colour solutions are with tower hight “5” in the upper left corner:
Positions Tower Hight
‘123564’ ‘513624’
‘142356’ ‘526431’
‘146532’ ‘524613’
‘153246’ ‘543261’
‘215643’ ‘431562’
‘235461’ ‘451326’
‘261435’ ‘462315’
‘264153’ ‘465132’
‘321654’ ‘612534’
‘345612’ ‘621543’
‘351426’ ‘642351’
‘354162’ ‘645123’
‘412365’ ‘136425’
‘416523’ ‘134652’
‘436251’ ‘154236’
‘463215’ ‘163245’
‘512634’ ‘236514’
‘532416’ ‘256341’
‘536142’ ‘254163’
‘563124’ ‘263154’
‘621345’ ‘312465’
‘624513’ ‘315642’
‘645321’ ‘321456’
‘654231’ ‘345216’
More programming showed:
24 Solution with 1 colour
120 Solutions with 2 colours
160 Solutions with 3 colours
30 Solutions with 4 colours
0 Solutions with 5 colours
0 Solutions with 6 colours
Though at the very beginning I considered there might be a mechanical trick at hand, because the shapes of the base look unneccesary complex and irregular, I decided to ignore that until proven that there is no solution without it. Proof is possible without computer assistance, so no reason yet to reject this approach as part of the game. Though it takes some patience, accurate and patient mortals are able to do this. Cheating with a computerprogram or googling euler is faster, fair and more convincing. Even better would have been some consolidation that a mechanical trick is required to solve this game. I remember looking for and interpreting the “complete set of rules of the game” again and again. What would “genius” mean ? Even if you start looking for a mechanical secret, it is hard to see because of the tiny details and the fact that all 36 base positions are in the same gray. Even if you know (discover by tryal) there are in the specimen you happened to buy two special locations, there is no affirmation that&how this is required to solve the puzzle. If you start with the two special towers in the right position. Does that allow to solve the puzzle without still sequentially trying too many combinations ?
It leaves me struggling with issues like: Is this fun?/Which hints could be added without spoiling the concept ?/ What percentage of the buyers will reach the ‘aha’ moment ?/How to cope with the disappointment of those who don’t ?/How can it be made more “fair”?/Can this be a comercial success ?/How should this thing be named: a game, a puzzle, a diabolic thing, a toy ?/
It is certainly not a game, as the rules are not sufficiently explicit. The rules are only reveiled after the solution has been found. I have another mechanical trick in mind involving a saw, that just as well should be part of the set of possible solutions.
Apparently my overall approach is way too serious. In an uncomfortable manner, it does not fit in my way of thinking. This experience reveils a rainbow of possiblities challenging one to try everything completely different in the future.
I did have the promised ‘aha’ moment. It was instructive, but I’m still not sure I found it that rewarding. I perceive no real solution, but an intriguing quest for the holy grail. This is an interesting piece of engineering, but it does not belong in a toy store.
After further tinkering with my program, I have taught it to output the 4 unique solutions to the puzzle.
Here is my script (based on and inspired by the OP script but with heavy modifications): http://36cube.pastebin.com/KiJMjzTa
Run that on your box, and you end up with this…
[0] => ABCDEFFCDEBACFEBADEABFDCBDFACEDEACFB
[1] => ABCDEFFCBEDACFEBADEADFBCBDFACEDEACFB
[2] => ABCDEFCADFBEEFABCDFEBCDABDEAFCDCFEAB
[3] => ABCDEFCABFDEEFABCDFEDCBABDEAFCDCFEAB
I’ll leave it as an exercise to the reader to decipher what each of the letters represent, but I’ll give you a hint, the color/letter combinations are different for each solution.
Thanks Paul and Benjam for your valuable contributions. I feel like I should have made this a Wiki instead of a blog post.
@Benjam: out of curiosity, what was the reason you rewrote it in PHP?
Pingback: iohelix » 36 Cube
I rewrote it in PHP because Python is not my native language. I could have written it in Python, but it would have taken me quite a bit longer just to convert my thoughts into Python syntax. Nothing more.
I was actually in the process of converting my program into Ruby (another language I’m trying to learn) thinking that it would have better luck at actually completing a full run when I finally got my PHP program to behave a little better (not throw “out of memory” errors, and run in less than the time it took to cook a lasagna).
this is sucks. it had co
this game sucks it has a grade for that:… 10!!! it had cost me lots of manyand I can’t find out the solusoin! but thank you guys! you helped me al lot π
Daniel,
Hello. Thanks for the site. You write “orange tower of height 5 has to go to position (1,2) and the red tower of height 6 to (3,2) in my coordinate system.” But in your picture http://daniel.hepper.net/blog/wp-content/36cube_complete_solution-300×225.jpg, the position (1,2) is occupied by an yellow tower and position (3,2) is occupied by orange tower.
Did you mean to say, “yellow tower of height 5 at position (1,2) and orange tower of height 6 at (3,2)”.
Am I missing something?
Thanks for your help,
Thankyou, Daniel!
I finally solved this monster! Thanks so much for your site and the hints. I confess I ended up viewing all of the hints to work it out, but the colours on mine were different, and I just played around with my 5 and 6 high pieces till I found the two irregularities. From there it was a lot easier (or perhaps I was lucky)!
For the life of me I couldn’t find the “coordinate system” you mentioned, so “3,2” etc didn’t mean much to me. I later realised it is referred to in the solution picture, but of course I didn’t want to look at that! I’m sure it’s clear in the scripting, too, if you understand those things, but I couldn’t figure it out. Just FYI.
For others like me, the coordinate system seems to be as below. The corner that holds a 5-high tower is at (0,0).
(0,0) (0,1) (0,2) (0,3) (0,4) (0,5)
(1,0) (1,1) (1,2) (1,3) (1,4) (1,5)
(2,0) (2,1) (2,2) (2,3) (2,4) (2,5)
(3,0) (3,1) (3,2) (3,3) (3,4) (3,5)
(4,0) (4,1) (4,2) (4,3) (4,4) (4,5)
(5,0) (5,1) (5,2) (5,3) (5,4) (5,5)
Thanks again and feel free to remove parts of my comment if needed!
Hey my bro, first of all i thank to u to tell the solution of colur puzzle but i don’t get the total solution plz…..tell me an easy solution for it. Plz plz plz plz plz……
I’m an avid puzzler but not one who would seek out a math or computer solution. I just solve by logic and patience. My grandkids gave me this Christmas 2009 and I’ve been working on it off and on ever since. Frustrating? Yep! But I only now resorted to Googling for a solution. I’ve had 34 right a jillion times. The mechanical “trick” pieces both annoy me as “unfair” and make me feel a bit better about my inability to solve it. Anyway, it make a great toy for a toddler to play with her Grammie. I’ve probably been helping my little genius create new neural pathways while I’ve been pushing myself closer to insanity. π
I enjoyed this puzzle a lot, but I could never get past the 4th row and still make the puzzle work (and I tried for 2 years!). I was amazed that ThinkFun would put in a trick like that with the yellow 5 block fitting on a 6 block spot and the orange 6 block fitting on a 5 space. I liked the trick though and now I see why I could never figure out the puzzle before. Thanks for this page! π
I think your hint number four is incorrect. “Hint #4 (show): The two special towers are the orange one of heigh 5 and the red one of height 6.” The Red-6 and Orange-5 towers are identical their standard counterparts. I found it to be the Orange-6 and Yellow-5 that deviate slightly from the norm.
Based upon my inspection there are 4 abnormalities in the board/towers:
Base-1.2 is fatter than other same-height bases (compare with 3.4 or 0.5)
Base-3.2 is thinner at its bottom than other same-height bases (compare with 1.4 or 2.1)
Yellow-5 has an extra thick vertical line along its inside
Orange-6 has no/minuscule vertical line along its inside.
This allows these two pieces to fit on either of those bases (in addition to the other “correct” height bases).
Jeff, you are absolutely correct! The pictures and the program output were correct, but my hints were wrong for about two years now, although Chell pointed it out a year ago π
I’ve updated the post, thanks for letting me know!
Hah. I encountered this puzzle recently and I, too, wrote a python script to try to solve this….but turns out the puzzle is just a silly trick ;).
Here’s what I came up with. The simple test works so I assume the code would solve it if it wasn’t impossible.
http://pastebin.com/NwF6nTN6Edit:
The code had a bug, Spec asked me to update the link: http://pastebin.com/TM4efCJ6 Thanks, Spec!
– Daniel
My 10 year old solved it in less than an hour, and the second time, in less than 15 minutes. Go figure”
I think it’s a shame that there is a trick to find the answer. I spent more than 8 hours trying to solve it, finding every possible case.
I came to find that there were a problem with one of the -supposed- 5 height slot, but since I had a green 6 height tower with a fabrication defect, i thought that was just an other problem of fabrication.
After all that time spent on it, I has enough data wrote down on a paper to proof there were no solution, so I googled it and found this blog post.
I understood that this particularity with the 5 height slot wasn’t a mistake, so I retroed it, and, guess what? Another problem of fabrication caused my yellow 5 height tower not to fit in the 6 eight spot. So my only solution was to put a piece of paper in the yellow tower so that it would fit in the slot. But of course, there were not any chance for me to find that out without a solution …
So, yeah, next time, thinkfun should make something without tricks, especially if the trick may not work.
Besides, if it can be solved with computer assistance, what’s the deal with it? It’s a better experience for a programer to make a program to solve it than to ask a monkey brained guy to try every solution.
it makes me very easy to make the puzzle and make me to so happy to complete the puzzle and it was so happy to do it very easy.
Thank you so much! I wrangled with this problem for quite some time (getting up to 30 towers) before I switched to writing the code for it. But the computer said that there were no solutions. Without your hints, I would have never realized that those two fit into places that I didn’t think they could. Thanks!
I have been so stubborn about finding a solution to this problem. Yeah, of course I got to 34 a billion times, but the more times I attempted it, the more quickly I realized when my attempt was going to fall short. I have sat down and drawn it on paper and identified all the 1,2s that are across from 2,1s etc. and tried to solve it by resolving all of those conflicts first. As the 3rd anniversary of my receiving it approached (Christmas 2009), I thought of a new and obsessive solution strategy. Yesterday I started with a fixed 6 tower and found every possible arrangement of a single color from that fixed 6 tower. Then I went through and tried every single combination possible.
I laugh in the face at you who tried for 8 hours and then went to Google*. I have had this puzzle for 3 years with 5 different homes, 9 different roommates (one of whom’s now-husband solved it within 15 minutes when I was not home in 2009**). I have abstained from looking for any clues or programs (it just seemed less like cheating if I ran the “programs” by hand). I have explained the game close to fifty times to friends who have visited.
Finally, after exhausting every single combination yesterday and then hoping to stumble upon it somehow this morning, I rose my white flag. It took me three hints. The thing is, I’ve always thought that the 5 tower spot in the middle looked different, but rationalized that it was because it was on the inside. Even if I had accidentally put the trick tower on the correct trick base, I think I would have assumed it was a mistake and continued looking for a solution that didn’t exist. I just believed the rules were solid. I believed that this was like my rubik’s cubes or sudoku’s.
While satisfied that I am not stupid, I don’t know how I feel about the solution sitting in front of me. I’m pretty sure I’m disappointed. It’s not a puzzle, it’s a trick. The parameters were not what they pushed me to believe. I’ve got a traditional puzzle on my dining room table and I sure hope that the solution there doesn’t include pieces that overlap or require cutting or something.
I think I would have found it funny if I had gotten frustrated and Googled after a week or so of trying. Now I think I feel jipped. Thanks for the clues and for a place to vent my frustration like a crazy person who spent a ridiculous amount of time on a game with a punchline!
*I mean it wasn’t a constant obsession or anything, but I probably messed with it once or twice a month for 3 years with maybe 3 days of long hours of work.
**He recently told me in reference to the game: “just remember the game-makers are not your friend. they are evil” …fyi I didn’t get it!
We’re a gaggle of volunteers and starting a brand new scheme in our community. Your website offered us with useful information to work on. You have performed an impressive activity and our whole neighborhood can be thankful to you.
i still have a challenge, is this game the same as the block o game;the one with 6 colours on 6 faces of a cube that one should place the same colors together.quite challenging to me
I am thankful for the puzzle, if only because it helped me (again) overcome my aversion to (some say fear of) recursion programming. After a rather futile attempt with a random number generator, and many iterations of optimization (I enjoyed that process very much) I ended up with a very simple recursive algorithm that allowed me to watch the computer walk through every possible combination (I used VBA and Excel, mainly because of the visualization). I did notice the strange pairs of 2 and 3, 1 and 4, and 5 and 6 that made many solutions stop at 32 towers, but I thought it was just not yet right. (only much later did I think to search on the interwebs, finding this blog as well as the Wikipedia site about Euler’s 36 officers.
I looked at the matrix through the eyes of a Sudoku user, and found that there were only five areas of sorts that had the numbers from 1 to 6 in a 2×3 grouping, and that these areas did not have the same orientation. Would be fun to devise a sort of four dimensional Sudoku…
OK, I got 32 the first time I tried this, then I got 34 the next ten times I did it, and something started to bug me about it. I didn’t take the trouble to write a program, but I did spend a few hours with a pencil and a calculator, and realized that something was indeed amiss.
I have to say I found the “solution” to this puzzle disappointing. In effect the puzzle is deceptive, presenting as a problem in combinatorial logic, but in fact relying on the more or less chance discovery of an unspecified constructional anomaly. Operating from the given instructions the puzzle is insoluble; nothing in the instructions so much as hints that there is a mechanical “secret” to the puzzle. The only parameters presented as important are the colors, the heights of the towers, and the desired outcome — why would anyone go looking at the /insides/ of the towers?
In effect, it’s a little like being presented with an impossible entanglement puzzle (also called “nail” puzzles), and then being told that the “solution” is to hacksaw apart a particular bar in the puzzle and re-weld it after the puzzle is disassembled. Or like playing a game of chess and — just as you are about to checkmate your opponent — having him remove an outer shell from his bishop, revealing that is was really a disguised queen. Or like solving a crossword puzzle with acceptable answers for all the English-language clues, only to find that information has been witheld which specifies that all your answers were supposed to have been given in French.
I could think of a lot of ways to make conventional puzzles far more difficult, or even impossible, with similar ruses, which nonetheless violate the implied premise of the puzzle. As an exercise in a sort of scaled-down Sherlock Holmsian kind of detection, I suppose the 36-cube has a place. But really, it fails as a straight “logic” puzzle.
Somehow Devil’s Dice and Rubik’s Cubes manage to be as challenging without relying on hidden mechanical gimicks.
Urg. I had a fun time coding this puzzle up, but I was stumped when my program said it was unsolvable. It’s sitting on my coworker’s desk, so I was only working with the model of it I had in my head. I understand some of the wording on this puzzle instructions now, but I really think it should have said that this puzzle “may not be what it seems,” or something like that. Maybe that’s just me being mad at myself for not thinking of it.
I can confirm what other people have written: There are 0 solutions if you don’t swap the 2 trick pieces (yellow and orange). If you do swap them, there are 4 distinct solutions, times 4! permutations of the remaining 4 colors, giving 4 * 4! = 96 solutions.
This is based on writing a short and straightforward program in ECLiPSe (http://eclipseclp.org), which ran instantly. If you’re going to use a computer, why not use a language that has constraint satisfaction built into it? You merely have to state the constraints and you’re done. The ic_global constraint library in ECLiPSe includes powerful methods — more powerful than the ones people on this site have coded up — for ruling out values based on “alldifferent” and “occurrences” constraints. I teach a computer science course on this stuff. π
This infuriatingly devious puzzle is a worthy successor to the impossible 14-15 puzzle that swept across and beyond America in the 1880’s. http://www2.research.att.com/~aarcher/Research/15puzzle_book_rev.pdf
Thanks so much, without hints #4 and 5 I could have never found the answer ξ
which is that programming language.
I don’t think there are any “special” pieces… at least not in the set I got. I don’t think there are any trick towers, trick bases, or manufacturing anomalies. I’ll call the manufacturer and ask them.
If you look inside the “yellow 5” piece in my set, the inside lines look a little thicker than the lines inside the other pieces of the same length. BUT, the yellow 5 piece fits fine on *all six* of the bases of the right height. The orange 5 also fits on all six of the bases of the right height. Has anyone else verified that the yellow 5 piece is not supposed to fit on all six bases? ALL 36 of the bases in my set have deep grooves.