-
-
Notifications
You must be signed in to change notification settings - Fork 84
/
Copy pathChapter3.purs
67 lines (60 loc) · 2.26 KB
/
Chapter3.purs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
module Levels.Chapter3 where
import Prelude
import Data.List (List(..), (:), concatMap)
import Data.Maybe (Maybe(..))
import Helper (fromArray, (:->), (:>))
import Transformer (replaceSingle)
import Types (Chapter, Stack, Cube(..), Difficulty(..))
cxToX :: Stack -> Stack
cxToX Nil = Nil
cxToX (Cons Cyan (Cons y xs)) = y : cxToX xs
cxToX (Cons x xs) = x : cxToX xs
ooToC :: Stack -> Stack
ooToC Nil = Nil
ooToC (Cons Orange (Cons Orange xs)) = Cyan : ooToC xs
ooToC (Cons x cs) = x : ooToC cs
chapter3 :: Chapter
chapter3 = {
name: "Chapter 3",
transformers: fromArray [
"mapXtoOX" :> {
name: "map {X}↦[{X}{Orange}]",
function: map (concatMap (\x -> (Orange : x : Nil)))
},
"mapCXtoX" :> {
name: "map [{X}{Cyan}]↦{X}",
function: map cxToX
},
"mapOOtoC" :> {
name: "map [{Orange}{Orange}]↦{Cyan}",
function: map ooToC
},
"mapCtoO" :> {
name: "map {Cyan}↦{Orange}",
function: replaceSingle Cyan Orange
}
],
levels: fromArray [
"3.1" :-> {
name: "Brick",
help: Just """This chapter introduces wildcard cubes: {X}.""",
difficulty: Easy,
initial: [[Cyan, Orange], [Cyan, Cyan, Orange], [Orange, Orange], [Cyan, Cyan, Orange], [Cyan, Orange]],
target: [[Cyan], [Cyan, Orange], [Cyan], [Cyan, Orange], [Cyan]]
},
"3.2" :-> {
name: "Fort",
help: Nothing,
difficulty: Hard,
initial: [[Cyan, Orange], [Cyan, Cyan, Orange], [Orange, Orange], [Cyan, Cyan, Orange], [Cyan, Orange]],
target: [[Orange, Cyan], [Orange, Orange], [Orange, Cyan], [Orange, Orange], [Orange, Cyan]]
},
"3.3" :-> {
name: "Castle",
help: Nothing,
difficulty: Medium,
initial: [[Orange], [Orange, Orange], [Orange, Orange, Orange], [Orange, Orange, Orange, Orange], [Orange, Orange, Orange], [Orange, Orange], [Orange]],
target: [[Orange, Orange], [Orange, Cyan], [Orange, Orange], [Orange, Cyan], [Orange, Orange], [Orange, Cyan], [Orange, Orange]]
}
]
}