Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module Rubik where
- import qualified Math.Algebra.Group.PermutationGroup as G
- import qualified Data.List as L
- data Dir = U | D | L | R | F | B deriving (Enum, Show, Eq)
- data Face = Tri Dir Dir Dir | Pair Dir Dir deriving (Eq)
- instance Ord Dir where
- a `compare` b = fromEnum a `compare` fromEnum b
- instance Ord Face where
- compare a b = compare (L.elemIndex a faces) (L.elemIndex b faces)
- instance Show Face where
- show (Tri a b c) = show a ++ show b ++ show c
- show (Pair a b) = show a ++ show b
- faces = [ Tri B L D, Pair B D, Tri B R D,
- Pair B L, Pair B R,
- Tri B L U, Pair B U, Tri B R U,
- Tri L D B, Pair L B, Tri L U B, Tri U L B, Pair U B, Tri U R B, Tri R U B, Pair R B, Tri R D B, Tri D R B, Pair D B, Tri D L B,
- Pair L D, Pair L U, Pair U L, Pair U R, Pair R U, Pair R D, Pair D R, Pair D L,
- Tri L D F, Pair L F, Tri L U F, Tri U L F, Pair U F, Tri U R F, Tri R U F, Pair R F, Tri R D F, Tri D R F, Pair D F, Tri D L F,
- Tri F L U, Pair F U, Tri F R U,
- Pair F L, Pair F R,
- Tri F L D, Pair F D, Tri F R D]
- b = G.fromCycles [[Tri B L D, Tri B R D, Tri B R U, Tri B L U]
- ,[Tri D L B, Tri R D B, Tri U R B, Tri L U B]
- ,[Tri L D B, Tri D R B, Tri R U B, Tri U L B]
- ,[Pair B D, Pair B R, Pair B U, Pair B L]
- ,[Pair D B, Pair R B, Pair U B, Pair L B]]
- u = G.fromCycles [[Tri U L B, Tri U R B, Tri U R F, Tri U L F]
- ,[Tri B L U, Tri R U B, Tri F R U, Tri L U F]
- ,[Tri L U B, Tri B R U, Tri R U F, Tri F L U]
- ,[Pair U B, Pair U R, Pair U F, Pair U L]
- ,[Pair B U, Pair R U, Pair F U, Pair L U]]
- f = G.fromCycles [[Tri F L U, Tri F R U, Tri F R D, Tri F L D]
- ,[Tri L U F, Tri U R F, Tri R D F, Tri D L F]
- ,[Tri U L F, Tri R U F, Tri D R F, Tri L D F]
- ,[Pair F U, Pair F R, Pair F D, Pair F L]
- ,[Pair U F, Pair R F, Pair D F, Pair L F]]
- l = G.fromCycles [[Tri L D B, Tri L U B, Tri L U F, Tri L D F]
- ,[Tri D L B, Tri B L U, Tri U L F, Tri F L D]
- ,[Tri B L D, Tri U L B, Tri F L U, Tri D L F]
- ,[Pair L B, Pair L U, Pair L F, Pair L D]
- ,[Pair B L, Pair U L, Pair F L, Pair D L]]
- r = G.fromCycles [[Tri R U B, Tri R D B, Tri R D F, Tri R U F]
- ,[Tri B R U, Tri D R B, Tri F R D, Tri U R F]
- ,[Tri U R B, Tri B R D, Tri D R F, Tri F R U]
- ,[Pair R B, Pair R D, Pair R F, Pair R U]
- ,[Pair B R, Pair D R, Pair F R, Pair U R]]
- d = G.fromCycles [[Tri D R B, Tri D L B, Tri D L F, Tri D R F]
- ,[Tri B R D, Tri L D B, Tri F L D, Tri R D F]
- ,[Tri R D B, Tri B L D, Tri L D F, Tri F R D]
- ,[Pair D B, Pair D L, Pair D F, Pair D R]
- ,[Pair B D, Pair L D , Pair F D, Pair R D]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement