<story><title>The Mathematics of the Rubik’s Cube (2009) [pdf]</title><url>https://web.mit.edu/sp.268/www/rubik.pdf</url></story><parent_chain></parent_chain><comment><author>perfect_wave</author><text>I&amp;#x27;ve been fascinated by the Rubik&amp;#x27;s cube for years after learning to solve one in 7th grade. I started to get back into it high school and dropped my solve times down below a minute. Then I continued in college and got down to 25 seconds average with a personal best of 15.15.&lt;p&gt;I created a 2x2 Rubik&amp;#x27;s cube in Java as my freshman final project for my second computer science class, but it was quite ugly.&lt;p&gt;Recently, I decided to take another look at implementing the cube - this time using Python. I also wanted a way to generate cubes and check if they were valid. The main representation of the cube is as a permutation group - a 48-tuple where each element in the tuple is unique. The solved cube is represented as (0, 1, ... , 46, 47).&lt;p&gt;Turns of the cube simply permute this tuple. To figure these all out I spent a lot of time with a cube covered in post it notes.&lt;p&gt;All of the stuff I implemented in the checking for valid cube comes from this stackoverflow post: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;math.stackexchange.com&amp;#x2F;questions&amp;#x2F;127577&amp;#x2F;how-to-tell-if-a-rubiks-cube-is-solvable&amp;#x2F;127627&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;math.stackexchange.com&amp;#x2F;questions&amp;#x2F;127577&amp;#x2F;how-to-tell-...&lt;/a&gt;&lt;p&gt;I&amp;#x27;ve had a lot of fun working with this cube as my personal project. I recently created a Django website and a RESTful API to display randomly generated cubes. Soon I&amp;#x27;ll be working on a data pipeline to process these random cubes and display them nicely.&lt;p&gt;I&amp;#x27;ve looked into working on a solution algorithm to implement Thistlethwaite&amp;#x27;s algorithm - &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;www.jaapsch.net&amp;#x2F;puzzles&amp;#x2F;thistle.htm&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.jaapsch.net&amp;#x2F;puzzles&amp;#x2F;thistle.htm&lt;/a&gt;. I think this will take me a while, but it should be doable. I haven&amp;#x27;t really though too much about implementing it, but I think the way to do it is to define what it is for each step to be completed and then BFS a graph of moves to end up in that state. If anyone has looked into this I&amp;#x27;d love some advice!&lt;p&gt;You can find the code I&amp;#x27;ve written on Github: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;elliotmartin&amp;#x2F;RubikLite&amp;#x2F;blob&amp;#x2F;master&amp;#x2F;Rubik.py&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;elliotmartin&amp;#x2F;RubikLite&amp;#x2F;blob&amp;#x2F;master&amp;#x2F;Rubik....&lt;/a&gt;</text></comment>
<story><title>The Mathematics of the Rubik’s Cube (2009) [pdf]</title><url>https://web.mit.edu/sp.268/www/rubik.pdf</url></story><parent_chain></parent_chain><comment><author>tuckermi</author><text>Is there a properly colorized version of this PDF floating around somewhere? In particular, I&amp;#x27;m wondering about this line that lies above a grayscale image:&lt;p&gt;&lt;pre&gt;&lt;code&gt;  For example, in the picture below, the red square is at FUR, yellow at RUF, blue at URF, and green at ULB&lt;/code&gt;&lt;/pre&gt;</text></comment>