1
+
2
+ var samples = { } ;
3
+
4
+ samples . populateSamples = function ( )
5
+ {
6
+ var contents = "" ;
7
+ var notComma = true ;
8
+ for ( var i = 0 ; i < this . list . length ; i ++ )
9
+ {
10
+ if ( this . list [ i ] . code . length == 0 ) continue ;
11
+ if ( notComma )
12
+ notComma = false ;
13
+ else
14
+ contents += ", " ;
15
+ contents += this . list [ i ] . name ;
16
+ if ( this . list [ i ] . input . length > 0 )
17
+ {
18
+ contents += " (" ;
19
+ for ( var d = 0 ; d < this . list [ i ] . input . length ; d ++ )
20
+ {
21
+ if ( d > 0 ) contents += ")(" ;
22
+ contents += '<a href="javascript:void(0);" onclick="samples.loadSample(' + i + ',' + d + ')">' + ( d + 1 ) + "</a>" ;
23
+ }
24
+ contents += ")" ;
25
+ }
26
+ }
27
+ var dom = document . getElementById ( "samplebox" ) ;
28
+ dom . innerHTML = contents ;
29
+ }
30
+
31
+ samples . loadSample = function ( sample , input )
32
+ {
33
+ if ( sample < this . list . length )
34
+ {
35
+ var codeDom = document . getElementById ( "codebox" ) ;
36
+ codeDom . value = this . list [ sample ] . code ;
37
+ if ( input < this . list [ sample ] . input . length )
38
+ {
39
+ var inputDom = document . getElementById ( "inputbox" ) ;
40
+ inputDom . value = this . list [ sample ] . input [ input ] ;
41
+ }
42
+ }
43
+ }
44
+
45
+ samples . list =
46
+ [
47
+ {
48
+ name :"1.Finding Chessboards" ,
49
+ code :"m:{v<R>2}{h<>1}\nv:{c<L>A1}+\nh:{c<R>A2}+\nc:_?(#_)+#?" ,
50
+ input :[
51
+ "~______~\n~##_#_#~\n~#_#_##~\n~##_#_#~\n~______~" ,
52
+ "#_##\n_#_#\n__#_\n#_#_\n#_#_"
53
+ ]
54
+ } , {
55
+ name :"2.Verifying Chessboards" ,
56
+ code :"m:{v<R>2}{h<>1}\nv:${c<L>A1}+$\nh:${c<R>A2}+$\nc:$_?(#_)+#?$" ,
57
+ input :[
58
+ "_#_#_#_#\n#_#_#_#_\n_#_#_#_#" ,
59
+ "_#_#_#__\n__#_#_#_\n_#_#_#__"
60
+ ]
61
+ } , {
62
+ name :"3.Rectangle of Digits" ,
63
+ code :"m:{c<R>A1}%{2,}\nc:[0-9]%{2,}" ,
64
+ input :[
65
+ "hbrewvgr\n18774gwe\n84502vgv\n19844f22\ncrfegc77" ,
66
+ "uv88wn000\nvgr88vg0w\nv888wrvg7\nvvg88wv77"
67
+ ]
68
+ } , {
69
+ name :"4.Finding a Word in a Word Search" ,
70
+ code :"m:<*>GOLF" ,
71
+ input :[
72
+ "INOWCEF\nIFWNOPH\nVULUHGY\nGUYOIGI\nYTFUGYG\nFTGYIOO" ,
73
+ "BHTGIVUHSR\nBWEVYWHBWB\nBHTWBYTWYB"
74
+ ]
75
+ } , {
76
+ name :"5.Detect Square Inputs" ,
77
+ code :"m:{v<R>1}{h<>1}\nv:${c<L>A1}+$\nh:${c<R>A1}+$\nc:$.+$" ,
78
+ input :[
79
+ "qwerty\nasdfgh\nzx vbn\nuiop[]\n`1234 \n67890-" ,
80
+ "hello\nworld"
81
+ ]
82
+ } , {
83
+ name :"6.Find Gliders in a Game of Life" ,
84
+ code :"m:<+>[({l1<R>A}{l2<R>A}{l3<R>})({l1<L>A}{l2<L>A}{l3<L>})]\nl1:##\\.\nl2:[(#\\.)(\\.#)]#\nl3:#\\.\\." ,
85
+ input :[
86
+ "##...#..\n..#.##..\n#...#.#.\n#.#.....\n##...###\n...#.#..\n.#....#." ,
87
+ "##...#.\n..#.###\n##..#.#\n#.#....\n##..###"
88
+ ]
89
+ } , {
90
+ name :"7.Match Nether Portals" ,
91
+ code :"m:{e<R>A1}{d<R>A1}%{2,22}{e<R>1}\ne:~.X%{3,22}~.\nd:X\\.+X" ,
92
+ input :[
93
+ "....X......\n.XXXXXX.XX.\n...X...X...\n.X.X...XXX.\n...X...X.X.\n.XXX...X.X.\nX..XXXXX.X." ,
94
+ "XX..XXXX\nXX..X..X\nXX..X..X\n..X.X..X\n.X..X.XX"
95
+ ]
96
+ } , {
97
+ name :"8.Minecraft Chest Placement" ,
98
+ code :"m:~{s<>}~!{d<+>}\\.\ns:<+>.<BR>([$\\.]<R>)%{3}\nd:.<+>CC" ,
99
+ input :[
100
+ ".......C..\n...C..C...\n.........C\n.CC...CC..\n.........."
101
+ ]
102
+ } , {
103
+ name :"9.Horizontal and Vertical Alignment" ,
104
+ code :"m:<R>?#~.*#" ,
105
+ input :[
106
+ ".,.,.,.#.,\n,.,#,.,.,.\n.,.,.,.,.,\n,.,.,.,.,.\n.,.#.,##.,\n,.,.,.,.,." ,
107
+ ".,.#.,.,\n,.,.,.#.\n.,#,.,.,\n,.,.,.,#\n.#.,.,.,\n,.,.#.,.\n#,.,.,.,\n,.,.,#,."
108
+ ]
109
+ } , {
110
+ name :"10.Collinear Points" ,
111
+ code :"m:<!>#~.*#~.*#" ,
112
+ input :[
113
+ "........\n#..#..#.\n...#....\n#.......\n...#...." ,
114
+ ".#..#\n#..#.\n#....\n..#.#"
115
+ ]
116
+ } , {
117
+ name :"11.Verify Prelude Syntax" ,
118
+ code :"" ,
119
+ input :[
120
+ "?1-(v #1)- \n1 0v ^(# 0)(1+0)#)!\n (#) ^#1-(0 # " ,
121
+ "#(#(##)##)##(\n)##(##(##)#)#"
122
+ ]
123
+ } , {
124
+ name :"12.Avoid the Letter Q" ,
125
+ code :"m:{h<R>A}%{4}\nh:[^Qq]%{4}" ,
126
+ input :[
127
+ "bhtklkwt\nqlwQklqw\nvtvlwktv\nkQtwkvkl\nvtwlkvQk\nvnvevwvx" ,
128
+ "zxvcmn\nxcvncn\nmnQxcv\nxcvmnx\nazvmne"
129
+ ]
130
+ } , {
131
+ name :"13.Diamond Mining" ,
132
+ code :"m:{tl<RB>1}{tr<RF>1}\ntl:X/*{bl<L>1}X\ntr:X\\\\*{br<R>1}X\nbl:X\\\\*X\nbr:X/*X" ,
133
+ input :[
134
+ "...X......X....\n../.\\..../.\\...\n./.X.\\..X...X..\nX.X.X.XX.\\./.\\.\n.\\.X.//.\\.X...X\n..\\./X...X.\\./.\n.X.X..\\./...X..\nX.X....X.......\n.X............." ,
135
+ ".X......./....\n.\\....X.......\n...X.\\.\\...X..\n..X.\\...\\.X.\\.\n...X.X...X.\\.X\n../X\\...\\...X.\n.X...\\.\\..X...\n..\\./.X....X..\n...X..../....."
136
+ ]
137
+ } , {
138
+ name :"14.Matching Crosses" ,
139
+ code :"m:{a<R>A}+{b<R>A}+{a<R>A}+\na:{e<>P1}{c<>P2}{e<>P3}\nb:{c<>P1}{c<>P2}{c<>P3}\ne:\\.+\nc:#+" ,
140
+ input :[
141
+ ".......\n.###...\n######.\n######.\n.###...\n.###...\n.###.#.\n....###\n.....#." ,
142
+ ".######.\n...##...\n...##...\n........"
143
+ ]
144
+ } , {
145
+ name :"15.Match a Word in a Boggle Board" ,
146
+ code :"m{I}:<*>p<*>a<*>n<*>a<*>m<*>a" ,
147
+ input :[
148
+ "ExYPhNuy\nAfEKVsjL\noblGviCw\nDdOgArRn\nISepnmqc\nzMUkBGJQ" ,
149
+ "BpbrzTHY\nmAJVRLuF\njyXSPknK\nhoeGcsEl\nQCZagNMI\ndvUOqixt"
150
+ ]
151
+ } , {
152
+ name :"15.Match a Word in a Boggle Board (no reuse)" ,
153
+ code :"m{EI}:<*>p<*>a<*>n<*>a<*>m<*>a" ,
154
+ input :[
155
+ "EmYPhNuy\nAaaKVsjL\nonlGviCw\nDdOgFrRn\nISeHZmqc\nzMUkBGJQ" ,
156
+ "BpbrzTHY\nmAJVRLuF\njyXSPknK\nhoeGcsEl\nQCZagNMI\ndvUOqixt"
157
+ ]
158
+ } , {
159
+ name :"16.Wrap around the Edges" ,
160
+ code :"m{W}:{c<R>WA}%{3}\nc:###" ,
161
+ input :[
162
+ "#..##\n#..##\n.....\n#..##" ,
163
+ "...##\n#..##\n#..##\n#..#."
164
+ ]
165
+ } , {
166
+ name :"EX.Maze Solver!" ,
167
+ code :"m{E}:$(<P>\\.)+$" ,
168
+ input :[
169
+ "+-+-+-+-+-+-+-+-+-+-+\n..|...|...|...|...|.|\n+.+-+.+.+.+-+.+.+.+.+\n|.......|...|.|.|.|.|\n+.+-+-+-+-+.+.+.+.+.+\n|.|...|...|.|.|.|...|\n+.+.+.+.+.+.+.+.+-+-+\n|.|.|...|.|.|.|.....|\n+.+.+-+-+.+.+.+-+-+.+\n|.|...|...|.|.....|.|\n+.+-+.+-+-+.+-+-+.+.+\n|...|.....|...|.....|\n+-+.+-+-+.+-+.+.+-+-+\n|.|.|...|...|.|...|.|\n+.+.+-+.+-+.+.+-+.+.+\n|.|.....|.......|...|\n+.+-+-+-+.+-+.+.+.+-+\n|.....|...|...|.|...|\n+-+-+.+-+-+.+-+-+.+.+\n|.................|..\n+-+-+-+-+-+-+-+-+-+-+"
170
+ ]
171
+ } , {
172
+ name :"EX.Brace Matching" ,
173
+ code :"m:\\(~{r<>P}\\)\nr:[^\\(\\)]*(\\({r<>P}\\))?[^\\(\\)]*" ,
174
+ input :[
175
+ "#(#(##)##)##(\n)##(##(##)#)#"
176
+ ]
177
+ }
178
+ ]
0 commit comments