emilgoldsmith/elm-speedcubing/2.0.0

NOTE: the latest version is 14.1.0

PLL

Documentation to come

type alias Algorithms =
{ h : Algorithm
, ua : Algorithm
, ub : Algorithm
, z : Algorithm
, aa : Algorithm
, ab : Algorithm
, e : Algorithm
, f : Algorithm
, ga : Algorithm
, gb : Algorithm
, gc : Algorithm
, gd : Algorithm
, ja : Algorithm
, jb : Algorithm
, na : Algorithm
, nb : Algorithm
, ra : Algorithm
, rb : Algorithm
, t : Algorithm
, v : Algorithm
, y : Algorithm
}

Placeholder

type PLL
= H
| Ua
| Ub
| Z
| Aa
| Ab
| E
| F
| Ga
| Gb
| Gc
| Gd
| Ja
| Jb
| Na
| Nb
| Ra
| Rb
| T
| V
| Y

Placeholder

allPlls : Nonempty PLL

A list of all the PLLs

import List.Nonempty


List.Nonempty.length allPlls --> 21

Placeholder

getLetters : PLL -> String

Placeholder

referenceAlgs : Algorithms

Plls verified to be correct so they can be used to verify user selected plls or for displaying a pll case somewhere on the site. They have been chosen to be the optimally lowest move count in HTM just for a small performance boost. The example tests below are just meant for an easier to read version of all the algorithms that are verified to be correct

import Algorithm


-- Edges Only


Algorithm.fromString "R2 U2 R U2 R2 U2 R2 U2 R U2 R2"
--> Ok referenceAlgs.h


Algorithm.fromString "F2 U' (L R') F2 (L' R) U' F2"
--> Ok referenceAlgs.ua


Algorithm.fromString "F2 U (R' L) F2 (R L') U F2"
--> Ok referenceAlgs.ub


Algorithm.fromString "R B' R' B F R' F B' R' B R F2"
--> Ok referenceAlgs.z


-- Corners Only


Algorithm.fromString "R' F R' B2 R F' R' B2 R2"
--> Ok referenceAlgs.aa


Algorithm.fromString "R B' R F2 R' B R F2 R2"
--> Ok referenceAlgs.ab


Algorithm.fromString "D R' D2 F' D L D' F D2 R D' F' L' F"
--> Ok referenceAlgs.e


-- Corners And Edges


Algorithm.fromString "L F R' F' L' F' D2 B' L' B D2 F' R F2"
--> Ok referenceAlgs.f


Algorithm.fromString "F2' D (R' U R' U' R) D' F2 L' U L"
--> Ok referenceAlgs.ga


Algorithm.fromString "R' U' R B2 D (L' U L U' L) D' B2"
--> Ok referenceAlgs.gb


Algorithm.fromString "R2' D' F U' F U F' D R2 B U' B'"
--> Ok referenceAlgs.gc


Algorithm.fromString "R U R' F2 D' (L U' L' U L') D F2"
--> Ok referenceAlgs.gd


Algorithm.fromString "B2 R' U' R B2 L' D L' D' L2"
--> Ok referenceAlgs.ja


Algorithm.fromString "B2 (L U L') B2 (R D' R D) R2"
--> Ok referenceAlgs.jb


Algorithm.fromString "L U' R U2 L' U R' L U' R U2 L' U R'"
--> Ok referenceAlgs.na


Algorithm.fromString "R' U L' U2 R U' L R' U L' U2 R U' L"
--> Ok referenceAlgs.nb


Algorithm.fromString "F2 R' F' U' F' U F R F' U2 F U2 F'"
--> Ok referenceAlgs.ra


Algorithm.fromString "R2 F R U R U' R' F' R U2 R' U2 R"
--> Ok referenceAlgs.rb


Algorithm.fromString "F2 D R2 U' R2 F2 D' L2 U L2"
--> Ok referenceAlgs.t


Algorithm.fromString "R' U R' U' B' R' B2 U' B' U B' R B R"
--> Ok referenceAlgs.v


Algorithm.fromString "F2 D R2 U R2 D' R' U' R F2 R' U R"
--> Ok referenceAlgs.y