twentyseven-0.0.0: src/Rubik/Cube/Facelet.hs
{- |
Facelet representation
Facelets faces are unfolded and laid out like this:
@
U
L F R B
D
@
Faces (or colors) are ordered @U, L, F, R, B, D@.
A Rubik's cube is a permutation of facelets numbered as follows:
> 0 1 2
> 3 4 5
> 6 7 8
>
> 9 10 11 18 19 20 27 28 29 36 37 38
> 12 13 14 21 22 23 30 31 32 39 40 41
> 15 16 17 24 25 26 33 34 35 42 43 44
>
> 45 46 47
> 48 49 50
> 51 52 53
-}
module Rubik.Cube.Facelet (
-- * Facelet permutation
numFacelets,
Facelets,
facelets,
fromFacelets,
-- * Colors
Color,
colorOf,
colorChar,
-- * Color list
ColorFacelets,
colorFacelets,
fromColorFacelets,
colorFaceletsOf,
-- * List conversions
fromFacelets',
facelets',
fromColorFacelets',
colorFacelets',
colorFacelets'',
-- * Pretty conversion
stringOfFacelets,
stringOfColorFacelets,
stringOfColorFacelets',
-- * Facelets corresponding to each cubie
-- | The first letter in the name of a cubie is
-- the color of its reference facelet
-- (illustrated at @http://kociemba.org/math/cubielevel.htm@).
--
-- Corner colors are given in clockwise order.
--
-- Corners are lexicographically ordered
-- (@U>L>F>R>B>D@).
--
-- Edges are gathered by horizontal slices (@U, D, UD@).
-- ** Centers
centerFacelets,
-- ** Corners
cornerFacelets,
ulb, ufl, urf, ubr, dlf, dfr, drb, dbl,
-- ** Edges
edgeFacelets,
ul, uf, ur, ub, dl, df, dr, db, fl, fr, bl, br
) where
import Rubik.Cube.Facelet.Internal