20140629

GeoGebra Files for Twisty Puzzle Classification

In 2009 and 2010, I actually ended up making several more GeoGebra files for exploring the possible twisty puzzles. I don't think I ever actually published them, and they may not be 100% finished, but they definitely ought to be out in the wild. So here's a zip file with what I have: http://www.mzrg.com/filepost/GeoGebra_TPCP.zip

First, there are some 2D state diagram views. The files here are Tvv, Tee, Tev (that's all the T ones, since vertex and face turns are equivalent); Cee, Cvv, Cff, Cfv; Dff; Oee; and a partial Iee (there are so many Ie puzzles by themselves!). The display has one face of the polyhedron, and a 2D state diagram.

Second, and perhaps more interesting, are the files marked "Cview" etc. These display colored polyhedra with 6 sliders at once: two v, two f, and two e. I haven't actually done the work of classifying the puzzles, of course, but you can set up and view some pretty complicated things, and it's neat to play with the sliders and see how the puzzles change. The icosahedron one is the most complicated and does not completely work, but I haven't touched it in years and I don't remember what points and lines do what...

Speedsolving Posts: 2D State Diagrams

The posts here are from January 2009 and can be found in this topic: http://www.speedsolving.com/forum/showthread.php?8628

This is a topic on puzzle theory - specifically, it deals with the theory of symmetrical twisty puzzles. There's no real "theory" section in this forum but it doesn't belong in Off-Topic, so I've put it here so more people will see it. (This does have applications to speedcubing, in terms of solving gelatinbrain puzzles.)

So, as some of you may know, symmetrical twisty puzzles can be described by talking about the shape and the number of separate types of turns in each of the three basic categories (face turns, edge turns, and vertex turns) which are named around where the axis (which the pieces rotate around) points. A 3x3x3, for instance, is a cube with one type of turn (in the face turn category); in my categorization scheme that would make it type Cf (C for cube, f for face turn). The only other type-Cf puzzle is the 2x2x2, which has a deeper turn that just happens to line up with the turn on the opposite face. (The 4x4x4 and 5x5x5 have two face turn types, so they are type Cff. Similarly the 6x6x6 and 7x7x7 are type Cfff.) Note that I'm considering a 3x3 with slightly shallower or deeper cuts to be the same, because it has the same number and types of pieces and the exact same solution, so the only difference is in the shape of the pieces.

If we want to talk about symmetrical puzzles with only one type of turn, it's relatively simple, because we can describe the depth of the turn as a single number. But if we have two types of turns, we need two numbers: for instance, on a 5x5x5, if we imagine a turn of depth 0 to turn nothing and a turn of depth 1 to turn the entire cube, the two turns have depths 1/5 and 2/5. But it's hard to imagine exactly what numbers will give a certain puzzle, and which numbers will give a different one. So the question is this: how many possible puzzles are there of a given type, and, more importantly, how can we understand where one puzzle begins and another ends?


My answer to this is the 2D State Diagram. This particular one describes the Tvv-type polyhedra (that is, tetrahedra with two vertex turn types - note that a vertex turn and a face turn are the same thing on a tetrahedron). The two axes correspond to the two depths of turn, and each one goes from 0 (no part of the puzzle is turned) to 1 (the entire puzzle is turned).

So what are the lines in the diagram? Each one represents some kind of puzzle which only exists for a very specific set of turn depths. The diagonal line from the top-left to bottom-right represents the degenerate case where the two depths are the same (so, type Tv puzzles with only one type of cut). Each of those big spaces between the lines, however, is a specific puzzle, which remains the same anywhere in that space. There are also puzzles on the lines themselves, and each place where lines intersect is another puzzle, albeit a very specific one because even a small change in either of the two depths will make it different. The Pyraminx, for example, is located at the intersection of a horizontal or vertical 2/3 line, and the diagonal line from bottom left to top right.

Finally, I have prepared an interactive simulation (!) of this state diagram, so that you can play with it to see how it works out. It uses the GeoGebra geometry program, which I'm really fond of. You can download it from my website. To use it, just move the red point around inside the square (use the white pointer symbol to move a point around), and watch how the puzzle changes when you cross or move along lines.



I wrote up the state diagram for type Dff puzzles (dodecahedra with two different depths of face turns). The Gigaminx is from this category. Note that this category is MUCH more complicated than the Tvv type I showed in the first post - I'm not completely sure of the count, but I think there are a whopping 98 puzzles of this type!!! I'm really glad I made an interactive simulation, because there is no way I'd ever want to draw all of them out by hand. You can also see that there are 7 puzzles along the diagonal (these are the Df type puzzles).


In the image, I have marked a few lines as green. Those lines are distinctive because, although they separate different puzzles, the puzzles on the lines themselves are equivalent to one of the puzzles on one side of the line. For instance the Megaminx and Supernova, although they look like they might different puzzles, function exactly the same way.The full way to count the number of puzzles is:
- Any open space is a separate puzzle, although you have to make sure to only count puzzles on one side of the main diagonal (for everything here).
- Any line segment (i.e. a line between two intersections) is a separate puzzle, except (i) if the line segment is green; (ii) if the line segment is on the main diagonal; (iii) if the line segment is on the top or left. The second and third cases remove puzzles with essentially only one depth of turn, and the first removes a puzzle that looks like a different puzzle but isn't.
- Any intersection of lines is a separate puzzle, as long as (i) it isn't on the the top or left or the main diagonal, and (ii) it has at least two black lines crossing it.
The Tvv case gives 11+10+2 = 23 puzzles like this (I think). Note that, although I haven't added it in yet, the halfway lines and the bottom-left-to-top-right diagonal in the Tvv diagram should also be green. It's only important to know what lines are green and what are not when you are counting puzzles, though.

Finally, there is a GeoGebra simulation of this, although I have made the two-dimensional slider much larger to compensate for the complexity. That way you can really see what lines you are crossing.



For each polyhedron there are actually six types of second-order puzzles: the familiar vv, ee, and ff, but also fv, ev, and ef. The first three use only one type of cut, so they're symmetrical, but the other three use two different types of cuts and have much more complicated drawings. As an example I've made one for the Cfv group. There are around 50 puzzles in this group, most of which have probably never been seen before. I hope to eventually make an interactive simulation of all 5*6 categories of second-order regular twisty puzzles. I imagine there will be over 1000 puzzles in total!

TPCP: Type Ce

(Old post from 2008)

These puzzles are rather complicated and there tend to be a lot of them, which tends to be the case with edge-turning types. They are also quite difficult to produce in real life, although one or two of them have actually been created. These are the first really complex puzzles we've seen. Note that these puzzles are related to type Oe.

Puzzle Ce1:
Gelatinbrain Number: n/a
Common Name: n/a
Types of Pieces: 6 fixed centers, 12 trivial edges, 24 triangular centers in 4 orbits, 8 corners.
Solution: n/a
Puzzle Ce2:
Gelatinbrain Number: 3.3.1
Common Name: Helicopter Cube, Bevel Cube
Types of Pieces: 24 centers in 4 orbits, 8 corners.
Solution: n/a
Puzzle Ce3:Gelatinbrain Number: 3.3.2
Common Name: n/a
Types of Pieces: 6 inner centers, 24 pentagonal centers, 24 inner triangular centers in 4 orbits, 48 outer triangular centers in 2 orbits, 12 edges, 8 corners.
Solution: n/a

Puzzle Ce4:Gelatinbrain Number: 3.3.3
Common Name: n/a
Types of Pieces: 6 inner centers, 24 inner triangular centers, 48 outer triangular centers in 2 orbits, 12 edges, 8 corners.
Solution: n/a
Puzzle Ce5:Gelatinbrain Number: 3.3.4
Common Name: n/a
Types of Pieces: 6 inner centers, 24 adjacent triangular centers, 24 diagonal triangular centers, 48 tetragonal centers in 2 orbits, 12 edges, 8 corners.
Solution: n/a
Puzzle Ce6:Gelatinbrain Number: 3.3.5
Common Name: n/a
Types of Pieces: 6 inner centers, 24 inner triangular centers, 48 outer triangular centers in 2 orbits, 12 edges, 8 corners.
Solution: n/a
Puzzle Ce7:
Gelatinbrain Number: 3.3.6
Common Name: n/a
Types of Pieces: 6 inner centers, 24 pentagonal centers, 24 inner triangular centers, 48 outer triangular centers in 2 orbits, 12 edges, 8 corners.
Solution: n/a
Puzzle Ce8:Gelatinbrain Number: 3.3.7
Common Name: Little Chop
Types of Pieces: 24 centers.
Solution: n/a

20130519

Speedsolving Posts: A Huge Cube Method

I really put a lot of thought into making a method for every part that would scale well - remain easy even with extremely large cubes. And when I say extremely large, this is the method I solved the 111x111x111 with. It's probably still useful on smaller huge cubes (like 20x20x20) but when you can see a whole face at a time, and count layers, some parts can be done quite a bit faster.

From http://www.speedsolving.com/forum/showthread.php?42084:

First, some basics. I solved most faces in two steps: "cleaning" and finishing up. The idea of cleaning a face is to solve as many pieces as possible as quickly as possible. After that step, which typically solves 50% or more of the face, I can go through the longer step of putting each of the remaining pieces of that color into the center, one at a time or in blocks. As for notation, I'll be using something like SiGN (xR means turn the xth layer on the R face, or the first layer if x is absent), except that I'll also be using lowercase p and q as variables to better describe classes of commutators.

1) Solve the edges. I do edges first for large computer cubes because reduction (centers first) scales badly, and because having solved edges actually lets me use them to keep track what part of the puzzle I'm working on. A lot of the time I do a pR' move or something to start working on a row of one center, and the incorrect edge reminds me which row it is. With so many layers it's impossible to do it by counting or visual inspection alone. Anyway, for the first 9 edges I did basically the same thing as with other cubes. For the last three edges I used moves like pR U2 pR' (for the 10th edge only), pR2 U2 pR U2 pR2, and pR' F U' R F' U pR. Instead of solving one orbit at a time like on my keyboard solves, I went for an edge at a time and solved pieces in the same position in groups. For instance on the last 3 edges there are only 6 possible positions for each piece, so with 109 pieces in each edge there are a lot of pieces in the same position which can be solved in the same way, all at once, by replacing a pR move with a whole bunch of slice moves along the same layer. This took about an hour in total.

2) Clean the first center. I used white. Hold the white face on U, and then for each row (perpendicular to the F face), we do something like this: move white centers out of the way on the corresponding row on F using pU moves, then qR', then solve as many white centers into that layer as possible using only pU-axis moves, then qR. By "solve as many white centers ... as possible" I mean I basically look at that row on R, B, and L, and for every white center I see, move that layer the right amount. Note that these rows are vertical, which is something I did because of the way Iso is set up (when zoomed in, it's easy to scroll through a vertical row on F or R using just the up/down arrow keys). You could do any of this from a different angle if you wanted. A typical layer might be something like (2U 4U 7U ...) 3R' y (3U 6U 8U ...) y (U2 4U2 8U2 ...) y (2U' 3U' 4U' ...) y 3R. Each center on white corresponds to 5 stickers, and a white center on any of those 5 stickers means the center gets solved. I think roughly 60% of the center ends up solved.

3) Finish the first center. Now I can hold the center on F and look at R. If I see a white center anywhere, I can solve it using pF qU' pF' qU. Four-move commutators are fast! However, I can't just do that randomly, but instead, I have to do it so that the center moves into a place on the white center that didn't have a solved center already. To check if there is room I do qU' qU, and if there isn't, I rotate the white center and repeat as necessary. You'll see this type of checking often as I continue. Note that this requires centers to be adjacent, and since we're solving from all five, we have to swap two adjacent centers. On the 5x5x5 the algorithm for this is 2R U2 2R' 2L' U2 2L U 3R U' 3R', which you then have to properly undo later.

4) Clean the second center. I used yellow. This is the same idea as the first center - hold yellow on U (so, white on D) and proceed row by row. However, instead of using pR' moves to move a row onto the F face, I used pR U2 pR' moves. This does solve the layers in a different order, but that's okay. For the middle layer I used U pR U' pR'. Each center on yellow again corresponds to 5 stickers (any yellow piece in one of those 5 places means that piece gets solved), and I think roughly 67% of the center ends up solved after this.

5) Finish the second center. Again I swap yellow with another center, so I can hold yellow on F, white on U, and the solved center on R. The commutator this time is pF2 qU' pF2 qU (or pF2 qU pF2 qU' for the mirror). Since I can't just do x rotations and keep going, I have to do some extra center swaps to bring each of the four non-white/yellow centers into the right place. There was also plenty of the qU' qU moves to check if there's room to put a piece.

6) Clean the third center. I used orange (for visibility). Place orange on U and white/yellow on L/R. Now we can do pU2 moves but not pU moves. So I do something like the white center cleaning, where I do pU2 moves to move orange centers out of the way, then a qR' move to bring the row down, then do more pU2 moves to solve as many orange centers as possible, then a qR move. A typical row clean might look something like (2U2 4U2 7U2 ...) 3R' y2 (2U2 3U2 4U2 ...) y2 3R. Each center on orange corresponds to only 3 stickers, solving about 57% of the center.

7) Solve the third center. This is just like what I do on yellow, with the pF2 qU' pF2 qU moves, since they keep U and D solved, and again I use plenty of qU' qU moves. In fact, there are fewer center swaps than last time, since the D center can stay where it is.

8) Clean the fourth center. As a general rule you want this to be adjacent to the third center, so I chose green (since it was brighter). Unfortunately the cleaning setup I use only really lets us clean a center opposite of the third one, so we place orange on D and green on F, then swap F and U, and begin. The cleaning itself is just like the third center except, again, we use pR U2 pR' rather than pR'. Each center on green corresponds to 3 stickers, solving about 70% of the center.

9) Solve the fourth center. Things got pretty messy here and it took a lot longer than I expected; most of that was probably because I can't use 4-move commutators any more and thus had to switch to 8-move ones. I held green on F and orange on D, and then did commutators like [pU2, qR U qR']. In fact I did all of the pU2 moves ahead of time, so that for each row I could immediately do a qR move for each piece I wanted to solve (using pU2 pu2 to check), and then solve many piece in that row at once. The problem, apart from the large number of qR moves, is that I couldn't stray too far from U, because I had to do U turns. So I ended up having to stay on the top half of F, and doing a lot of F and B moves to be able to solve things. Oh yeah, and once I got rid of all the green pieces on B, I had to swap U and B and do it again.

10) Solve the last two centers. No cleaning here - I couldn't see any way to quickly solve most of the center. I held the two centers on F and R, and solved one vertical row of R at a time. The commutator looks something like [pU', R' qU' R]. Basically, I would do a pU' for every center in that row that I could solve, then do the R' qU' R, undo the pU moves, and finish the commutator. Then rotate F and go again - in at most 4 separate block commutators I would solve all pieces in that row. (With one caveat - if the x-center closer to D is unsolved, this commutator won't work on it. When that happened I had to do it individually.) After each finished row I did a qF2 move to get it out of the way and make the next row easy to see; since I had blue on R, I ended up with a whole bunch of green rows on that face. Since I had to be in view of the F-R edge to do R tuns, I only did the first half of the blue face before undoing all those green rows, turning that center by 180 degrees, and doing it again.

And that's it! It might sound kind of complicated, but each step is pretty straightforward once you know what's going on, and I spent the vast majority of my time doing the same kind of thing over and over. The low move/piece count was mostly due to the cleaning stages, where I could solve a ton of pieces in one or two moves each. Those stages would have an absurdly low movecount in axial turn metric / snyder metric, with something like 400 moves solving 5000+ pieces. And in fact, you can do a cleaning stage on the same center more than once - just turn the center to a different orientation and continue. With four of these cleaning stages you should be able to solve every piece on the affected centers. I didn't do this because the returns do diminish, and so I don't think it's worth it to clean more than once for any individual center. Maybe for the fourth center it's worth it though! 

20130515

Speedsolving Posts: Parity Errors

I'm going to be posting some of my longer posts on speedsolving.com here. I think I've written some very useful things down there, but it's a kinda big forum (and I've made a lot of posts!) so it's easy for stuff to get lost. The plan is to copy some of them here, with a link to the original post (for those who want to view the thread). Here goes...


From http://www.speedsolving.com/forum/showthread.php?p=852756:

In speedcubing there are two things we think of as parity: "reduction parity" and mathematical parity. Some things we call parity fall into both categories, but others only fall into one of them, and you will often see people disagree on whether certain things count as parity, because they disagree that both of these two definitions are valid.

Reduction parity occurs when you try to reduce the puzzle so it can be solved by a constrained set of moves, putting it into some subset of the positions. However, you can often reach a position which seems like it is in your subset, but which is actually not, and to solve the puzzle you have to briefly go outside your constrained set of moves to bring the puzzle back into the subset you want. Typically the number of positions you can encounter is some small multiple of the number of positions you expect. The obvious example is PLL parity in 4x4x4: all the centers and edges are properly paired, so you expect to be able to finish the puzzle with only outer layer turns, but this isn't quite possible. OLL parity falls under this definition too (so the reduced 4x4x4 has four times as many positions as you would expect). Square-1 parity also falls under this definition - your constrained set of moves are any moves that keep the puzzle in cubeshape. BLD parity is not of this type (the solver has not reduced the puzzle).

Mathematical parity is based on the idea of the mathematical definition of an odd permutation. Basically, at least one orbit of pieces has an odd permutation, and thus cannot be solved with just 3-cycles. You see this type of parity crop up in blindfolded solves, because blindfolded solvers attempt to solve most or all of the puzzle with 3-cycles and thus an odd permutation is very noticeable. OLL parity on 4x4x4 and Square-1 parity can also be thought of as this way, as they originate from some kind of 2-cycle. PLL parity on 4x4x4 is not of this type (it can be solved with 3-cycles).

20090326

Pixeling, Or, Putting Hearts on Your 7x7x7


Pixeling is a technique that I discovered to make certain types of pretty patterns on NxNxN cubes. It affects the centers, only, in a large series of 3-cycles. Specifically pixeling is used to generate patterns where a certain shape of centers is moved in two 3-cycles, from (say) the U->R->F faces and D->L->B faces, in a very efficient way. An example is the hearts picture at left, which can be created with just 11 block turns (i.e. turns of a group of adjacent slices all in the same direction)! If you ask me that's ridiculously efficient.

Here's the motivation (with pictures below). You'll need to try these patterns out to understand where pixeling comes from. First we start with the basic center pattern on the 3x3:
M E' M' E.
This just moves the centers around. We can also do this on the 5x5 (or any NxNxN cube, really):
2-4r' 2-4u 2-4r 2-4u'.
But on the 5x5 there are related patterns. The following show that you can move blocks of centers around (or a single center), and that the blocks don't even need to be contiguous:
2-3r' 2-3u 2-3r 2-3u'
(2R' 2L) (2U 2D') (2R 2L') (2U' 2D).



You can basically now make any pattern we want using a series of these block maneuvers, and the efficiency on those patterns is not bad at all. But we can do better. Try this maneuver on a 5x5, which creates the staircase pattern to the left:
2R' 4U 3R' 3U 4R' 2U 2-4r 2-4u'
This is the most introductory example of pixeling. Do you see what is happening there? It's a bit tricky, but try to keep track. Every time we do a U turn, we are basically storing a line of three centers on the L-face. Together, those lines make the entire center (and the shape that we want to pixel in, which is inside it), which is done when we make the 2U move. Then we simply return the vertical slices to their original position and move all the horizontal slices back. This can also be done using the vertical R slices to store the center lines in the D face, of course, and some patterns turn out to be more efficient one way than the other, so it's important to try both ways.


We're not limited to just R' turns, though - sometimes we want to use R slices to remove a center from our shape. To the left is an arrow shape for the 7x7 that can be created like this:
2-6r' 4U 2R 2L' 3U 3R 3L' 2U 2-3d' 4R 2-6u'
Notice that before every time we do a turn of a horizontal slice in the U direction, we set up the R slices so that only the ones which contain the centers we want in our shape are misaligned. Also, this time we didn't do the U slices in order, but this is also fine; the pixeling maneuver still works.

The end result is that there are many, many ways to pixel any given shape. It will take a bit of trial and error to do a shape efficiently, but the efficiency can be really amazing. If you're making a shape yourself, remember to try both directions (vertical and horizontal slices to set up the shape) and a few different orders of slices. If one of those cycles in the wrong order that you want, you can just invert the pattern. Finally, let's return to that heart pattern. Here's the best we can do for the heart pattern with blocks and with pixeling, respectively:
Blocks: (2R' 2L 3-4u 2R 2L' 3-4u') (3R' 3L 2-5u 3R 3L' 2-5u') (4R' 3-6u 4R 3-6u') (16 moves)
Pixeling: (3-4u 2R' 2L 2-3d' 4R' 2D 2U 3R' 3L 2-5u' 2-6r)' (11 moves)

Happy patterning! Thanks go to Werner Randelshofer for the cube animation applets and to Joël van Noort for his NxN ImageCube (which I used to generate the images you see here).

20090122

How to Solve 6x6+ (on hi-games)

Let's start by saying that I don't really like the "grip shift" controls. Thus, the way I solve big cubes is designed to be somewhat fast (although I'm sure there are faster ways out there) while changing the grip as few times as possible. As it turns out, reduction is the best method for this.

Centers

Obviously, centers require lots of face turns, but also lots of slice turns. So how can we solve them with a small number of grip shifts? As it turns out, we can do a pretty decent job using U, F, D, B, and any r and l slices. Only build and insert rows on the x axis (faces U, F, D, and B), and although this uses a lot of cube rotations it isn't too restrictive. Besides, you can only see U and F anyway. So then the question is what slices we need. Here's how I do it:
6x6 and 7x7: shift both right and left in once. Now you can do all of the usual moves (3r, 3R, 2r, 3l, 3L, 2l) with each hand.
8x8 and 9x9: shift right in twice and left in once. The left hand can do 2l, 3l, 3L and the right hand can do 4r, 3r, 4R.
10x10: shift right in three times and left in once. The left hand can do 2l, 3l, 3L and the right hand can do 5r, 4r, 5R. Note that 4R is actually not possible (except by doing 4r y2 3l'), so you should try to work around this when building centers.

Note that in the cases where the right and left hands are asymmetrical, I really suggest pairing from the inside out, since slice moves are not always possible or convenient. The goal is to avoid cube rotations so you can spend all your time actually doing moves. As with other large cubes, by the way, I really suggest pairing up 1x(n-1) rows of centers, and putting them together as soon as they are done.

Edges

My method for edges is worse, but it still works pretty acceptably. The way I do this is to use the D slice to do slice moves and pair up edges on the E slice, since I tend to use the other slices to move edges around. Currently I use WO for moving the D slice in (up) and SL for moving it out (down), but you can use anything you want. Then I pair up edges multislice-style: I start by pairing up the innermost pieces, and then move out. Note that it's also possible to just use the L slice (and pair up edges on M), and use only RUDFB moves to insert edges, but personally this doesn't feel natural to me so I don't use it.

My method of pairing up 5x5-style edges is freeslice (the bigcubes.com) style, which means I pair up one edge group (of 3 pieces) at a time and don't fix centers until I have eight edges paired and out of the E slice. Since this normally requires U moves, I end up doing a LOT of z2 moves. As I said, this isn't the best way to pair up edges, but it works. Note that if you end up with a parity case you are better off temporarily moving the edges to the M slice, shifting R and L in by an appropriate amount, and doing the parity normally. This is possible because you don't need to do single-layer R and L turns.

So I pair up edges in two steps on 6x6 and 7x7, three steps on 8x8 and 9x9, and four steps on 10x10. On the last step, I just use the standard 5x5 pairing (which is on M), because if I have the right and left grips on the far outside of the cube I can do slice moves AND R and L turns.

3x3

The 3x3 stage is pretty standard, press space and just solve it normally. On even cubes there are parity issues to deal with. The way I do this is, for OLL parity, shift L and R in until the r and l slices turn half of the cube, and then the algorithm is:
r U2 x r U2 r U2 r' U2 l U2 r' U2 r U2 r' U2 r'
and for PLL parity, just shift R in so that the r slice is halfway, and then do:
z r2 z' r2 U2 r2 y2 L2 y2 U2 r2 z r2 z'.
There are a lot of cube rotations so it looks longer than it is, but it's still kinda slow.

So, good luck with bigcubes! Make sure to give each one a try, because for a lot of them you'll get on the top 100 list if you solve it, no matter how long it takes.