Note: These are the “slides” for the 2019 NEScala presentation You might rather see presentation-sbtb-2021.org
- Stewart Stewart from New York, New York
- Consultant at Inner Product
- Math nerd + puzzle geek + programmer
- Twitter: @stewSqrd
- https://github.com/stewSquared/twisty-groups
- Inverse: A’ reads “A inverse”
- Commutator: A B A’ B’
- Conjugate: C Algorithm C’
- Invent a Commutator
- Use a Commutator
- ???
- Profit!
- Practical? Maybe.
- How math informs solution
- Have fun with Math + Puzzles + Programming
- Ask questions!
trait Group[A] {
def identity: A
def inverse(a: A): A
def combine(a: A, b: A): A
}
- Consider Finite Groups
- Inverse && complete =>
- is a bijection
- a permutation
- isomorphic to a permutation group!
- Permutations decompose into disjoint cycles
- Cycles decompose into sum of swaps
- 3-Cycles are even
- Even/odd, positive/negative, true/false
- A B A’
- A: setup moves
- B: useful alg
- A B A’ B’
- Measure of non-abelian-ness
- Even permutation
- Minimal intersection is a 3-cycle
- Center stickers are stationary
- “Homomorphism into S48”
- ie., permutation of 48 points
- Difficult to see structure
- Array[Int] contains many illegal scrambles
- Stickers cluster on pieces
- 8 corners, 12 edges, 1 core
- Edge and Corner pieces are distinct
- Centers pieces are fixed to core
- 8! * 3^8 * 12! * 2^12 ???
- Not quite…
- Each corner has 3 orientations
- Each edge has 2 orientations
- Orientation definitions are arbitrary
- <U, D, R, L, F, B>
- Each is a paired 4-cycles
- Edge and corner parity are synced
- Orientation of final piece is fixed
- CO: Corner Orientation
- CP: Corner Permutation
- EO: Edge Orientation
- EP: Edge Permutation
- Orientation is Normal
- Semidirect product of Orientation and Permutation
- Or subdirect product of Edges and Corners
- Orientation flips are paired
- 3-cycles of edges/corners
- or swap 2 edges and 2 corners
- (8! * 12!) * 3^8 * 2^12 (overcounts)
- (8! * 12!)/2 * 3^7 * 2^11 (corrected)
- <U2, D2, R2, L2, F2, B2> - Half-turn subgroup (even perm)
- <U, D, R2, L2, F2, B2> - CO preserved
- <U, D, R, L, F2, B2> - EO preserved
- <U, D, R, L, F, B> - Full Rubik’s Group
- Demo
- CFOP: Cross, F2L, Orientation, Permutation
- Memorize Cycles
- eg. CubeState
- Commutators!
- No demo. (sorry)
https://github.com/stewSquared/twisty-groups/src/main/scala/twistygroups/cube/model/CubeState.scala
https://github.com/stewSquared/twisty-groups/src/main/scala/twistygroups/cube/algs/Alg.scala
https://github.com/stewSquared/twisty-groups/src/main/scala/twistygroups/example/CornerComms.scala
- Cats (Typeclasses): https://github.com/typelevel/cats
- Spire (Math): https://github.com/typelevel/spire
- AlaSc (Computational Group Theory): https://github.com/denisrosset/alasc
- Cuble.js (bluetooth): https://github.com/cubing/cuble.js
- Twisty.js (cube animations): https://github.com/cubing/twisty.js
- A Book of Abstract Algebra by Charles C. Pinter
- Ryan Heise’s puzzle page: https://www.ryanheise.com/cube/theory.html
- Macky’s blindsolving page: https://cubefreak.net/bld/3op_guide.php
- Rubik’s Cube Group at Wikipedia: https://en.wikipedia.org/wiki/Rubik%27s_Cube_group
- Group Theory and the Rubik’s Cube: http://www.math.harvard.edu/~jjchen/docs/Group%20Theory%20and%20the%20Rubik’s%20Cube.pdf
- Intuition for SemiDirect Products http://rwoodley.org/?p=1550