module Machines where
import Turing
readMachine :: String -> Machine
readMachine = zip x . map f . words where
x = concat [[(s, blankSymbol), (s, '1')] | s<-['A'..]]
f [st, s, d] = (s, read [d], st)
machines :: [Machine]
machines = map (readMachine . fst) table
table :: [(String, String)]
table =
[ (,) "C1L E1L H1L D1L D1R D0L A1L E1R B0L C0R" "slow"
, (,) "C1L E0R H1L C0R D1R A0L A1R D1R A1L B0R" "fast, down slopes"
, (,) "C1L A0R H1L E1L D1R B0L A1R C1R C0L D1L" "slow, down slopes"
, (,) "C1L D0R H1L E0L D1R C1L E1L A1R B1L D0L" "tale #1"
, (,) "C1L A1L H1L D0L D1R E0L A1L C0R C1R B0L" "fast"
, (,) "C1L B0R H1L D0R D1L A0R E1R C0L C1R E1R" "fast with slow parts"
, (,) "C1L B0R H1L E1R D1L A1L A1R D0L A0R C1R" "fast, hills"
, (,) "C1L B0R H1L C0R D1L C0L E0R C1L A0R E1R" "slow, romboids"
, (,) "C1L D1R H1L C0L A1R C1L E1R A0R B1L E0L" "repeat #5"
, (,) "C1L A0L H1L C0L D0R A1L B1L E1R D1R E0R" "mountains in both direction #4"
, (,) "C1L A0L H1L A0R D0R A1L E0R D1R A1L B0R" "slow, romboids #2"
, (,) "C1L E0L H1L E1L D0R A1L A0L C1R C1R B0L" "slow increase"
, (,) "C1L B0R H1L A1R D0L E1R E0R C1L C1R A0R" "slow, hills"
, (,) "B1L H1L C1R E0R D1L B0R D0L A1L C0R A0L" "fast"
, (,) "B1L H1L C1L B1R D1R E1L B1R D0R A1L C0L" "slow with fast parts, left mountains"
, (,) "B1L H1L C0R D1L D1R C1R E1L E0L A0L B0R" "slow with fast parts"
, (,) "B1L H1L C0R E1L D0R C1R A1L B1R B0L A0L" "very slow"
, (,) "B1L H1L C0L D0R D1L E0R E1L A0L C1R D0R" "fast"
, (,) "B1L H1L C0L B0L C1R D0R A1L E0R A0R E0R" "fast, mountains in clouds || ||, #1"
, (,) "B1L H1L C0L D1L D0R C1L E1R A0L A1L E0R" "fast & slow, left mountains"
, (,) "C1L E1L A1L H1L D1R E0R B1R E1R C1R A0L" "fast, |/"
, (,) "C1L E0L A1R H1L D1R A0L D0R B1R C0L B0R" "fast"
, (,) "C1L C0R D0L H1L D1R E0L C1L E0R A1R B1L" "tale"
, (,) "C1L A1L E1R H1L D1R D0R B0R E0L A0L C1R" "hills with clouds"
, (,) "C1L A0R A1L H1L D1R E1L A1R D0R E0L B0R" "tale"
, (,) "C1L E1R D1R H1L D1L C0L A1R D1L B1R A0R" "mountains - hills"
, (,) "C1L E0L D1R H1L B1L E1L A1R E1R A1L D0R" "fast, left mountains"
, (,) "C1L D0R A0L H1L A1R D0L E1R B1L C1L C0R" "tale"
, (,) "C1L E0L C1R H1L D0R A1L A1R E0R B1R E0L" "hills with clouds"
, (,) "C1L B0R E0R H1L D0L C1L E1L C0L A1R C0R" "slow"
, (,) "C1L E0R C0L H1L D0L B0L D1R A0R A1R D1L" "fast, decreasing"
, (,) "C1L D1R E1R H1L D0L C0L B1R A0R A1R E1L" "slow tale, mountains"
, (,) "C1L D1R E1R H1L D0L C0L B1R A0R A1R A1L" "jazz, hills"
, (,) "C1L D1R E1R H1L D0L C0L B1R A0R A1R A0R" "mountains - hills #1"
, (,) "C1L E1R D1R H1L D0L C0L B1R A1L D1L A0R" "mountains - hills"
, (,) "C1L B0R C1R H1L D0L D0R A1R E0L D1L E1L" "fast, | |/"
, (,) "C1L C0L D1L H1L B0L D0R E0R A1L A1R E1R" "slow with fast parts"
, (,) "B1L D1L C1R H1L E1R D1R E1L C0R A1L D0L" "left mountains"
, (,) "B1L A0L C1R H1L C0R D0R E1L B0L E0L A1L" "slow, |"
, (,) "B1L A0R C1L H1L D0L E1R E1L A0L C1R A0R" "inverse mountains"
, (,) "B1L E0R C1L H1L D0L C0L D1R A0R B0R E0R" "fast, mountains in clouds || ||"
, (,) "B1L A0R C0L H1L C1R D1L E1L A1R B0L D0R" "slow jazz #2"
]
hints :: [String]
hints = map h $ zip [0::Int ..] table where
h (n, (_, s)) = show n ++ replicate (5 - length (show n)) ' ' ++ s