5
$\begingroup$

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
    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?2010-11-09
  • 0
    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.2010-11-10
  • 0
    I'm editing the OP to give full details.2010-11-10
  • 0
    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: http://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.2012-04-27

2 Answers 2

3

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.

  • 0
    Creating a hash table of 3 million cube states and their respective solutions? Maybe not "difficult", but definitely a large task.2010-11-10
  • 0
    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.2010-11-10
  • 0
    +1 because that is the most practical way to go about solving this problem (for up to 6 moves).2011-09-20
2

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.

  • 0
    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.2011-09-25
  • 0
    @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.2011-09-26