I am writing a program to solve a Rubik's cube, and would like to know the answer to this question.

There are 12 ways to make one move on a Rubik's cube. How many ways are there to make a sequence of six moves?

From my project's specification: up to six moves may be used to scramble the cube. My job is to write a program that can return the cube to the solved state. I am allowed to use up to 90 moves to solve it. Currently, I can solve the cube, but it takes me over 100 moves (which fails the objective)... so I ask this question to figure out if a brute force method is applicable to this situation.

If the number of ways to make six moves is not overly excessive, I can just make six random moves, then check to see if the cube is solved. Repeat if necessary.

  • 4
    $\begingroup$ Are you asking for how many distinct results are there after 6 moves? Or just for how many ways you can make 6 moves, regardless of their uniqueness? $\endgroup$ – Brandon Carter Nov 9 '10 at 19:07
  • $\begingroup$ I think we should assume we are looking for distinct configurations, since this makes the problem a lot harder/interesting and is more practical for the programming application. $\endgroup$ – Matt Calhoun Nov 10 '10 at 15:55
  • $\begingroup$ I'm editing the OP to give full details. $\endgroup$ – dfetter88 Nov 10 '10 at 20:36
  • $\begingroup$ Rather than brute forcing it you could try and implement a solving algorithm from the ones known until now. I'm sure there are some which can get down to less than 50 moves. For example this: ws2.binghamton.edu/fridrich/cube.html Just making random moves until it's done seems it could make lots of unuseful moves, and I guess the 90 limit moves needs some intelligent algorithm. $\endgroup$ – Beni Bogosel Apr 27 '12 at 9:04

12^6 is just under 3 million. So it would probably not work to randomly try six unscrambles. But it wouldn't be too hard to make a data file of all the positions and their unscramble twists if you can find a reasonable way to search it, like some hash function on a description of the position.

  • $\begingroup$ Creating a hash table of 3 million cube states and their respective solutions? Maybe not "difficult", but definitely a large task. $\endgroup$ – dfetter88 Nov 10 '10 at 22:34
  • $\begingroup$ But I think a computer can do it in not too much time. Loop over the possibilities for the moves, calculate the final state of the cube, calculate your hash function, store the solution in a table. I've done much more calculation than that for some of the Project Euler problems, though the program was simpler. $\endgroup$ – Ross Millikan Nov 10 '10 at 23:04
  • $\begingroup$ +1 because that is the most practical way to go about solving this problem (for up to 6 moves). $\endgroup$ – evgeny Sep 20 '11 at 5:40

There are 7,618,438 diferent positions after six movements according to this site, but they use face movements. By the way they show that the Rubik's cube can be solved in 20 face movements or less.

  • $\begingroup$ I think there may be more: that number excludes positions which can be reached in six moves but which can also be reached in fewer. $\endgroup$ – Henry Sep 25 '11 at 21:34
  • $\begingroup$ @Henry: You are right. actually the number I gave allows 18 legal moves while the OP ask for 12 (90 deg twists) so the number of different positions after at most 6 moves is a lot smaller: 1056772. Actually the method given by him (make six random moves until the puzzle is solved) fails for the 96696 positions after 5 moves if it does not take this into account. $\endgroup$ – Esteban Crespi Sep 26 '11 at 15:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.