diff options
-rw-r--r-- | ext/wittle_generator/wittle_generator.cpp | 3151 |
1 files changed, 1513 insertions, 1638 deletions
diff --git a/ext/wittle_generator/wittle_generator.cpp b/ext/wittle_generator/wittle_generator.cpp index 7951d15..1a3d287 100644 --- a/ext/wittle_generator/wittle_generator.cpp +++ b/ext/wittle_generator/wittle_generator.cpp | |||
@@ -1,5 +1,7 @@ | |||
1 | #include <functional> | ||
1 | #include <iostream> | 2 | #include <iostream> |
2 | #include <rice/rice.hpp> | 3 | #include <rice/rice.hpp> |
4 | #include <vector> | ||
3 | 5 | ||
4 | #include "Generate.h" | 6 | #include "Generate.h" |
5 | #include "Random.h" | 7 | #include "Random.h" |
@@ -19,1668 +21,1541 @@ void MakeSecretSymmetryGrid(Generate& generator) { | |||
19 | } | 21 | } |
20 | 22 | ||
21 | Rice::Object wittle_generator_generate_easy(Rice::Object /* self */) { | 23 | Rice::Object wittle_generator_generate_easy(Rice::Object /* self */) { |
24 | static std::vector<std::function<void(Generate&)>> generator_fns{ | ||
25 | [](Generate& generator) { | ||
26 | generator.setSymbol(Decoration::Start, 2 * 2, 2 * 2); | ||
27 | generator.setSymbol(Decoration::Exit, 4 * 2, 0); | ||
28 | generator.generate( | ||
29 | 4, 4, {{{Decoration::Dot_Intersection, 25}, {Decoration::Gap, 2}}}); | ||
30 | }, | ||
31 | [](Generate& generator) { | ||
32 | generator.setSymbol(Decoration::Start, 0, 4 * 2); | ||
33 | generator.generate(4, 4, | ||
34 | {{{Decoration::Stone | Decoration::Color::Black, 7}, | ||
35 | {Decoration::Stone | Decoration::Color::White, 5}, | ||
36 | {Decoration::Exit, 1}}}); | ||
37 | }, | ||
38 | [](Generate& generator) { | ||
39 | generator.setFlag(Generate::RegularStartEnd); | ||
40 | generator.setSymmetry(Panel::Rotational); | ||
41 | generator.generate(6, 6, {{{Decoration::Gap, 15}}}); | ||
42 | }, | ||
43 | [](Generate& generator) { | ||
44 | generator.setFlag(Generate::RegularStartEnd); | ||
45 | generator.setSymmetry(Panel::Vertical); | ||
46 | generator.generate(5, 8, {{{Decoration::Gap, 15}}}); | ||
47 | }, | ||
48 | [](Generate& generator) { | ||
49 | generator.setFlag(Generate::RegularStartEnd); | ||
50 | generator.setSymmetry(Panel::Horizontal); | ||
51 | generator.generate(5, 5, {{{Decoration::Dot, 7}}}); | ||
52 | }, | ||
53 | [](Generate& generator) { | ||
54 | generator.setFlag(Generate::RegularStartEnd); | ||
55 | generator.setSymmetry(Panel::Rotational); | ||
56 | generator.generate(5, 5, {{{Decoration::Dot, 6}}}); | ||
57 | }, | ||
58 | [](Generate& generator) { | ||
59 | generator.setFlag(Generate::RegularStartEnd); | ||
60 | generator.setSymmetry(Panel::Rotational); | ||
61 | generator.generate(5, 5, | ||
62 | {{{Decoration::Dot | Decoration::Color::Blue, 1}, | ||
63 | {Decoration::Dot | Decoration::Color::Yellow, 2}, | ||
64 | {Decoration::Dot, 4}}}); | ||
65 | }, | ||
66 | [](Generate& generator) { | ||
67 | generator.setFlag(Generate::RegularStartEnd); | ||
68 | generator.generate( | ||
69 | 4, 4, {{{Decoration::Poly | Decoration::Color::Yellow, 2}}}); | ||
70 | }, | ||
71 | [](Generate& generator) { | ||
72 | generator.setFlag(Generate::FullGaps); | ||
73 | generator.setFlag(Generate::StartEdgeOnly); | ||
74 | generator.generate(5, 5, | ||
75 | {{{Decoration::Gap, 16}, | ||
76 | {Decoration::Dot, 10}, | ||
77 | {Decoration::Exit, 1}, | ||
78 | {Decoration::Start, 1}}}); | ||
79 | }, | ||
80 | [](Generate& generator) { | ||
81 | generator.setFlag(Generate::RegularStartEnd); | ||
82 | generator.generate(3, 3, | ||
83 | {{{Decoration::Eraser | Decoration::Color::Green, 1}, | ||
84 | {Decoration::Dot, 8}}}); | ||
85 | }, | ||
86 | [](Generate& generator) { | ||
87 | generator.setFlag(Generate::RegularStartEnd); | ||
88 | generator.generate( | ||
89 | 4, 4, | ||
90 | {{{Decoration::Stone | Decoration::Color::White, 8}, | ||
91 | {Decoration::Stone | Decoration::Color::Black, 4}, | ||
92 | {Decoration::Eraser | Decoration::Color::Green, 1}}}); | ||
93 | }, | ||
94 | [](Generate& generator) { | ||
95 | generator.setFlag(Generate::RegularStartEnd); | ||
96 | generator.generate( | ||
97 | 4, 4, | ||
98 | {{{Decoration::Stone | Decoration::Color::Red, 4}, | ||
99 | {Decoration::Stone | Decoration::Color::White, 4}, | ||
100 | {Decoration::Stone | Decoration::Color::Black, 3}, | ||
101 | {Decoration::Eraser | Decoration::Color::Green, 1}}}); | ||
102 | }, | ||
103 | [](Generate& generator) { | ||
104 | generator.setFlag(Generate::RegularStartEnd); | ||
105 | generator.setFlag(Generate::RequireCombineShapes); | ||
106 | generator.generate(4, 4, | ||
107 | {{{Decoration::Poly | Decoration::Color::Yellow, 1}, | ||
108 | {Decoration::Poly | Decoration::Color::Yellow | | ||
109 | Decoration::Can_Rotate, | ||
110 | 1}, | ||
111 | {Decoration::Gap, 5}}}); | ||
112 | }, | ||
113 | [](Generate& generator) { | ||
114 | generator.setFlag(Generate::RegularStartEnd); | ||
115 | generator.generate( | ||
116 | 3, 3, | ||
117 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
118 | {Decoration::Eraser | Decoration::Color::White, 1}}}); | ||
119 | }, | ||
120 | [](Generate& generator) { | ||
121 | generator.setFlag(Generate::FullGaps); | ||
122 | generator.generate(4, 4, | ||
123 | {{{Decoration::Gap, 8}, | ||
124 | {Decoration::Dot_Intersection, 10}, | ||
125 | {Decoration::Exit, 1}, | ||
126 | {Decoration::Start, 3}}}); | ||
127 | }, | ||
128 | [](Generate& generator) { | ||
129 | generator.generate(5, 5, | ||
130 | {{{Decoration::Exit, 1}, | ||
131 | {Decoration::Stone | Decoration::Color::Black, 11}, | ||
132 | {Decoration::Stone | Decoration::Color::White, 8}, | ||
133 | {Decoration::Start, 3}}}); | ||
134 | }, | ||
135 | [](Generate& generator) { | ||
136 | generator.setFlag(Generate::RegularStartEnd); | ||
137 | generator.generate(4, 4, | ||
138 | {{{Decoration::Star | Decoration::Color::Green, 6}, | ||
139 | {Decoration::Star | Decoration::Color::Orange, 5}, | ||
140 | {Decoration::Eraser | Decoration::Orange, 1}}}); | ||
141 | }, | ||
142 | [](Generate& generator) { | ||
143 | generator.setFlag(Generate::RegularStartEnd); | ||
144 | generator.generate(4, 4, | ||
145 | {{{Decoration::Star | Decoration::Color::Orange, 6}, | ||
146 | {Decoration::Star | Decoration::Color::Magenta, 5}, | ||
147 | {Decoration::Star | Decoration::Color::Green, 4}, | ||
148 | {Decoration::Eraser | Decoration::Magenta, 1}}}); | ||
149 | }, | ||
150 | [](Generate& generator) { | ||
151 | generator.setFlag(Generate::RegularStartEnd); | ||
152 | generator.generate(4, 4, | ||
153 | {{{Decoration::Star | Decoration::Color::Magenta, 6}, | ||
154 | {Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
155 | {Decoration::Eraser | Decoration::White, 1}}}); | ||
156 | }, | ||
157 | [](Generate& generator) { | ||
158 | generator.setFlag(Generate::RegularStartEnd); | ||
159 | generator.generate(4, 4, | ||
160 | {{{Decoration::Star | Decoration::Color::Magenta, 5}, | ||
161 | {Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
162 | {Decoration::Eraser | Decoration::White, 1}}}); | ||
163 | }, | ||
164 | [](Generate& generator) { | ||
165 | generator.setFlag(Generate::TreehouseLayout); | ||
166 | generator.generate(4, 4, | ||
167 | {{{Decoration::Star | Decoration::Color::Orange, 4}, | ||
168 | {Decoration::Gap, 10}}}); | ||
169 | }, | ||
170 | [](Generate& generator) { | ||
171 | generator.setFlag(Generate::RegularStartEnd); | ||
172 | generator.generate(5, 5, | ||
173 | {{{Decoration::Star | Decoration::Color::Orange, 10}, | ||
174 | {Decoration::Gap, 3}}}); | ||
175 | }, | ||
176 | [](Generate& generator) { | ||
177 | generator.setFlag(Generate::TreehouseLayout); | ||
178 | generator.generate(4, 4, | ||
179 | {{{Decoration::Star | Decoration::Color::Orange, 4}, | ||
180 | {Decoration::Star | Decoration::Color::Magenta, 4}, | ||
181 | {Decoration::Gap, 8}}}); | ||
182 | }, | ||
183 | [](Generate& generator) { | ||
184 | generator.setFlag(Generate::TreehouseLayout); | ||
185 | generator.generate(4, 4, | ||
186 | {{{Decoration::Star | Decoration::Color::Orange, 4}, | ||
187 | {Decoration::Star | Decoration::Color::Magenta, 2}, | ||
188 | {Decoration::Star | Decoration::Color::Green, 2}, | ||
189 | {Decoration::Gap, 8}}}); | ||
190 | }, | ||
191 | [](Generate& generator) { | ||
192 | generator.setFlag(Generate::TreehouseLayout); | ||
193 | generator.generate( | ||
194 | 4, 3, | ||
195 | {{{Decoration::Star | Decoration::Color::Orange, 6}, | ||
196 | {Decoration::Star | Decoration::Color::Magenta, 4}, | ||
197 | {Decoration::Star | Decoration::Color::Green, 2}}}); | ||
198 | }, | ||
199 | [](Generate& generator) { | ||
200 | generator.setFlag(Generate::TreehouseLayout); | ||
201 | generator.setFlag(Generate::FullGaps); | ||
202 | generator.generate(4, 4, | ||
203 | {{{Decoration::Star | Decoration::Color::Magenta, 6}, | ||
204 | {Decoration::Dot_Intersection, 6}, | ||
205 | {Decoration::Gap, 3}}}); | ||
206 | }, | ||
207 | [](Generate& generator) { | ||
208 | generator.setFlag(Generate::TreehouseLayout); | ||
209 | generator.generate( | ||
210 | 4, 4, | ||
211 | {{{Decoration::Star | Decoration::Color::Magenta, 4}, | ||
212 | {Decoration::Stone | Decoration::Color::Black, 4}, | ||
213 | {Decoration::Stone | Decoration::Color::White, 4}}}); | ||
214 | }, | ||
215 | [](Generate& generator) { | ||
216 | generator.setFlag(Generate::TreehouseLayout); | ||
217 | generator.generate( | ||
218 | 3, 3, | ||
219 | {{{Decoration::Star | Decoration::Color::Black, 1}, | ||
220 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
221 | {Decoration::Stone | Decoration::Color::White, 2}}}); | ||
222 | }, | ||
223 | [](Generate& generator) { | ||
224 | generator.setFlag(Generate::TreehouseLayout); | ||
225 | generator.generate( | ||
226 | 4, 4, | ||
227 | {{{Decoration::Star | Decoration::Color::White, 2}, | ||
228 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
229 | {Decoration::Stone | Decoration::Color::White, 2}, | ||
230 | {Decoration::Stone | Decoration::Color::Purple, 2}}}); | ||
231 | }, | ||
232 | [](Generate& generator) { | ||
233 | generator.setFlag(Generate::TreehouseLayout); | ||
234 | generator.generate( | ||
235 | 4, 4, | ||
236 | {{{Decoration::Poly | Decoration::Color::Orange, 2}, | ||
237 | {Decoration::Star | Decoration::Color::Magenta, 4}}}); | ||
238 | }, | ||
239 | [](Generate& generator) { | ||
240 | generator.setFlag(Generate::TreehouseLayout); | ||
241 | generator.generate( | ||
242 | 4, 5, | ||
243 | {{{Decoration::Stone | Decoration::Color::White, 8}, | ||
244 | {Decoration::Stone | Decoration::Color::Black, 8}, | ||
245 | {Decoration::Eraser | Decoration::Color::White, 2}}}); | ||
246 | }, | ||
247 | [](Generate& generator) { | ||
248 | generator.setFlag(Generate::TreehouseLayout); | ||
249 | generator.generate(4, 5, | ||
250 | {{{Decoration::Poly | Decoration::Color::Orange, 2}, | ||
251 | {Decoration::Stone | Decoration::Color::White, 4}, | ||
252 | {Decoration::Stone | Decoration::Color::Black, 4}, | ||
253 | {Decoration::Gap, 4}}}); | ||
254 | }, | ||
255 | [](Generate& generator) { | ||
256 | generator.setFlag(Generate::RegularStartEnd); | ||
257 | generator.generate( | ||
258 | 4, 4, | ||
259 | {{{Decoration::Dot_Intersection, 25}, | ||
260 | {Decoration::Poly | Decoration::Color::Yellow, 2}}}); | ||
261 | }, | ||
262 | [](Generate& generator) { | ||
263 | generator.setFlag(Generate::RegularStartEnd); | ||
264 | generator.generate( | ||
265 | 4, 4, | ||
266 | {{{Decoration::Dot_Intersection, 25}, | ||
267 | {Decoration::Poly | Decoration::Color::Yellow | | ||
268 | Decoration::Can_Rotate, | ||
269 | 2}, | ||
270 | {Decoration::Eraser | Decoration::Color::White, 1}}}); | ||
271 | }, | ||
272 | [](Generate& generator) { | ||
273 | generator.setFlag(Generate::RegularStartEnd); | ||
274 | generator.setSymmetry(Panel::Rotational); | ||
275 | generator.generate( | ||
276 | 5, 5, | ||
277 | {{{Decoration::Stone | Decoration::Color::Black, 6}, | ||
278 | {Decoration::Stone | Decoration::Color::White, 6}}}); | ||
279 | }, | ||
280 | [](Generate& generator) { | ||
281 | generator.setFlag(Generate::RegularStartEnd); | ||
282 | generator.setSymmetry(Panel::Rotational); | ||
283 | generator.generate(5, 5, | ||
284 | {{{Decoration::Stone | Decoration::Color::Black, 5}, | ||
285 | {Decoration::Stone | Decoration::Color::White, 5}, | ||
286 | {Decoration::Dot, 3}}}); | ||
287 | }, | ||
288 | [](Generate& generator) { | ||
289 | generator.setFlag(Generate::RegularStartEnd); | ||
290 | generator.setFlag(Generate::SplitShapes); | ||
291 | generator.generate(4, 4, | ||
292 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
293 | {Decoration::Gap, 8}}}); | ||
294 | }, | ||
295 | [](Generate& generator) { | ||
296 | generator.setFlag(Generate::RegularStartEnd); | ||
297 | generator.setFlag(Generate::BigShapes); | ||
298 | generator.generate(5, 5, | ||
299 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
300 | {Decoration::Gap, 12}}}); | ||
301 | }, | ||
302 | [](Generate& generator) { | ||
303 | generator.setFlag(Generate::RegularStartEnd); | ||
304 | generator.setFlag(Generate::DisconnectShapes); | ||
305 | generator.generate( | ||
306 | 3, 3, {{{Decoration::Poly | Decoration::Color::Yellow, 2}}}); | ||
307 | }, | ||
308 | [](Generate& generator) { | ||
309 | generator.setFlag(Generate::RegularStartEnd); | ||
310 | generator.setFlag(Generate::DisconnectShapes); | ||
311 | generator.setFlag(Generate::BigShapes); | ||
312 | generator.generate( | ||
313 | 4, 4, {{{Decoration::Poly | Decoration::Color::Yellow, 2}}}); | ||
314 | }, | ||
315 | [](Generate& generator) { | ||
316 | generator.setFlag(Generate::RegularStartEnd); | ||
317 | generator.setFlag(Generate::RequireCombineShapes); | ||
318 | generator.setFlag(Generate::DisableCancelShapes); | ||
319 | generator.generate(3, 3, | ||
320 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
321 | {Decoration::Poly | Decoration::Negative | | ||
322 | Decoration::Color::Blue, | ||
323 | 1}}}); | ||
324 | }, | ||
325 | [](Generate& generator) { | ||
326 | generator.setFlag(Generate::RegularStartEnd); | ||
327 | generator.setFlag(Generate::RequireCombineShapes); | ||
328 | generator.setFlag(Generate::DisableCancelShapes); | ||
329 | generator.generate(4, 4, | ||
330 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
331 | {Decoration::Poly | Decoration::Negative | | ||
332 | Decoration::Color::Blue, | ||
333 | 1}}}); | ||
334 | }, | ||
335 | [](Generate& generator) { | ||
336 | generator.setFlag(Generate::RegularStartEnd); | ||
337 | generator.setFlag(Generate::BigShapes); | ||
338 | generator.setFlag(Generate::DisableCancelShapes); | ||
339 | generator.generate(4, 4, | ||
340 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
341 | {Decoration::Poly | Decoration::Negative | | ||
342 | Decoration::Color::Blue, | ||
343 | 1}}}); | ||
344 | }, | ||
345 | [](Generate& generator) { | ||
346 | generator.setFlag(Generate::RegularStartEnd); | ||
347 | generator.setFlag(Generate::RequireCancelShapes); | ||
348 | generator.generate(4, 4, | ||
349 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
350 | {Decoration::Poly | Decoration::Negative | | ||
351 | Decoration::Color::Blue, | ||
352 | 2}}}); | ||
353 | }, | ||
354 | [](Generate& generator) { | ||
355 | generator.setFlag(Generate::RegularStartEnd); | ||
356 | generator.generate( | ||
357 | 4, 4, {{{Decoration::Triangle | Decoration::Color::Orange, 6}}}); | ||
358 | }, | ||
359 | [](Generate& generator) { | ||
360 | generator.setFlag(Generate::TreehouseLayout); | ||
361 | generator.setFlag(Generate::LongPath); | ||
362 | generator.generate( | ||
363 | 5, 4, | ||
364 | {{{Decoration::Star | Decoration::Color::Magenta, 6}, | ||
365 | {Decoration::Stone | Decoration::Color::Orange, 4}, | ||
366 | {Decoration::Stone | Decoration::Color::Green, 4}}}); | ||
367 | }, | ||
368 | [](Generate& generator) { | ||
369 | generator.setFlag(Generate::RegularStartEnd); | ||
370 | generator.generate( | ||
371 | 4, 4, | ||
372 | {{{Decoration::Dot, 6}, | ||
373 | {Decoration::Stone | Decoration::Color::Black, 3}, | ||
374 | {Decoration::Stone | Decoration::Color::White, 3}}}); | ||
375 | }, | ||
376 | [](Generate& generator) { | ||
377 | generator.setFlag(Generate::RegularStartEnd); | ||
378 | generator.generate( | ||
379 | 4, 4, | ||
380 | {{{Decoration::Dot, 4}, | ||
381 | {Decoration::Stone | Decoration::Color::Black, 3}, | ||
382 | {Decoration::Stone | Decoration::Color::White, 2}, | ||
383 | {Decoration::Poly | Decoration::Color::Yellow, 1}}}); | ||
384 | }, | ||
385 | [](Generate& generator) { | ||
386 | generator.setSymmetry(Panel::Rotational); | ||
387 | generator.generate(5, 5, | ||
388 | {{{Decoration::Dot | Decoration::Color::Blue, 2}, | ||
389 | {Decoration::Dot | Decoration::Color::Yellow, 2}, | ||
390 | {Decoration::Dot, 4}, | ||
391 | {Decoration::Start, 2}, | ||
392 | {Decoration::Exit, 1}}}); | ||
393 | }, | ||
394 | }; | ||
395 | |||
22 | Generate generator; | 396 | Generate generator; |
23 | 397 | ||
24 | int choice = Random::rand() % 48; | 398 | int choice = Random::rand() % generator_fns.size(); |
25 | std::cout << "Generate EASY: choice " << std::dec << choice << std::endl; | 399 | std::cout << "Generate EASY: choice " << std::dec << choice << std::endl; |
26 | 400 | ||
27 | switch (choice) { | 401 | generator_fns.at(choice)(generator); |
28 | case 0: { | ||
29 | generator.setSymbol(Decoration::Start, 2 * 2, 2 * 2); | ||
30 | generator.setSymbol(Decoration::Exit, 4 * 2, 0); | ||
31 | generator.generate( | ||
32 | 4, 4, {{{Decoration::Dot_Intersection, 25}, {Decoration::Gap, 2}}}); | ||
33 | break; | ||
34 | } | ||
35 | case 1: { | ||
36 | generator.setSymbol(Decoration::Start, 0, 4 * 2); | ||
37 | generator.generate(4, 4, | ||
38 | {{{Decoration::Stone | Decoration::Color::Black, 7}, | ||
39 | {Decoration::Stone | Decoration::Color::White, 5}, | ||
40 | {Decoration::Exit, 1}}}); | ||
41 | break; | ||
42 | } | ||
43 | case 2: { | ||
44 | generator.setFlag(Generate::RegularStartEnd); | ||
45 | generator.setSymmetry(Panel::Rotational); | ||
46 | generator.generate(6, 6, {{{Decoration::Gap, 15}}}); | ||
47 | break; | ||
48 | } | ||
49 | case 3: { | ||
50 | generator.setFlag(Generate::RegularStartEnd); | ||
51 | generator.setSymmetry(Panel::Vertical); | ||
52 | generator.generate(5, 8, {{{Decoration::Gap, 15}}}); | ||
53 | break; | ||
54 | } | ||
55 | case 4: { | ||
56 | generator.setFlag(Generate::RegularStartEnd); | ||
57 | generator.setSymmetry(Panel::Horizontal); | ||
58 | generator.generate(5, 5, {{{Decoration::Dot, 7}}}); | ||
59 | break; | ||
60 | } | ||
61 | case 5: { | ||
62 | generator.setFlag(Generate::RegularStartEnd); | ||
63 | generator.setSymmetry(Panel::Rotational); | ||
64 | generator.generate(5, 5, {{{Decoration::Dot, 6}}}); | ||
65 | break; | ||
66 | } | ||
67 | case 6: { | ||
68 | generator.setFlag(Generate::RegularStartEnd); | ||
69 | generator.setSymmetry(Panel::Rotational); | ||
70 | generator.generate(5, 5, | ||
71 | {{{Decoration::Dot | Decoration::Color::Blue, 1}, | ||
72 | {Decoration::Dot | Decoration::Color::Yellow, 2}, | ||
73 | {Decoration::Dot, 4}}}); | ||
74 | break; | ||
75 | } | ||
76 | case 7: { | ||
77 | generator.setFlag(Generate::RegularStartEnd); | ||
78 | generator.generate(4, 4, | ||
79 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}}}); | ||
80 | break; | ||
81 | } | ||
82 | case 8: { | ||
83 | generator.setFlag(Generate::FullGaps); | ||
84 | generator.setFlag(Generate::StartEdgeOnly); | ||
85 | generator.generate(5, 5, | ||
86 | {{{Decoration::Gap, 16}, | ||
87 | {Decoration::Dot, 10}, | ||
88 | {Decoration::Exit, 1}, | ||
89 | {Decoration::Start, 1}}}); | ||
90 | break; | ||
91 | } | ||
92 | case 9: { | ||
93 | generator.setFlag(Generate::RegularStartEnd); | ||
94 | generator.generate(3, 3, | ||
95 | {{{Decoration::Eraser | Decoration::Color::Green, 1}, | ||
96 | {Decoration::Dot, 8}}}); | ||
97 | break; | ||
98 | } | ||
99 | case 10: { | ||
100 | generator.setFlag(Generate::RegularStartEnd); | ||
101 | generator.generate( | ||
102 | 4, 4, | ||
103 | {{{Decoration::Stone | Decoration::Color::White, 8}, | ||
104 | {Decoration::Stone | Decoration::Color::Black, 4}, | ||
105 | {Decoration::Eraser | Decoration::Color::Green, 1}}}); | ||
106 | break; | ||
107 | } | ||
108 | case 11: { | ||
109 | generator.setFlag(Generate::RegularStartEnd); | ||
110 | generator.generate( | ||
111 | 4, 4, | ||
112 | {{{Decoration::Stone | Decoration::Color::Red, 4}, | ||
113 | {Decoration::Stone | Decoration::Color::White, 4}, | ||
114 | {Decoration::Stone | Decoration::Color::Black, 3}, | ||
115 | {Decoration::Eraser | Decoration::Color::Green, 1}}}); | ||
116 | break; | ||
117 | } | ||
118 | case 12: { | ||
119 | generator.setFlag(Generate::RegularStartEnd); | ||
120 | generator.setFlag(Generate::RequireCombineShapes); | ||
121 | generator.generate(4, 4, | ||
122 | {{{Decoration::Poly | Decoration::Color::Yellow, 1}, | ||
123 | {Decoration::Poly | Decoration::Color::Yellow | | ||
124 | Decoration::Can_Rotate, | ||
125 | 1}, | ||
126 | {Decoration::Gap, 5}}}); | ||
127 | break; | ||
128 | } | ||
129 | case 13: { | ||
130 | generator.setFlag(Generate::RegularStartEnd); | ||
131 | generator.generate( | ||
132 | 3, 3, | ||
133 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
134 | {Decoration::Eraser | Decoration::Color::White, 1}}}); | ||
135 | break; | ||
136 | } | ||
137 | case 14: { | ||
138 | generator.setFlag(Generate::FullGaps); | ||
139 | generator.generate(4, 4, | ||
140 | {{{Decoration::Gap, 8}, | ||
141 | {Decoration::Dot_Intersection, 10}, | ||
142 | {Decoration::Exit, 1}, | ||
143 | {Decoration::Start, 3}}}); | ||
144 | break; | ||
145 | } | ||
146 | case 15: { | ||
147 | generator.generate(5, 5, | ||
148 | {{{Decoration::Exit, 1}, | ||
149 | {Decoration::Stone | Decoration::Color::Black, 11}, | ||
150 | {Decoration::Stone | Decoration::Color::White, 8}, | ||
151 | {Decoration::Start, 3}}}); | ||
152 | break; | ||
153 | } | ||
154 | case 16: { | ||
155 | generator.setFlag(Generate::RegularStartEnd); | ||
156 | generator.generate(4, 4, | ||
157 | {{{Decoration::Star | Decoration::Color::Green, 6}, | ||
158 | {Decoration::Star | Decoration::Color::Orange, 5}, | ||
159 | {Decoration::Eraser | Decoration::Orange, 1}}}); | ||
160 | break; | ||
161 | } | ||
162 | case 17: { | ||
163 | generator.setFlag(Generate::RegularStartEnd); | ||
164 | generator.generate(4, 4, | ||
165 | {{{Decoration::Star | Decoration::Color::Orange, 6}, | ||
166 | {Decoration::Star | Decoration::Color::Magenta, 5}, | ||
167 | {Decoration::Star | Decoration::Color::Green, 4}, | ||
168 | {Decoration::Eraser | Decoration::Magenta, 1}}}); | ||
169 | break; | ||
170 | } | ||
171 | case 18: { | ||
172 | generator.setFlag(Generate::RegularStartEnd); | ||
173 | generator.generate(4, 4, | ||
174 | {{{Decoration::Star | Decoration::Color::Magenta, 6}, | ||
175 | {Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
176 | {Decoration::Eraser | Decoration::White, 1}}}); | ||
177 | break; | ||
178 | } | ||
179 | case 19: { | ||
180 | generator.setFlag(Generate::RegularStartEnd); | ||
181 | generator.generate(4, 4, | ||
182 | {{{Decoration::Star | Decoration::Color::Magenta, 5}, | ||
183 | {Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
184 | {Decoration::Eraser | Decoration::White, 1}}}); | ||
185 | break; | ||
186 | } | ||
187 | case 20: { | ||
188 | generator.setFlag(Generate::TreehouseLayout); | ||
189 | generator.generate(4, 4, | ||
190 | {{{Decoration::Star | Decoration::Color::Orange, 4}, | ||
191 | {Decoration::Gap, 10}}}); | ||
192 | break; | ||
193 | } | ||
194 | case 21: { | ||
195 | generator.setFlag(Generate::RegularStartEnd); | ||
196 | generator.generate(5, 5, | ||
197 | {{{Decoration::Star | Decoration::Color::Orange, 10}, | ||
198 | {Decoration::Gap, 3}}}); | ||
199 | break; | ||
200 | } | ||
201 | case 22: { | ||
202 | generator.setFlag(Generate::TreehouseLayout); | ||
203 | generator.generate(4, 4, | ||
204 | {{{Decoration::Star | Decoration::Color::Orange, 4}, | ||
205 | {Decoration::Star | Decoration::Color::Magenta, 4}, | ||
206 | {Decoration::Gap, 8}}}); | ||
207 | break; | ||
208 | } | ||
209 | case 23: { | ||
210 | generator.setFlag(Generate::TreehouseLayout); | ||
211 | generator.generate(4, 4, | ||
212 | {{{Decoration::Star | Decoration::Color::Orange, 4}, | ||
213 | {Decoration::Star | Decoration::Color::Magenta, 2}, | ||
214 | {Decoration::Star | Decoration::Color::Green, 2}, | ||
215 | {Decoration::Gap, 8}}}); | ||
216 | break; | ||
217 | } | ||
218 | case 24: { | ||
219 | generator.setFlag(Generate::TreehouseLayout); | ||
220 | generator.generate(4, 3, | ||
221 | {{{Decoration::Star | Decoration::Color::Orange, 6}, | ||
222 | {Decoration::Star | Decoration::Color::Magenta, 4}, | ||
223 | {Decoration::Star | Decoration::Color::Green, 2}}}); | ||
224 | break; | ||
225 | } | ||
226 | case 25: { | ||
227 | generator.setFlag(Generate::TreehouseLayout); | ||
228 | generator.setFlag(Generate::FullGaps); | ||
229 | generator.generate(4, 4, | ||
230 | {{{Decoration::Star | Decoration::Color::Magenta, 6}, | ||
231 | {Decoration::Dot_Intersection, 6}, | ||
232 | {Decoration::Gap, 3}}}); | ||
233 | break; | ||
234 | } | ||
235 | case 26: { | ||
236 | generator.setFlag(Generate::TreehouseLayout); | ||
237 | generator.generate(4, 4, | ||
238 | {{{Decoration::Star | Decoration::Color::Magenta, 4}, | ||
239 | {Decoration::Stone | Decoration::Color::Black, 4}, | ||
240 | {Decoration::Stone | Decoration::Color::White, 4}}}); | ||
241 | break; | ||
242 | } | ||
243 | case 27: { | ||
244 | generator.setFlag(Generate::TreehouseLayout); | ||
245 | generator.generate(3, 3, | ||
246 | {{{Decoration::Star | Decoration::Color::Black, 1}, | ||
247 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
248 | {Decoration::Stone | Decoration::Color::White, 2}}}); | ||
249 | break; | ||
250 | } | ||
251 | case 28: { | ||
252 | generator.setFlag(Generate::TreehouseLayout); | ||
253 | generator.generate( | ||
254 | 4, 4, | ||
255 | {{{Decoration::Star | Decoration::Color::White, 2}, | ||
256 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
257 | {Decoration::Stone | Decoration::Color::White, 2}, | ||
258 | {Decoration::Stone | Decoration::Color::Purple, 2}}}); | ||
259 | break; | ||
260 | } | ||
261 | case 29: { | ||
262 | generator.setFlag(Generate::TreehouseLayout); | ||
263 | generator.generate( | ||
264 | 4, 4, | ||
265 | {{{Decoration::Poly | Decoration::Color::Orange, 2}, | ||
266 | {Decoration::Star | Decoration::Color::Magenta, 4}}}); | ||
267 | break; | ||
268 | } | ||
269 | case 30: { | ||
270 | generator.setFlag(Generate::TreehouseLayout); | ||
271 | generator.generate( | ||
272 | 4, 5, | ||
273 | {{{Decoration::Stone | Decoration::Color::White, 8}, | ||
274 | {Decoration::Stone | Decoration::Color::Black, 8}, | ||
275 | {Decoration::Eraser | Decoration::Color::White, 2}}}); | ||
276 | break; | ||
277 | } | ||
278 | case 31: { | ||
279 | generator.setFlag(Generate::TreehouseLayout); | ||
280 | generator.generate(4, 5, | ||
281 | {{{Decoration::Poly | Decoration::Color::Orange, 2}, | ||
282 | {Decoration::Stone | Decoration::Color::White, 4}, | ||
283 | {Decoration::Stone | Decoration::Color::Black, 4}, | ||
284 | {Decoration::Gap, 4}}}); | ||
285 | break; | ||
286 | } | ||
287 | case 32: { | ||
288 | generator.setFlag(Generate::RegularStartEnd); | ||
289 | generator.generate(4, 4, | ||
290 | {{{Decoration::Dot_Intersection, 25}, | ||
291 | {Decoration::Poly | Decoration::Color::Yellow, 2}}}); | ||
292 | break; | ||
293 | } | ||
294 | case 33: { | ||
295 | generator.setFlag(Generate::RegularStartEnd); | ||
296 | generator.generate( | ||
297 | 4, 4, | ||
298 | {{{Decoration::Dot_Intersection, 25}, | ||
299 | {Decoration::Poly | Decoration::Color::Yellow | | ||
300 | Decoration::Can_Rotate, | ||
301 | 2}, | ||
302 | {Decoration::Eraser | Decoration::Color::White, 1}}}); | ||
303 | break; | ||
304 | } | ||
305 | case 34: { | ||
306 | generator.setFlag(Generate::RegularStartEnd); | ||
307 | generator.setSymmetry(Panel::Rotational); | ||
308 | generator.generate(5, 5, | ||
309 | {{{Decoration::Stone | Decoration::Color::Black, 6}, | ||
310 | {Decoration::Stone | Decoration::Color::White, 6}}}); | ||
311 | break; | ||
312 | } | ||
313 | case 35: { | ||
314 | generator.setFlag(Generate::RegularStartEnd); | ||
315 | generator.setSymmetry(Panel::Rotational); | ||
316 | generator.generate(5, 5, | ||
317 | {{{Decoration::Stone | Decoration::Color::Black, 5}, | ||
318 | {Decoration::Stone | Decoration::Color::White, 5}, | ||
319 | {Decoration::Dot, 3}}}); | ||
320 | break; | ||
321 | } | ||
322 | case 36: { | ||
323 | generator.setFlag(Generate::RegularStartEnd); | ||
324 | generator.setFlag(Generate::SplitShapes); | ||
325 | generator.generate(4, 4, | ||
326 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
327 | {Decoration::Gap, 8}}}); | ||
328 | break; | ||
329 | } | ||
330 | case 37: { | ||
331 | generator.setFlag(Generate::RegularStartEnd); | ||
332 | generator.setFlag(Generate::BigShapes); | ||
333 | generator.generate(5, 5, | ||
334 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
335 | {Decoration::Gap, 12}}}); | ||
336 | break; | ||
337 | } | ||
338 | case 38: { | ||
339 | generator.setFlag(Generate::RegularStartEnd); | ||
340 | generator.setFlag(Generate::DisconnectShapes); | ||
341 | generator.generate(3, 3, | ||
342 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}}}); | ||
343 | break; | ||
344 | } | ||
345 | case 39: { | ||
346 | generator.setFlag(Generate::RegularStartEnd); | ||
347 | generator.setFlag(Generate::DisconnectShapes); | ||
348 | generator.setFlag(Generate::BigShapes); | ||
349 | generator.generate(4, 4, | ||
350 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}}}); | ||
351 | break; | ||
352 | } | ||
353 | case 40: { | ||
354 | generator.setFlag(Generate::RegularStartEnd); | ||
355 | generator.setFlag(Generate::RequireCombineShapes); | ||
356 | generator.setFlag(Generate::DisableCancelShapes); | ||
357 | generator.generate( | ||
358 | 3, 3, | ||
359 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
360 | {Decoration::Poly | Decoration::Negative | Decoration::Color::Blue, | ||
361 | 1}}}); | ||
362 | break; | ||
363 | } | ||
364 | case 41: { | ||
365 | generator.setFlag(Generate::RegularStartEnd); | ||
366 | generator.setFlag(Generate::RequireCombineShapes); | ||
367 | generator.setFlag(Generate::DisableCancelShapes); | ||
368 | generator.generate( | ||
369 | 4, 4, | ||
370 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
371 | {Decoration::Poly | Decoration::Negative | Decoration::Color::Blue, | ||
372 | 1}}}); | ||
373 | break; | ||
374 | } | ||
375 | case 42: { | ||
376 | generator.setFlag(Generate::RegularStartEnd); | ||
377 | generator.setFlag(Generate::BigShapes); | ||
378 | generator.setFlag(Generate::DisableCancelShapes); | ||
379 | generator.generate( | ||
380 | 4, 4, | ||
381 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
382 | {Decoration::Poly | Decoration::Negative | Decoration::Color::Blue, | ||
383 | 1}}}); | ||
384 | break; | ||
385 | } | ||
386 | case 43: { | ||
387 | generator.setFlag(Generate::RegularStartEnd); | ||
388 | generator.setFlag(Generate::RequireCancelShapes); | ||
389 | generator.generate( | ||
390 | 4, 4, | ||
391 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
392 | {Decoration::Poly | Decoration::Negative | Decoration::Color::Blue, | ||
393 | 2}}}); | ||
394 | break; | ||
395 | } | ||
396 | case 44: { | ||
397 | generator.setFlag(Generate::RegularStartEnd); | ||
398 | generator.generate( | ||
399 | 4, 4, {{{Decoration::Triangle | Decoration::Color::Orange, 6}}}); | ||
400 | break; | ||
401 | } | ||
402 | case 45: { | ||
403 | generator.setFlag(Generate::TreehouseLayout); | ||
404 | generator.setFlag(Generate::LongPath); | ||
405 | generator.generate(5, 4, | ||
406 | {{{Decoration::Star | Decoration::Color::Magenta, 6}, | ||
407 | {Decoration::Stone | Decoration::Color::Orange, 4}, | ||
408 | {Decoration::Stone | Decoration::Color::Green, 4}}}); | ||
409 | break; | ||
410 | } | ||
411 | case 46: { | ||
412 | generator.setFlag(Generate::RegularStartEnd); | ||
413 | generator.generate(4, 4, | ||
414 | {{{Decoration::Dot, 6}, | ||
415 | {Decoration::Stone | Decoration::Color::Black, 3}, | ||
416 | {Decoration::Stone | Decoration::Color::White, 3}}}); | ||
417 | break; | ||
418 | } | ||
419 | case 47: { | ||
420 | generator.setFlag(Generate::RegularStartEnd); | ||
421 | generator.generate(4, 4, | ||
422 | {{{Decoration::Dot, 4}, | ||
423 | {Decoration::Stone | Decoration::Color::Black, 3}, | ||
424 | {Decoration::Stone | Decoration::Color::White, 2}, | ||
425 | {Decoration::Poly | Decoration::Color::Yellow, 1}}}); | ||
426 | break; | ||
427 | } | ||
428 | } | ||
429 | 402 | ||
430 | Rice::String str(generator.AsCode()); | 403 | Rice::String str(generator.AsCode()); |
431 | return str; | 404 | return str; |
432 | } | 405 | } |
433 | 406 | ||
434 | Rice::Object wittle_generator_generate_medium(Rice::Object /* self */) { | 407 | Rice::Object wittle_generator_generate_medium(Rice::Object /* self */) { |
408 | static std::vector<std::function<void(Generate&)>> generator_fns{ | ||
409 | [](Generate& generator) { | ||
410 | generator.setSymbol(Decoration::Start, 2 * 2, 2 * 2); | ||
411 | generator.setSymbol(Decoration::Exit, 4 * 2, 0); | ||
412 | generator.generate( | ||
413 | 4, 4, | ||
414 | {{{Decoration::Stone | Decoration::Color::White, 5}, | ||
415 | {Decoration::Stone | Decoration::Color::Black, 5}, | ||
416 | {Decoration::Dot, 4}, | ||
417 | {Decoration::Eraser | Decoration::Color::Green, 1}}}); | ||
418 | }, | ||
419 | [](Generate& generator) { | ||
420 | generator.setSymbol(Decoration::Exit, 0, 0); | ||
421 | generator.setSymbol(Decoration::Exit, 7 * 2, 0); | ||
422 | generator.setSymbol(Decoration::Exit, 7 * 2, 7 * 2); | ||
423 | generator.generate(7, 7, | ||
424 | {{{Decoration::Stone | Decoration::Color::White, 10}, | ||
425 | {Decoration::Stone | Decoration::Color::Black, 10}, | ||
426 | {Decoration::Dot, 10}, | ||
427 | {Decoration::Start, 4}}}); | ||
428 | }, | ||
429 | [](Generate& generator) { | ||
430 | generator.setSymbol(Decoration::Exit, 0, 0); | ||
431 | generator.setSymbol(Decoration::Exit, 7 * 2, 0); | ||
432 | generator.setSymbol(Decoration::Exit, 7 * 2, 7 * 2); | ||
433 | generator.generate( | ||
434 | 7, 7, | ||
435 | {{{Decoration::Stone | Decoration::Color::White, 10}, | ||
436 | {Decoration::Stone | Decoration::Color::Black, 10}, | ||
437 | {Decoration::Dot, 10}, | ||
438 | {Decoration::Eraser | Decoration::Color::Purple, 1}, | ||
439 | {Decoration::Start, 3}}}); | ||
440 | }, | ||
441 | [](Generate& generator) { | ||
442 | generator.setFlag(Generate::RegularStartEnd); | ||
443 | generator.generate(5, 5, | ||
444 | {{{Decoration::Star | Decoration::White, 8}, | ||
445 | {Decoration::Star | Decoration::Black, 6}}}); | ||
446 | }, | ||
447 | [](Generate& generator) { | ||
448 | generator.setFlag(Generate::RegularStartEnd); | ||
449 | generator.setFlag(Generate::DisconnectShapes); | ||
450 | generator.generate( | ||
451 | 4, 4, | ||
452 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
453 | {Decoration::Eraser | Decoration::Color::White, 1}}}); | ||
454 | }, | ||
455 | [](Generate& generator) { | ||
456 | generator.setSymbol(Decoration::Start, 2 * 2, 2 * 2); | ||
457 | generator.setSymbol(Decoration::Exit, 4 * 2, 0); | ||
458 | generator.generate( | ||
459 | 4, 4, | ||
460 | {{{Decoration::Dot_Intersection, 25}, | ||
461 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
462 | {Decoration::Stone | Decoration::Color::White, 2}}}); | ||
463 | }, | ||
464 | [](Generate& generator) { | ||
465 | generator.setFlag(Generate::RegularStartEnd); | ||
466 | generator.setFlag(Generate::RequireCancelShapes); | ||
467 | generator.generate(6, 6, | ||
468 | {{{Decoration::Dot_Intersection, 49}, | ||
469 | {Decoration::Poly | Decoration::Color::Yellow, 1}, | ||
470 | {Decoration::Poly | Decoration::Color::Yellow | | ||
471 | Decoration::Can_Rotate, | ||
472 | 2}, | ||
473 | {Decoration::Poly | Decoration::Color::Blue | | ||
474 | Decoration::Negative, | ||
475 | 3}}}); | ||
476 | }, | ||
477 | [](Generate& generator) { | ||
478 | generator.setFlag(Generate::RegularStartEnd); | ||
479 | generator.generate( | ||
480 | 4, 4, | ||
481 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
482 | {Decoration::Eraser | Decoration::Color::White, 1}}}); | ||
483 | }, | ||
484 | [](Generate& generator) { | ||
485 | generator.setSymbol(Decoration::Start, 0, 3 * 2); | ||
486 | generator.setSymbol(Decoration::Exit, 6 * 2, 3 * 2); | ||
487 | generator.generate(6, 3, | ||
488 | {{{Decoration::Star | Decoration::Color::Magenta, 3}, | ||
489 | {Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
490 | {Decoration::Eraser | Decoration::White, 1}}}); | ||
491 | }, | ||
492 | [](Generate& generator) { | ||
493 | generator.setSymbol(Decoration::Start, 0, 3 * 2); | ||
494 | generator.setSymbol(Decoration::Exit, 6 * 2, 3 * 2); | ||
495 | generator.generate(6, 3, | ||
496 | {{{Decoration::Star | Decoration::Color::Magenta, 5}, | ||
497 | {Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
498 | {Decoration::Eraser | Decoration::White, 1}}}); | ||
499 | }, | ||
500 | [](Generate& generator) { | ||
501 | generator.setSymbol(Decoration::Start, 0, 3 * 2); | ||
502 | generator.setSymbol(Decoration::Exit, 6 * 2, 3 * 2); | ||
503 | generator.generate(6, 3, | ||
504 | {{{Decoration::Star | Decoration::Color::Magenta, 6}, | ||
505 | {Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
506 | {Decoration::Eraser | Decoration::White, 1}}}); | ||
507 | }, | ||
508 | [](Generate& generator) { | ||
509 | generator.setSymbol(Decoration::Start, 0, 3 * 2); | ||
510 | generator.setSymbol(Decoration::Exit, 7 * 2, 3 * 2); | ||
511 | generator.generate(7, 3, | ||
512 | {{{Decoration::Star | Decoration::Color::Magenta, 5}, | ||
513 | {Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
514 | {Decoration::Eraser | Decoration::White, 1}}}); | ||
515 | }, | ||
516 | [](Generate& generator) { | ||
517 | generator.setFlag(Generate::TreehouseLayout); | ||
518 | generator.generate( | ||
519 | 4, 4, | ||
520 | {{{Decoration::Star | Decoration::Color::Orange, 6}, | ||
521 | {Decoration::Star | Decoration::Color::Magenta, 6}, | ||
522 | {Decoration::Star | Decoration::Color::Green, 4}}}); | ||
523 | }, | ||
524 | [](Generate& generator) { | ||
525 | generator.setFlag(Generate::TreehouseLayout); | ||
526 | generator.setFlag(Generate::FullGaps); | ||
527 | generator.generate(5, 5, | ||
528 | {{{Decoration::Star | Decoration::Color::Magenta, 8}, | ||
529 | {Decoration::Dot_Intersection, 9}, | ||
530 | {Decoration::Gap, 5}}}); | ||
531 | }, | ||
532 | [](Generate& generator) { | ||
533 | generator.setFlag(Generate::TreehouseLayout); | ||
534 | generator.generate( | ||
535 | 4, 4, | ||
536 | {{{Decoration::Star | Decoration::Color::Black, 4}, | ||
537 | {Decoration::Star | Decoration::Color::White, 4}, | ||
538 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
539 | {Decoration::Stone | Decoration::Color::White, 2}}}); | ||
540 | }, | ||
541 | [](Generate& generator) { | ||
542 | generator.setFlag(Generate::TreehouseLayout); | ||
543 | generator.generate( | ||
544 | 5, 5, | ||
545 | {{{Decoration::Poly | Decoration::Color::Orange, 2}, | ||
546 | {Decoration::Poly | Decoration::Color::Magenta, 1}, | ||
547 | {Decoration::Star | Decoration::Color::Magenta, 3}}}); | ||
548 | }, | ||
549 | [](Generate& generator) { | ||
550 | generator.setFlag(Generate::TreehouseLayout); | ||
551 | generator.setFlag(Generate::RequireCombineShapes); | ||
552 | generator.generate( | ||
553 | 5, 5, | ||
554 | {{{Decoration::Poly | Decoration::Color::Orange, 1}, | ||
555 | {Decoration::Poly | Decoration::Can_Rotate | | ||
556 | Decoration::Color::Orange, | ||
557 | 1}, | ||
558 | {Decoration::Star | Decoration::Color::Magenta, 4}, | ||
559 | {Decoration::Star | Decoration::Color::Green, 4}}}); | ||
560 | }, | ||
561 | [](Generate& generator) { | ||
562 | generator.setFlag(Generate::RegularStartEnd); | ||
563 | generator.generate( | ||
564 | 4, 4, | ||
565 | {{{Decoration::Poly | Decoration::Color::Orange, 3}, | ||
566 | {Decoration::Stone | Decoration::Color::White, 2}, | ||
567 | {Decoration::Stone | Decoration::Color::Black, 2}}}); | ||
568 | }, | ||
569 | [](Generate& generator) { | ||
570 | generator.setFlag(Generate::RegularStartEnd); | ||
571 | generator.generate(4, 4, | ||
572 | {{{Decoration::Dot_Intersection, 25}, | ||
573 | {Decoration::Poly | Decoration::Can_Rotate | | ||
574 | Decoration::Color::Yellow, | ||
575 | 2}}}); | ||
576 | }, | ||
577 | [](Generate& generator) { | ||
578 | generator.setFlag(Generate::RegularStartEnd); | ||
579 | generator.setFlag(Generate::SmallShapes); | ||
580 | generator.generate( | ||
581 | 5, 5, | ||
582 | {{{Decoration::Poly | Decoration::Can_Rotate | | ||
583 | Decoration::Color::Yellow, | ||
584 | 4}, | ||
585 | {Decoration::Star | Decoration::Color::Orange, 6}}}); | ||
586 | }, | ||
587 | [](Generate& generator) { | ||
588 | generator.setFlag(Generate::RegularStartEnd); | ||
589 | generator.generate(5, 5, | ||
590 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
591 | {Decoration::Gap, 5}}}); | ||
592 | }, | ||
593 | [](Generate& generator) { | ||
594 | generator.setFlag(Generate::RegularStartEnd); | ||
595 | generator.generate( | ||
596 | 5, 5, {{{Decoration::Poly | Decoration::Color::Yellow, 4}}}); | ||
597 | }, | ||
598 | [](Generate& generator) { | ||
599 | generator.setFlag(Generate::RegularStartEnd); | ||
600 | generator.setFlag(Generate::DisconnectShapes); | ||
601 | generator.generate( | ||
602 | 4, 4, {{{Decoration::Poly | Decoration::Color::Yellow, 3}}}); | ||
603 | }, | ||
604 | [](Generate& generator) { | ||
605 | generator.setFlag(Generate::RegularStartEnd); | ||
606 | generator.generate(5, 5, | ||
607 | {{{Decoration::Poly | Decoration::Can_Rotate | | ||
608 | Decoration::Color::Yellow, | ||
609 | 2}, | ||
610 | {Decoration::Poly | Decoration::Color::Yellow, 1}, | ||
611 | {Decoration::Gap, 2}}}); | ||
612 | }, | ||
613 | [](Generate& generator) { | ||
614 | generator.setFlag(Generate::RegularStartEnd); | ||
615 | generator.setFlag(Generate::BigShapes); | ||
616 | generator.generate(5, 5, | ||
617 | {{{Decoration::Poly | Decoration::Can_Rotate | | ||
618 | Decoration::Color::Yellow, | ||
619 | 3}}}); | ||
620 | }, | ||
621 | [](Generate& generator) { | ||
622 | generator.setFlag(Generate::RegularStartEnd); | ||
623 | generator.generate( | ||
624 | 5, 6, {{{Decoration::Poly | Decoration::Color::Yellow, 5}}}); | ||
625 | }, | ||
626 | [](Generate& generator) { | ||
627 | generator.setFlag(Generate::RegularStartEnd); | ||
628 | generator.setFlag(Generate::BigShapes); | ||
629 | generator.generate(4, 4, | ||
630 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
631 | {Decoration::Poly | Decoration::Negative | | ||
632 | Decoration::Color::Blue, | ||
633 | 2}}}); | ||
634 | }, | ||
635 | [](Generate& generator) { | ||
636 | generator.setFlag(Generate::RegularStartEnd); | ||
637 | generator.generate(4, 4, | ||
638 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
639 | {Decoration::Poly | Decoration::Negative | | ||
640 | Decoration::Color::Blue, | ||
641 | 2}}}); | ||
642 | }, | ||
643 | [](Generate& generator) { | ||
644 | generator.setFlag(Generate::RegularStartEnd); | ||
645 | generator.generate( | ||
646 | 4, 4, {{{Decoration::Triangle | Decoration::Color::Orange, 8}}}); | ||
647 | }, | ||
648 | [](Generate& generator) { | ||
649 | generator.setFlag(Generate::RegularStartEnd); | ||
650 | generator.setFlag(Generate::LongestPath); | ||
651 | generator.setFlag(Generate::FullGaps); | ||
652 | generator.generate( | ||
653 | 6, 6, | ||
654 | {{{Decoration::Dot_Intersection, 12}, {Decoration::Gap, 18}}}); | ||
655 | }, | ||
656 | [](Generate& generator) { | ||
657 | generator.generate(5, 5, | ||
658 | {{{Decoration::Start, 8}, | ||
659 | {Decoration::Exit, 1}, | ||
660 | {Decoration::Dot_Intersection, 36}}}); | ||
661 | }, | ||
662 | [](Generate& generator) { | ||
663 | generator.setFlag(Generate::RegularStartEnd); | ||
664 | generator.setSymmetry(Panel::Horizontal); | ||
665 | generator.generate( | ||
666 | 6, 6, | ||
667 | {{{Decoration::Triangle | Decoration::Color::Orange, 12}, | ||
668 | {Decoration::Start, 1}, | ||
669 | {Decoration::Exit, 1}}}); | ||
670 | }, | ||
671 | [](Generate& generator) { | ||
672 | generator.setFlag(Generate::RegularStartEnd); | ||
673 | generator.generate( | ||
674 | 4, 4, | ||
675 | {{{Decoration::Dot, 4}, | ||
676 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
677 | {Decoration::Stone | Decoration::Color::White, 2}, | ||
678 | {Decoration::Star | Decoration::Color::Black, 2}, | ||
679 | {Decoration::Star | Decoration::Color::White, 2}}}); | ||
680 | }, | ||
681 | [](Generate& generator) { | ||
682 | generator.setFlag(Generate::RegularStartEnd); | ||
683 | generator.generate( | ||
684 | 4, 4, | ||
685 | {{{Decoration::Dot, 4}, | ||
686 | {Decoration::Stone | Decoration::Color::Black, 1}, | ||
687 | {Decoration::Stone | Decoration::Color::White, 3}, | ||
688 | {Decoration::Star | Decoration::Color::Black, 3}, | ||
689 | {Decoration::Star | Decoration::Color::White, 1}}}); | ||
690 | }, | ||
691 | [](Generate& generator) { | ||
692 | generator.setFlag(Generate::RegularStartEnd); | ||
693 | generator.generate( | ||
694 | 5, 5, | ||
695 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
696 | {Decoration::Stone | Decoration::Color::Black, 4}, | ||
697 | {Decoration::Stone | Decoration::Color::White, 4}}}); | ||
698 | }, | ||
699 | [](Generate& generator) { | ||
700 | generator.setFlag(Generate::RegularStartEnd); | ||
701 | generator.generate( | ||
702 | 5, 5, | ||
703 | {{{Decoration::Stone | Decoration::Color::Cyan, 2}, | ||
704 | {Decoration::Stone | Decoration::Color::Yellow, 2}, | ||
705 | {Decoration::Star | Decoration::Color::Cyan, 3}, | ||
706 | {Decoration::Star | Decoration::Color::Yellow, 3}}}); | ||
707 | }, | ||
708 | [](Generate& generator) { | ||
709 | generator.setFlag(Generate::RegularStartEnd); | ||
710 | generator.generate( | ||
711 | 6, 6, | ||
712 | {{{Decoration::Stone | Decoration::Color::Cyan, 2}, | ||
713 | {Decoration::Stone | Decoration::Color::Magenta, 2}, | ||
714 | {Decoration::Star | Decoration::Color::Cyan, 2}, | ||
715 | {Decoration::Star | Decoration::Color::Magenta, 1}, | ||
716 | {Decoration::Poly | Decoration::Color::Cyan, 1}, | ||
717 | {Decoration::Poly | Decoration::Color::Magenta, 1}}}); | ||
718 | }, | ||
719 | [](Generate& generator) { | ||
720 | generator.setFlag(Generate::RegularStartEnd); | ||
721 | generator.generate( | ||
722 | 5, 5, {{{Decoration::Triangle | Decoration::Color::Orange, 10}}}); | ||
723 | }, | ||
724 | [](Generate& generator) { | ||
725 | generator.setFlag(Generate::RegularStartEnd); | ||
726 | generator.generate( | ||
727 | 5, 3, | ||
728 | {{{Decoration::Stone | Decoration::Color::Black, 4}, | ||
729 | {Decoration::Stone | Decoration::Color::White, 3}, | ||
730 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
731 | }, | ||
732 | [](Generate& generator) { | ||
733 | generator.setFlag(Generate::RegularStartEnd); | ||
734 | generator.generate( | ||
735 | 4, 4, | ||
736 | {{{Decoration::Dot, 25}, | ||
737 | {Decoration::Triangle | Decoration::Color::Orange, 6}}}); | ||
738 | }, | ||
739 | [](Generate& generator) { | ||
740 | generator.setFlag(Generate::RegularStartEnd); | ||
741 | generator.setFlag(Generate::RequireCombineShapes); | ||
742 | generator.setSymmetry(Panel::Rotational); | ||
743 | generator.generate( | ||
744 | 5, 5, {{{Decoration::Poly | Decoration::Color::Yellow, 3}}}); | ||
745 | }, | ||
746 | [](Generate& generator) { | ||
747 | generator.setFlag(Generate::RegularStartEnd); | ||
748 | generator.setFlag(Generate::DisconnectShapes); | ||
749 | generator.setFlag(Generate::BigShapes); | ||
750 | generator.generate( | ||
751 | 5, 5, {{{Decoration::Poly | Decoration::Color::Yellow, 3}}}); | ||
752 | }, | ||
753 | [](Generate& generator) { | ||
754 | generator.setFlag(Generate::RegularStartEnd); | ||
755 | generator.setFlag(Generate::DisconnectShapes); | ||
756 | generator.generate(4, 4, | ||
757 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
758 | {Decoration::Poly | Decoration::Color::Blue | | ||
759 | Decoration::Negative, | ||
760 | 1}}}); | ||
761 | }, | ||
762 | [](Generate& generator) { | ||
763 | generator.setFlag(Generate::RegularStartEnd); | ||
764 | generator.generate( | ||
765 | 4, 4, | ||
766 | {{{Decoration::Stone | Decoration::Color::Black, 3}, | ||
767 | {Decoration::Stone | Decoration::Color::White, 3}, | ||
768 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
769 | }, | ||
770 | [](Generate& generator) { | ||
771 | generator.setFlag(Generate::RegularStartEnd); | ||
772 | generator.generate( | ||
773 | 4, 4, | ||
774 | {{{Decoration::Star | Decoration::Color::Black, 4}, | ||
775 | {Decoration::Star | Decoration::Color::White, 4}, | ||
776 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
777 | }, | ||
778 | [](Generate& generator) { | ||
779 | generator.setFlag(Generate::RegularStartEnd); | ||
780 | generator.generate( | ||
781 | 4, 4, | ||
782 | {{{Decoration::Star | Decoration::Color::Orange, 3}, | ||
783 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
784 | }, | ||
785 | [](Generate& generator) { | ||
786 | generator.setFlag(Generate::RegularStartEnd); | ||
787 | generator.generate( | ||
788 | 4, 4, | ||
789 | {{{Decoration::Star | Decoration::Color::Black, 2}, | ||
790 | {Decoration::Star | Decoration::Color::Orange, 2}, | ||
791 | {Decoration::Stone | Decoration::Color::Black, 1}, | ||
792 | {Decoration::Stone | Decoration::Color::Orange, 1}, | ||
793 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
794 | }, | ||
795 | [](Generate& generator) { | ||
796 | generator.setFlag(Generate::RegularStartEnd); | ||
797 | generator.setFlag(Generate::BigShapes); | ||
798 | generator.generate( | ||
799 | 4, 4, | ||
800 | {{{Decoration::Poly | Decoration::Color::Yellow | | ||
801 | Decoration::Can_Rotate, | ||
802 | 1}, | ||
803 | {Decoration::Triangle | Decoration::Color::Orange, 3}}}); | ||
804 | }, | ||
805 | [](Generate& generator) { | ||
806 | generator.setFlag(Generate::RegularStartEnd); | ||
807 | generator.setFlag(Generate::BigShapes); | ||
808 | generator.generate( | ||
809 | 5, 5, | ||
810 | {{{Decoration::Poly | Decoration::Color::Yellow | | ||
811 | Decoration::Can_Rotate, | ||
812 | 1}, | ||
813 | {Decoration::Triangle | Decoration::Color::Orange, 6}}}); | ||
814 | }, | ||
815 | [](Generate& generator) { | ||
816 | generator.setFlag(Generate::RegularStartEnd); | ||
817 | generator.setFlag(Generate::BigShapes); | ||
818 | generator.generate( | ||
819 | 5, 5, | ||
820 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
821 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
822 | }, | ||
823 | [](Generate& generator) { | ||
824 | generator.setFlag(Generate::RegularStartEnd); | ||
825 | generator.generate( | ||
826 | 4, 4, | ||
827 | {{{Decoration::Dot, 25}, | ||
828 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
829 | }, | ||
830 | [](Generate& generator) { | ||
831 | generator.setSymbol(Decoration::Start, 0, 4 * 2); | ||
832 | generator.setSymbol(Decoration::Exit, 0, 0); | ||
833 | generator.generate( | ||
834 | 4, 4, | ||
835 | {{{Decoration::Dot, 25}, | ||
836 | {Decoration::Triangle | Decoration::Color::Orange, 5}}}); | ||
837 | }, | ||
838 | [](Generate& generator) { | ||
839 | generator.setSymbol(Decoration::Start, 0, 4 * 2); | ||
840 | generator.setSymbol(Decoration::Exit, 4 * 2, 4 * 2); | ||
841 | generator.generate( | ||
842 | 4, 4, | ||
843 | {{{Decoration::Dot, 25}, | ||
844 | {Decoration::Triangle | Decoration::Color::Orange, 5}}}); | ||
845 | }, | ||
846 | [](Generate& generator) { | ||
847 | generator.setFlag(Generate::RegularStartEnd); | ||
848 | generator.generate( | ||
849 | 4, 4, | ||
850 | {{{Decoration::Dot, 25}, | ||
851 | {Decoration::Triangle | Decoration::Color::Orange, 6}}}); | ||
852 | }, | ||
853 | [](Generate& generator) { | ||
854 | generator.setFlag(Generate::RegularStartEnd); | ||
855 | generator.setFlag(Generate::DisconnectShapes); | ||
856 | generator.generate(5, 5, | ||
857 | {{{Decoration::Poly | Decoration::Color::Yellow | | ||
858 | Decoration::Can_Rotate, | ||
859 | 3}}}); | ||
860 | }, | ||
861 | [](Generate& generator) { | ||
862 | generator.setFlag(Generate::TreehouseLayout); | ||
863 | generator.generate( | ||
864 | 4, 4, | ||
865 | {{{Decoration::Star | Decoration::Color::Black, 4}, | ||
866 | {Decoration::Star | Decoration::Color::White, 4}, | ||
867 | {Decoration::Star | Decoration::Color::Orange, 4}, | ||
868 | {Decoration::Stone | Decoration::Color::Black, 1}, | ||
869 | {Decoration::Stone | Decoration::Color::White, 1}}}); | ||
870 | }, | ||
871 | [](Generate& generator) { | ||
872 | generator.setFlag(Generate::RegularStartEnd); | ||
873 | generator.generate( | ||
874 | 3, 3, | ||
875 | {{{Decoration::Stone | Decoration::Color::Magenta, 2}, | ||
876 | {Decoration::Stone | Decoration::Color::Green, 1}, | ||
877 | {Decoration::Star | Decoration::Color::Magenta, 2}, | ||
878 | {Decoration::Star | Decoration::Color::Green, 3}, | ||
879 | {Decoration::Eraser | Decoration::Color::Magenta, 1}}}); | ||
880 | }, | ||
881 | [](Generate& generator) { | ||
882 | generator.setFlag(Generate::RegularStartEnd); | ||
883 | generator.generate( | ||
884 | 4, 4, | ||
885 | {{{Decoration::Dot_Intersection, 25}, | ||
886 | {Decoration::Poly | Decoration::Color::Yellow, 3}}}); | ||
887 | }, | ||
888 | [](Generate& generator) { | ||
889 | generator.setSymbol(Decoration::Start, 2 * 2, 2 * 2); | ||
890 | generator.setSymbol(Decoration::Exit, 4 * 2, 0); | ||
891 | generator.generate(4, 4, | ||
892 | {{{Decoration::Dot_Intersection, 25}, | ||
893 | {Decoration::Poly | Decoration::Color::Yellow | | ||
894 | Decoration::Can_Rotate, | ||
895 | 2}}}); | ||
896 | }, | ||
897 | [](Generate& generator) { | ||
898 | generator.setFlag(Generate::RegularStartEnd); | ||
899 | generator.generate( | ||
900 | 5, 5, | ||
901 | {{{Decoration::Poly | Decoration::Color::Green, 4}, | ||
902 | {Decoration::Star | Decoration::Color::Green, 3}}}); | ||
903 | }, | ||
904 | [](Generate& generator) { | ||
905 | generator.setFlag(Generate::RegularStartEnd); | ||
906 | generator.generate( | ||
907 | 4, 4, {{{Decoration::Triangle2 | Decoration::Color::Orange, 12}}}); | ||
908 | }, | ||
909 | [](Generate& generator) { | ||
910 | generator.setSymbol(Decoration::Exit, 0, 0); | ||
911 | generator.setSymbol(Decoration::Exit, 7 * 2, 0); | ||
912 | generator.setSymbol(Decoration::Exit, 7 * 2, 7 * 2); | ||
913 | generator.generate( | ||
914 | 7, 7, | ||
915 | {{{Decoration::Triangle | Decoration::Color::Orange, 12}, | ||
916 | {Decoration::Start, 3}}}); | ||
917 | }, | ||
918 | [](Generate& generator) { | ||
919 | generator.setFlag(Generate::TreehouseLayout); | ||
920 | generator.generate( | ||
921 | 4, 4, | ||
922 | {{{Decoration::Star | Decoration::Color::Orange, 1}, | ||
923 | {Decoration::Triangle | Decoration::Color::Orange, 7}}}); | ||
924 | }, | ||
925 | [](Generate& generator) { | ||
926 | generator.setFlag(Generate::TreehouseLayout); | ||
927 | generator.generate( | ||
928 | 4, 4, | ||
929 | {{{Decoration::Star | Decoration::Color::Orange, 3}, | ||
930 | {Decoration::Star | Decoration::Color::Magenta, 2}, | ||
931 | {Decoration::Triangle | Decoration::Color::Orange, 2}, | ||
932 | {Decoration::Triangle | Decoration::Color::Magenta, 2}}}); | ||
933 | }, | ||
934 | [](Generate& generator) { | ||
935 | generator.setFlag(Generate::TreehouseLayout); | ||
936 | generator.generate(4, 4, | ||
937 | {{{Decoration::Star | Decoration::Color::Magenta, 4}, | ||
938 | {Decoration::Dot_Intersection, 25}}}); | ||
939 | }, | ||
940 | [](Generate& generator) { | ||
941 | generator.setSymmetry(Panel::Symmetry::FlipNegXY); | ||
942 | generator.generate(7, 7, | ||
943 | {{{Decoration::Gap, 10}, | ||
944 | {Decoration::Dot_Intersection, 8}, | ||
945 | {Decoration::Start, 2}, | ||
946 | {Decoration::Exit, 1}}}); | ||
947 | }, | ||
948 | [](Generate& generator) { | ||
949 | generator.setSymmetry(Panel::Symmetry::ParallelV); | ||
950 | generator.generate(7, 7, | ||
951 | {{{Decoration::Gap, 12}, | ||
952 | {Decoration::Dot_Intersection, 10}, | ||
953 | {Decoration::Start, 2}, | ||
954 | {Decoration::Exit, 1}}}); | ||
955 | }, | ||
956 | [](Generate& generator) { | ||
957 | generator.setSymmetry(Panel::Symmetry::ParallelHFlip); | ||
958 | generator.generate(7, 7, | ||
959 | {{{Decoration::Gap, 12}, | ||
960 | {Decoration::Dot_Intersection, 10}, | ||
961 | {Decoration::Start, 2}, | ||
962 | {Decoration::Exit, 1}}}); | ||
963 | }, | ||
964 | [](Generate& generator) { | ||
965 | generator.setFlag(Generate::StartEdgeOnly); | ||
966 | generator.setSymbol(Decoration::Exit, 4 * 2, 0); | ||
967 | generator.generate(4, 4, | ||
968 | {{{Decoration::Dot_Intersection, 25}, | ||
969 | {Decoration::Poly | Decoration::Color::Yellow, 1}, | ||
970 | {Decoration::Poly | Decoration::Color::Yellow | | ||
971 | Decoration::Can_Rotate, | ||
972 | 2}, | ||
973 | {Decoration::Start, 1}}}); | ||
974 | }, | ||
975 | [](Generate& generator) { | ||
976 | generator.setFlag(Generate::RegularStartEnd); | ||
977 | generator.generate( | ||
978 | 4, 4, | ||
979 | {{{Decoration::Triangle | Decoration::Color::Orange, 15}, | ||
980 | {Decoration::Eraser | Decoration::Color::Purple, 1}}}); | ||
981 | }, | ||
982 | [](Generate& generator) { | ||
983 | generator.setFlag(Generate::RegularStartEnd); | ||
984 | generator.generate( | ||
985 | 4, 4, | ||
986 | {{{Decoration::Stone | Decoration::Color::White, 1}, | ||
987 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
988 | {Decoration::Stone | Decoration::Color::Red, 2}, | ||
989 | {Decoration::Star | Decoration::Color::White, 4}, | ||
990 | {Decoration::Star | Decoration::Color::Black, 3}, | ||
991 | {Decoration::Star | Decoration::Color::Red, 3}, | ||
992 | {Decoration::Decoration::Eraser | Decoration::Color::Green, 1}}}); | ||
993 | }, | ||
994 | [](Generate& generator) { | ||
995 | generator.setFlag(Generate::RegularStartEnd); | ||
996 | generator.generate( | ||
997 | 4, 4, | ||
998 | {{{Decoration::Poly | Decoration::Color::Yellow, 1}, | ||
999 | {Decoration::Poly | Decoration::Color::Yellow | | ||
1000 | Decoration::Can_Rotate, | ||
1001 | 1}, | ||
1002 | {Decoration::Triangle | Decoration::Color::Orange, 3}}}); | ||
1003 | }, | ||
1004 | [](Generate& generator) { | ||
1005 | generator.setFlag(Generate::RegularStartEnd); | ||
1006 | generator.generate( | ||
1007 | 4, 4, | ||
1008 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
1009 | {Decoration::Poly | Decoration::Color::Yellow | | ||
1010 | Decoration::Can_Rotate, | ||
1011 | 1}, | ||
1012 | {Decoration::Triangle | Decoration::Color::Orange, 2}, | ||
1013 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
1014 | {Decoration::Stone | Decoration::Color::White, 2}}}); | ||
1015 | }, | ||
1016 | [](Generate& generator) { | ||
1017 | generator.setFlag(Generate::RegularStartEnd); | ||
1018 | generator.setSymmetry(Panel::Vertical); | ||
1019 | generator.generate( | ||
1020 | 7, 7, {{{Decoration::Poly | Decoration::Color::Yellow, 5}}}); | ||
1021 | }, | ||
1022 | }; | ||
1023 | |||
435 | Generate generator; | 1024 | Generate generator; |
436 | 1025 | ||
437 | int choice = Random::rand() % 69; | 1026 | int choice = Random::rand() % generator_fns.size(); |
438 | std::cout << "Generate MEDIUM: choice " << std::dec << choice << std::endl; | 1027 | std::cout << "Generate MEDIUM: choice " << std::dec << choice << std::endl; |
439 | 1028 | ||
440 | switch (choice) { | 1029 | generator_fns.at(choice)(generator); |
441 | case 0: { | ||
442 | generator.setSymbol(Decoration::Start, 2 * 2, 2 * 2); | ||
443 | generator.setSymbol(Decoration::Exit, 4 * 2, 0); | ||
444 | generator.generate( | ||
445 | 4, 4, | ||
446 | {{{Decoration::Stone | Decoration::Color::White, 5}, | ||
447 | {Decoration::Stone | Decoration::Color::Black, 5}, | ||
448 | {Decoration::Dot, 4}, | ||
449 | {Decoration::Eraser | Decoration::Color::Green, 1}}}); | ||
450 | break; | ||
451 | } | ||
452 | case 1: { | ||
453 | generator.setSymbol(Decoration::Exit, 0, 0); | ||
454 | generator.setSymbol(Decoration::Exit, 7 * 2, 0); | ||
455 | generator.setSymbol(Decoration::Exit, 7 * 2, 7 * 2); | ||
456 | generator.generate(7, 7, | ||
457 | {{{Decoration::Stone | Decoration::Color::White, 10}, | ||
458 | {Decoration::Stone | Decoration::Color::Black, 10}, | ||
459 | {Decoration::Dot, 10}, | ||
460 | {Decoration::Start, 4}}}); | ||
461 | break; | ||
462 | } | ||
463 | case 2: { | ||
464 | generator.setSymbol(Decoration::Exit, 0, 0); | ||
465 | generator.setSymbol(Decoration::Exit, 7 * 2, 0); | ||
466 | generator.setSymbol(Decoration::Exit, 7 * 2, 7 * 2); | ||
467 | generator.generate(7, 7, | ||
468 | {{{Decoration::Stone | Decoration::Color::White, 10}, | ||
469 | {Decoration::Stone | Decoration::Color::Black, 10}, | ||
470 | {Decoration::Dot, 10}, | ||
471 | {Decoration::Eraser | Decoration::Color::Purple, 1}, | ||
472 | {Decoration::Start, 3}}}); | ||
473 | break; | ||
474 | } | ||
475 | case 3: { | ||
476 | generator.setFlag(Generate::RegularStartEnd); | ||
477 | generator.generate(5, 5, | ||
478 | {{{Decoration::Star | Decoration::White, 8}, | ||
479 | {Decoration::Star | Decoration::Black, 6}}}); | ||
480 | break; | ||
481 | } | ||
482 | case 4: { | ||
483 | generator.setFlag(Generate::RegularStartEnd); | ||
484 | generator.setFlag(Generate::DisconnectShapes); | ||
485 | generator.generate( | ||
486 | 4, 4, | ||
487 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
488 | {Decoration::Eraser | Decoration::Color::White, 1}}}); | ||
489 | break; | ||
490 | } | ||
491 | case 5: { | ||
492 | generator.setSymbol(Decoration::Start, 2 * 2, 2 * 2); | ||
493 | generator.setSymbol(Decoration::Exit, 4 * 2, 0); | ||
494 | generator.generate(4, 4, | ||
495 | {{{Decoration::Dot_Intersection, 25}, | ||
496 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
497 | {Decoration::Stone | Decoration::Color::White, 2}}}); | ||
498 | break; | ||
499 | } | ||
500 | case 6: { | ||
501 | generator.setSymmetry(Panel::Rotational); | ||
502 | generator.generate(5, 5, | ||
503 | {{{Decoration::Dot | Decoration::Color::Blue, 2}, | ||
504 | {Decoration::Dot | Decoration::Color::Yellow, 2}, | ||
505 | {Decoration::Dot, 4}, | ||
506 | {Decoration::Start, 2}, | ||
507 | {Decoration::Exit, 1}}}); | ||
508 | break; | ||
509 | } | ||
510 | case 7: { | ||
511 | generator.setFlag(Generate::RegularStartEnd); | ||
512 | generator.setFlag(Generate::RequireCancelShapes); | ||
513 | generator.generate( | ||
514 | 6, 6, | ||
515 | {{{Decoration::Dot_Intersection, 49}, | ||
516 | {Decoration::Poly | Decoration::Color::Yellow, 1}, | ||
517 | {Decoration::Poly | Decoration::Color::Yellow | | ||
518 | Decoration::Can_Rotate, | ||
519 | 2}, | ||
520 | {Decoration::Poly | Decoration::Color::Blue | Decoration::Negative, | ||
521 | 3}}}); | ||
522 | break; | ||
523 | } | ||
524 | case 8: { | ||
525 | generator.setFlag(Generate::RegularStartEnd); | ||
526 | generator.generate( | ||
527 | 4, 4, | ||
528 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
529 | {Decoration::Eraser | Decoration::Color::White, 1}}}); | ||
530 | break; | ||
531 | } | ||
532 | case 9: { | ||
533 | generator.setSymbol(Decoration::Start, 0, 3 * 2); | ||
534 | generator.setSymbol(Decoration::Exit, 6 * 2, 3 * 2); | ||
535 | generator.generate(6, 3, | ||
536 | {{{Decoration::Star | Decoration::Color::Magenta, 3}, | ||
537 | {Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
538 | {Decoration::Eraser | Decoration::White, 1}}}); | ||
539 | break; | ||
540 | } | ||
541 | case 10: { | ||
542 | generator.setSymbol(Decoration::Start, 0, 3 * 2); | ||
543 | generator.setSymbol(Decoration::Exit, 6 * 2, 3 * 2); | ||
544 | generator.generate(6, 3, | ||
545 | {{{Decoration::Star | Decoration::Color::Magenta, 5}, | ||
546 | {Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
547 | {Decoration::Eraser | Decoration::White, 1}}}); | ||
548 | break; | ||
549 | } | ||
550 | case 11: { | ||
551 | generator.setSymbol(Decoration::Start, 0, 3 * 2); | ||
552 | generator.setSymbol(Decoration::Exit, 6 * 2, 3 * 2); | ||
553 | generator.generate(6, 3, | ||
554 | {{{Decoration::Star | Decoration::Color::Magenta, 6}, | ||
555 | {Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
556 | {Decoration::Eraser | Decoration::White, 1}}}); | ||
557 | break; | ||
558 | } | ||
559 | case 12: { | ||
560 | generator.setSymbol(Decoration::Start, 0, 3 * 2); | ||
561 | generator.setSymbol(Decoration::Exit, 7 * 2, 3 * 2); | ||
562 | generator.generate(7, 3, | ||
563 | {{{Decoration::Star | Decoration::Color::Magenta, 5}, | ||
564 | {Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
565 | {Decoration::Eraser | Decoration::White, 1}}}); | ||
566 | break; | ||
567 | } | ||
568 | case 13: { | ||
569 | generator.setFlag(Generate::TreehouseLayout); | ||
570 | generator.generate(4, 4, | ||
571 | {{{Decoration::Star | Decoration::Color::Orange, 6}, | ||
572 | {Decoration::Star | Decoration::Color::Magenta, 6}, | ||
573 | {Decoration::Star | Decoration::Color::Green, 4}}}); | ||
574 | break; | ||
575 | } | ||
576 | case 14: { | ||
577 | generator.setFlag(Generate::TreehouseLayout); | ||
578 | generator.setFlag(Generate::FullGaps); | ||
579 | generator.generate(5, 5, | ||
580 | {{{Decoration::Star | Decoration::Color::Magenta, 8}, | ||
581 | {Decoration::Dot_Intersection, 9}, | ||
582 | {Decoration::Gap, 5}}}); | ||
583 | break; | ||
584 | } | ||
585 | case 15: { | ||
586 | generator.setFlag(Generate::TreehouseLayout); | ||
587 | generator.generate(4, 4, | ||
588 | {{{Decoration::Star | Decoration::Color::Black, 4}, | ||
589 | {Decoration::Star | Decoration::Color::White, 4}, | ||
590 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
591 | {Decoration::Stone | Decoration::Color::White, 2}}}); | ||
592 | break; | ||
593 | } | ||
594 | case 16: { | ||
595 | generator.setFlag(Generate::TreehouseLayout); | ||
596 | generator.generate( | ||
597 | 5, 5, | ||
598 | {{{Decoration::Poly | Decoration::Color::Orange, 2}, | ||
599 | {Decoration::Poly | Decoration::Color::Magenta, 1}, | ||
600 | {Decoration::Star | Decoration::Color::Magenta, 3}}}); | ||
601 | break; | ||
602 | } | ||
603 | case 17: { | ||
604 | generator.setFlag(Generate::TreehouseLayout); | ||
605 | generator.setFlag(Generate::RequireCombineShapes); | ||
606 | generator.generate(5, 5, | ||
607 | {{{Decoration::Poly | Decoration::Color::Orange, 1}, | ||
608 | {Decoration::Poly | Decoration::Can_Rotate | | ||
609 | Decoration::Color::Orange, | ||
610 | 1}, | ||
611 | {Decoration::Star | Decoration::Color::Magenta, 4}, | ||
612 | {Decoration::Star | Decoration::Color::Green, 4}}}); | ||
613 | break; | ||
614 | } | ||
615 | case 18: { | ||
616 | generator.setFlag(Generate::RegularStartEnd); | ||
617 | generator.generate(4, 4, | ||
618 | {{{Decoration::Poly | Decoration::Color::Orange, 3}, | ||
619 | {Decoration::Stone | Decoration::Color::White, 2}, | ||
620 | {Decoration::Stone | Decoration::Color::Black, 2}}}); | ||
621 | break; | ||
622 | } | ||
623 | case 19: { | ||
624 | generator.setFlag(Generate::RegularStartEnd); | ||
625 | generator.generate(4, 4, | ||
626 | {{{Decoration::Dot_Intersection, 25}, | ||
627 | {Decoration::Poly | Decoration::Can_Rotate | | ||
628 | Decoration::Color::Yellow, | ||
629 | 2}}}); | ||
630 | break; | ||
631 | } | ||
632 | case 20: { | ||
633 | generator.setFlag(Generate::RegularStartEnd); | ||
634 | generator.setFlag(Generate::SmallShapes); | ||
635 | generator.generate(5, 5, | ||
636 | {{{Decoration::Poly | Decoration::Can_Rotate | | ||
637 | Decoration::Color::Yellow, | ||
638 | 4}, | ||
639 | {Decoration::Star | Decoration::Color::Orange, 6}}}); | ||
640 | break; | ||
641 | } | ||
642 | case 21: { | ||
643 | generator.setFlag(Generate::RegularStartEnd); | ||
644 | generator.generate(5, 5, | ||
645 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
646 | {Decoration::Gap, 5}}}); | ||
647 | break; | ||
648 | } | ||
649 | case 22: { | ||
650 | generator.setFlag(Generate::RegularStartEnd); | ||
651 | generator.generate(5, 5, | ||
652 | {{{Decoration::Poly | Decoration::Color::Yellow, 4}}}); | ||
653 | break; | ||
654 | } | ||
655 | case 23: { | ||
656 | generator.setFlag(Generate::RegularStartEnd); | ||
657 | generator.setFlag(Generate::DisconnectShapes); | ||
658 | generator.generate(4, 4, | ||
659 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}}}); | ||
660 | break; | ||
661 | } | ||
662 | case 24: { | ||
663 | generator.setFlag(Generate::RegularStartEnd); | ||
664 | generator.generate(5, 5, | ||
665 | {{{Decoration::Poly | Decoration::Can_Rotate | | ||
666 | Decoration::Color::Yellow, | ||
667 | 2}, | ||
668 | {Decoration::Poly | Decoration::Color::Yellow, 1}, | ||
669 | {Decoration::Gap, 2}}}); | ||
670 | break; | ||
671 | } | ||
672 | case 25: { | ||
673 | generator.setFlag(Generate::RegularStartEnd); | ||
674 | generator.setFlag(Generate::BigShapes); | ||
675 | generator.generate(5, 5, | ||
676 | {{{Decoration::Poly | Decoration::Can_Rotate | | ||
677 | Decoration::Color::Yellow, | ||
678 | 3}}}); | ||
679 | break; | ||
680 | } | ||
681 | case 26: { | ||
682 | generator.setFlag(Generate::RegularStartEnd); | ||
683 | generator.generate(5, 6, | ||
684 | {{{Decoration::Poly | Decoration::Color::Yellow, 5}}}); | ||
685 | break; | ||
686 | } | ||
687 | case 27: { | ||
688 | generator.setFlag(Generate::RegularStartEnd); | ||
689 | generator.setFlag(Generate::BigShapes); | ||
690 | generator.generate( | ||
691 | 4, 4, | ||
692 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
693 | {Decoration::Poly | Decoration::Negative | Decoration::Color::Blue, | ||
694 | 2}}}); | ||
695 | break; | ||
696 | } | ||
697 | case 28: { | ||
698 | generator.setFlag(Generate::RegularStartEnd); | ||
699 | generator.generate( | ||
700 | 4, 4, | ||
701 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
702 | {Decoration::Poly | Decoration::Negative | Decoration::Color::Blue, | ||
703 | 2}}}); | ||
704 | break; | ||
705 | } | ||
706 | case 29: { | ||
707 | generator.setFlag(Generate::RegularStartEnd); | ||
708 | generator.generate( | ||
709 | 4, 4, {{{Decoration::Triangle | Decoration::Color::Orange, 8}}}); | ||
710 | break; | ||
711 | } | ||
712 | case 30: { | ||
713 | generator.setFlag(Generate::RegularStartEnd); | ||
714 | generator.setFlag(Generate::LongestPath); | ||
715 | generator.setFlag(Generate::FullGaps); | ||
716 | generator.generate( | ||
717 | 6, 6, {{{Decoration::Dot_Intersection, 12}, {Decoration::Gap, 18}}}); | ||
718 | break; | ||
719 | } | ||
720 | case 31: { | ||
721 | generator.generate(5, 5, | ||
722 | {{{Decoration::Start, 8}, | ||
723 | {Decoration::Exit, 1}, | ||
724 | {Decoration::Dot_Intersection, 36}}}); | ||
725 | break; | ||
726 | } | ||
727 | case 32: { | ||
728 | generator.setFlag(Generate::RegularStartEnd); | ||
729 | generator.setSymmetry(Panel::Horizontal); | ||
730 | generator.generate( | ||
731 | 6, 6, | ||
732 | {{{Decoration::Triangle | Decoration::Color::Orange, 12}, | ||
733 | {Decoration::Start, 1}, | ||
734 | {Decoration::Exit, 1}}}); | ||
735 | break; | ||
736 | } | ||
737 | case 33: { | ||
738 | generator.setFlag(Generate::RegularStartEnd); | ||
739 | generator.generate(4, 4, | ||
740 | {{{Decoration::Dot, 4}, | ||
741 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
742 | {Decoration::Stone | Decoration::Color::White, 2}, | ||
743 | {Decoration::Star | Decoration::Color::Black, 2}, | ||
744 | {Decoration::Star | Decoration::Color::White, 2}}}); | ||
745 | break; | ||
746 | } | ||
747 | case 34: { | ||
748 | generator.setFlag(Generate::RegularStartEnd); | ||
749 | generator.generate(4, 4, | ||
750 | {{{Decoration::Dot, 4}, | ||
751 | {Decoration::Stone | Decoration::Color::Black, 1}, | ||
752 | {Decoration::Stone | Decoration::Color::White, 3}, | ||
753 | {Decoration::Star | Decoration::Color::Black, 3}, | ||
754 | {Decoration::Star | Decoration::Color::White, 1}}}); | ||
755 | break; | ||
756 | } | ||
757 | case 35: { | ||
758 | generator.setFlag(Generate::RegularStartEnd); | ||
759 | generator.generate(5, 5, | ||
760 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
761 | {Decoration::Stone | Decoration::Color::Black, 4}, | ||
762 | {Decoration::Stone | Decoration::Color::White, 4}}}); | ||
763 | break; | ||
764 | } | ||
765 | case 36: { | ||
766 | generator.setFlag(Generate::RegularStartEnd); | ||
767 | generator.generate(5, 5, | ||
768 | {{{Decoration::Stone | Decoration::Color::Cyan, 2}, | ||
769 | {Decoration::Stone | Decoration::Color::Yellow, 2}, | ||
770 | {Decoration::Star | Decoration::Color::Cyan, 3}, | ||
771 | {Decoration::Star | Decoration::Color::Yellow, 3}}}); | ||
772 | break; | ||
773 | } | ||
774 | case 37: { | ||
775 | generator.setFlag(Generate::RegularStartEnd); | ||
776 | generator.generate( | ||
777 | 6, 6, | ||
778 | {{{Decoration::Stone | Decoration::Color::Cyan, 2}, | ||
779 | {Decoration::Stone | Decoration::Color::Magenta, 2}, | ||
780 | {Decoration::Star | Decoration::Color::Cyan, 2}, | ||
781 | {Decoration::Star | Decoration::Color::Magenta, 1}, | ||
782 | {Decoration::Poly | Decoration::Color::Cyan, 1}, | ||
783 | {Decoration::Poly | Decoration::Color::Magenta, 1}}}); | ||
784 | break; | ||
785 | } | ||
786 | case 38: { | ||
787 | generator.setFlag(Generate::RegularStartEnd); | ||
788 | generator.generate( | ||
789 | 5, 5, {{{Decoration::Triangle | Decoration::Color::Orange, 10}}}); | ||
790 | break; | ||
791 | } | ||
792 | case 39: { | ||
793 | generator.setFlag(Generate::RegularStartEnd); | ||
794 | generator.generate( | ||
795 | 5, 3, | ||
796 | {{{Decoration::Stone | Decoration::Color::Black, 4}, | ||
797 | {Decoration::Stone | Decoration::Color::White, 3}, | ||
798 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
799 | break; | ||
800 | } | ||
801 | case 40: { | ||
802 | generator.setFlag(Generate::RegularStartEnd); | ||
803 | generator.generate( | ||
804 | 4, 4, | ||
805 | {{{Decoration::Dot, 25}, | ||
806 | {Decoration::Triangle | Decoration::Color::Orange, 6}}}); | ||
807 | break; | ||
808 | } | ||
809 | case 41: { | ||
810 | generator.setFlag(Generate::RegularStartEnd); | ||
811 | generator.setFlag(Generate::RequireCombineShapes); | ||
812 | generator.setSymmetry(Panel::Rotational); | ||
813 | generator.generate(5, 5, | ||
814 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}}}); | ||
815 | break; | ||
816 | } | ||
817 | case 42: { | ||
818 | generator.setFlag(Generate::RegularStartEnd); | ||
819 | generator.setFlag(Generate::DisconnectShapes); | ||
820 | generator.setFlag(Generate::BigShapes); | ||
821 | generator.generate(5, 5, | ||
822 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}}}); | ||
823 | break; | ||
824 | } | ||
825 | case 43: { | ||
826 | generator.setFlag(Generate::RegularStartEnd); | ||
827 | generator.setFlag(Generate::DisconnectShapes); | ||
828 | generator.generate( | ||
829 | 4, 4, | ||
830 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
831 | {Decoration::Poly | Decoration::Color::Blue | Decoration::Negative, | ||
832 | 1}}}); | ||
833 | break; | ||
834 | } | ||
835 | case 44: { | ||
836 | generator.setFlag(Generate::RegularStartEnd); | ||
837 | generator.generate( | ||
838 | 4, 4, | ||
839 | {{{Decoration::Stone | Decoration::Color::Black, 3}, | ||
840 | {Decoration::Stone | Decoration::Color::White, 3}, | ||
841 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
842 | break; | ||
843 | } | ||
844 | case 45: { | ||
845 | generator.setFlag(Generate::RegularStartEnd); | ||
846 | generator.generate( | ||
847 | 4, 4, | ||
848 | {{{Decoration::Star | Decoration::Color::Black, 4}, | ||
849 | {Decoration::Star | Decoration::Color::White, 4}, | ||
850 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
851 | break; | ||
852 | } | ||
853 | case 46: { | ||
854 | generator.setFlag(Generate::RegularStartEnd); | ||
855 | generator.generate( | ||
856 | 4, 4, | ||
857 | {{{Decoration::Star | Decoration::Color::Orange, 3}, | ||
858 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
859 | break; | ||
860 | } | ||
861 | case 47: { | ||
862 | generator.setFlag(Generate::RegularStartEnd); | ||
863 | generator.generate( | ||
864 | 4, 4, | ||
865 | {{{Decoration::Star | Decoration::Color::Black, 2}, | ||
866 | {Decoration::Star | Decoration::Color::Orange, 2}, | ||
867 | {Decoration::Stone | Decoration::Color::Black, 1}, | ||
868 | {Decoration::Stone | Decoration::Color::Orange, 1}, | ||
869 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
870 | break; | ||
871 | } | ||
872 | case 48: { | ||
873 | generator.setFlag(Generate::RegularStartEnd); | ||
874 | generator.setFlag(Generate::BigShapes); | ||
875 | generator.generate( | ||
876 | 4, 4, | ||
877 | {{{Decoration::Poly | Decoration::Color::Yellow | | ||
878 | Decoration::Can_Rotate, | ||
879 | 1}, | ||
880 | {Decoration::Triangle | Decoration::Color::Orange, 3}}}); | ||
881 | break; | ||
882 | } | ||
883 | case 49: { | ||
884 | generator.setFlag(Generate::RegularStartEnd); | ||
885 | generator.setFlag(Generate::BigShapes); | ||
886 | generator.generate( | ||
887 | 5, 5, | ||
888 | {{{Decoration::Poly | Decoration::Color::Yellow | | ||
889 | Decoration::Can_Rotate, | ||
890 | 1}, | ||
891 | {Decoration::Triangle | Decoration::Color::Orange, 6}}}); | ||
892 | break; | ||
893 | } | ||
894 | case 50: { | ||
895 | generator.setFlag(Generate::RegularStartEnd); | ||
896 | generator.setFlag(Generate::BigShapes); | ||
897 | generator.generate( | ||
898 | 5, 5, | ||
899 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
900 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
901 | break; | ||
902 | } | ||
903 | case 51: { | ||
904 | generator.setFlag(Generate::RegularStartEnd); | ||
905 | generator.generate( | ||
906 | 4, 4, | ||
907 | {{{Decoration::Dot, 25}, | ||
908 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
909 | break; | ||
910 | } | ||
911 | case 52: { | ||
912 | generator.setSymbol(Decoration::Start, 0, 4 * 2); | ||
913 | generator.setSymbol(Decoration::Exit, 0, 0); | ||
914 | generator.generate( | ||
915 | 4, 4, | ||
916 | {{{Decoration::Dot, 25}, | ||
917 | {Decoration::Triangle | Decoration::Color::Orange, 5}}}); | ||
918 | break; | ||
919 | } | ||
920 | case 53: { | ||
921 | generator.setSymbol(Decoration::Start, 0, 4 * 2); | ||
922 | generator.setSymbol(Decoration::Exit, 4 * 2, 4 * 2); | ||
923 | generator.generate( | ||
924 | 4, 4, | ||
925 | {{{Decoration::Dot, 25}, | ||
926 | {Decoration::Triangle | Decoration::Color::Orange, 5}}}); | ||
927 | break; | ||
928 | } | ||
929 | case 54: { | ||
930 | generator.setFlag(Generate::RegularStartEnd); | ||
931 | generator.generate( | ||
932 | 4, 4, | ||
933 | {{{Decoration::Dot, 25}, | ||
934 | {Decoration::Triangle | Decoration::Color::Orange, 6}}}); | ||
935 | break; | ||
936 | } | ||
937 | case 55: { | ||
938 | generator.setFlag(Generate::RegularStartEnd); | ||
939 | generator.setFlag(Generate::DisconnectShapes); | ||
940 | generator.generate(5, 5, | ||
941 | {{{Decoration::Poly | Decoration::Color::Yellow | | ||
942 | Decoration::Can_Rotate, | ||
943 | 3}}}); | ||
944 | break; | ||
945 | } | ||
946 | case 56: { | ||
947 | generator.setFlag(Generate::TreehouseLayout); | ||
948 | generator.generate(4, 4, | ||
949 | {{{Decoration::Star | Decoration::Color::Black, 4}, | ||
950 | {Decoration::Star | Decoration::Color::White, 4}, | ||
951 | {Decoration::Star | Decoration::Color::Orange, 4}, | ||
952 | {Decoration::Stone | Decoration::Color::Black, 1}, | ||
953 | {Decoration::Stone | Decoration::Color::White, 1}}}); | ||
954 | break; | ||
955 | } | ||
956 | case 57: { | ||
957 | generator.setFlag(Generate::RegularStartEnd); | ||
958 | generator.generate( | ||
959 | 3, 3, | ||
960 | {{{Decoration::Stone | Decoration::Color::Magenta, 2}, | ||
961 | {Decoration::Stone | Decoration::Color::Green, 1}, | ||
962 | {Decoration::Star | Decoration::Color::Magenta, 2}, | ||
963 | {Decoration::Star | Decoration::Color::Green, 3}, | ||
964 | {Decoration::Eraser | Decoration::Color::Magenta, 1}}}); | ||
965 | break; | ||
966 | } | ||
967 | case 58: { | ||
968 | generator.setFlag(Generate::RegularStartEnd); | ||
969 | generator.generate(4, 4, | ||
970 | {{{Decoration::Dot_Intersection, 25}, | ||
971 | {Decoration::Poly | Decoration::Color::Yellow, 3}}}); | ||
972 | break; | ||
973 | } | ||
974 | case 59: { | ||
975 | generator.setSymbol(Decoration::Start, 2 * 2, 2 * 2); | ||
976 | generator.setSymbol(Decoration::Exit, 4 * 2, 0); | ||
977 | generator.generate(4, 4, | ||
978 | {{{Decoration::Dot_Intersection, 25}, | ||
979 | {Decoration::Poly | Decoration::Color::Yellow | | ||
980 | Decoration::Can_Rotate, | ||
981 | 2}}}); | ||
982 | break; | ||
983 | } | ||
984 | case 60: { | ||
985 | generator.setFlag(Generate::RegularStartEnd); | ||
986 | generator.generate(5, 5, | ||
987 | {{{Decoration::Poly | Decoration::Color::Green, 4}, | ||
988 | {Decoration::Star | Decoration::Color::Green, 3}}}); | ||
989 | break; | ||
990 | } | ||
991 | case 61: { | ||
992 | generator.setFlag(Generate::RegularStartEnd); | ||
993 | generator.generate( | ||
994 | 4, 4, {{{Decoration::Triangle2 | Decoration::Color::Orange, 12}}}); | ||
995 | break; | ||
996 | } | ||
997 | case 62: { | ||
998 | generator.setSymbol(Decoration::Exit, 0, 0); | ||
999 | generator.setSymbol(Decoration::Exit, 7 * 2, 0); | ||
1000 | generator.setSymbol(Decoration::Exit, 7 * 2, 7 * 2); | ||
1001 | generator.generate( | ||
1002 | 7, 7, | ||
1003 | {{{Decoration::Triangle | Decoration::Color::Orange, 12}, | ||
1004 | {Decoration::Start, 3}}}); | ||
1005 | break; | ||
1006 | } | ||
1007 | case 63: { | ||
1008 | generator.setFlag(Generate::TreehouseLayout); | ||
1009 | generator.generate( | ||
1010 | 4, 4, | ||
1011 | {{{Decoration::Star | Decoration::Color::Orange, 1}, | ||
1012 | {Decoration::Triangle | Decoration::Color::Orange, 7}}}); | ||
1013 | break; | ||
1014 | } | ||
1015 | case 64: { | ||
1016 | generator.setFlag(Generate::TreehouseLayout); | ||
1017 | generator.generate( | ||
1018 | 4, 4, | ||
1019 | {{{Decoration::Star | Decoration::Color::Orange, 3}, | ||
1020 | {Decoration::Star | Decoration::Color::Magenta, 2}, | ||
1021 | {Decoration::Triangle | Decoration::Color::Orange, 2}, | ||
1022 | {Decoration::Triangle | Decoration::Color::Magenta, 2}}}); | ||
1023 | break; | ||
1024 | } | ||
1025 | case 65: { | ||
1026 | generator.setFlag(Generate::TreehouseLayout); | ||
1027 | generator.generate(4, 4, | ||
1028 | {{{Decoration::Star | Decoration::Color::Magenta, 4}, | ||
1029 | {Decoration::Dot_Intersection, 25}}}); | ||
1030 | break; | ||
1031 | } | ||
1032 | case 66: { | ||
1033 | generator.setSymmetry(Panel::Symmetry::FlipNegXY); | ||
1034 | generator.generate(7, 7, | ||
1035 | {{{Decoration::Gap, 10}, | ||
1036 | {Decoration::Dot_Intersection, 8}, | ||
1037 | {Decoration::Start, 2}, | ||
1038 | {Decoration::Exit, 1}}}); | ||
1039 | break; | ||
1040 | } | ||
1041 | case 67: { | ||
1042 | generator.setSymmetry(Panel::Symmetry::ParallelV); | ||
1043 | generator.generate(7, 7, | ||
1044 | {{{Decoration::Gap, 12}, | ||
1045 | {Decoration::Dot_Intersection, 10}, | ||
1046 | {Decoration::Start, 2}, | ||
1047 | {Decoration::Exit, 1}}}); | ||
1048 | break; | ||
1049 | } | ||
1050 | case 68: { | ||
1051 | generator.setSymmetry(Panel::Symmetry::ParallelHFlip); | ||
1052 | generator.generate(7, 7, | ||
1053 | {{{Decoration::Gap, 12}, | ||
1054 | {Decoration::Dot_Intersection, 10}, | ||
1055 | {Decoration::Start, 2}, | ||
1056 | {Decoration::Exit, 1}}}); | ||
1057 | break; | ||
1058 | } | ||
1059 | } | ||
1060 | 1030 | ||
1061 | Rice::String str(generator.AsCode()); | 1031 | Rice::String str(generator.AsCode()); |
1062 | return str; | 1032 | return str; |
1063 | } | 1033 | } |
1064 | 1034 | ||
1065 | Rice::Object wittle_generator_generate_expert(Rice::Object /* self */) { | 1035 | Rice::Object wittle_generator_generate_expert(Rice::Object /* self */) { |
1036 | static std::vector<std::function<void(Generate&)>> generator_fns{ | ||
1037 | [](Generate& generator) { | ||
1038 | generator.setFlag(Generate::StartEdgeOnly); | ||
1039 | generator.setSymmetry(Panel::Rotational); | ||
1040 | generator.generate( | ||
1041 | 6, 6, | ||
1042 | {{{Decoration::Triangle | Decoration::Color::Orange, 12}, | ||
1043 | {Decoration::Start, 1}, | ||
1044 | {Decoration::Exit, 1}}}); | ||
1045 | }, | ||
1046 | [](Generate& generator) { | ||
1047 | generator.setFlag(Generate::StartEdgeOnly); | ||
1048 | generator.setFlag(Generate::WriteInvisible); | ||
1049 | generator.setSymmetry(Panel::Rotational); | ||
1050 | generator.generate(7, 7, | ||
1051 | {{{Decoration::Dot | Decoration::Color::Blue, 4}, | ||
1052 | {Decoration::Dot | Decoration::Color::Yellow, 4}, | ||
1053 | {Decoration::Dot, 7}, | ||
1054 | {Decoration::Start, 1}, | ||
1055 | {Decoration::Exit, 1}}}); | ||
1056 | }, | ||
1057 | [](Generate& generator) { | ||
1058 | generator.setFlag(Generate::StartEdgeOnly); | ||
1059 | generator.setFlag(Generate::WriteInvisible); | ||
1060 | generator.setSymmetry(Panel::Rotational); | ||
1061 | generator.generate(7, 7, | ||
1062 | {{{Decoration::Stone | Decoration::Color::Black, 6}, | ||
1063 | {Decoration::Stone | Decoration::Color::White, 6}, | ||
1064 | {Decoration::Start, 1}, | ||
1065 | {Decoration::Exit, 1}}}); | ||
1066 | }, | ||
1067 | [](Generate& generator) { | ||
1068 | generator.setFlag(Generate::StartEdgeOnly); | ||
1069 | generator.setFlag(Generate::WriteInvisible); | ||
1070 | generator.setSymmetry(Panel::Rotational); | ||
1071 | generator.generate(7, 7, | ||
1072 | {{{Decoration::Star | Decoration::Color::Orange, 6}, | ||
1073 | {Decoration::Star | Decoration::Color::Green, 6}, | ||
1074 | {Decoration::Start, 1}, | ||
1075 | {Decoration::Exit, 1}}}); | ||
1076 | }, | ||
1077 | [](Generate& generator) { | ||
1078 | generator.setFlag(Generate::StartEdgeOnly); | ||
1079 | generator.setFlag(Generate::WriteInvisible); | ||
1080 | generator.setFlag(Generate::RequireCombineShapes); | ||
1081 | generator.setSymmetry(Panel::Rotational); | ||
1082 | generator.generate(5, 5, | ||
1083 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
1084 | {Decoration::Start, 1}, | ||
1085 | {Decoration::Exit, 1}}}); | ||
1086 | }, | ||
1087 | [](Generate& generator) { | ||
1088 | generator.setFlag(Generate::StartEdgeOnly); | ||
1089 | generator.setFlag(Generate::WriteInvisible); | ||
1090 | generator.setSymmetry(Panel::Rotational); | ||
1091 | generator.generate( | ||
1092 | 7, 7, | ||
1093 | {{{Decoration::Dot | Decoration::Color::Blue, 2}, | ||
1094 | {Decoration::Dot | Decoration::Color::Yellow, 2}, | ||
1095 | {Decoration::Dot, 8}, | ||
1096 | {Decoration::Eraser | Decoration::Color::Purple, 1}, | ||
1097 | {Decoration::Start, 1}, | ||
1098 | {Decoration::Exit, 1}}}); | ||
1099 | }, | ||
1100 | [](Generate& generator) { | ||
1101 | generator.setSymbol(Decoration::Exit, 0, 0); | ||
1102 | generator.setSymbol(Decoration::Exit, 0, 4 * 4); | ||
1103 | generator.setSymbol(Decoration::Exit, 4 * 4, 0); | ||
1104 | generator.setSymbol(Decoration::Exit, 4 * 4, 4 * 4); | ||
1105 | generator.generate(8, 8, | ||
1106 | {{{Decoration::Stone | Decoration::Color::White, 10}, | ||
1107 | {Decoration::Stone | Decoration::Color::Black, 10}, | ||
1108 | {Decoration::Dot_Intersection, 81}, | ||
1109 | {Decoration::Start, 8}}}); | ||
1110 | }, | ||
1111 | [](Generate& generator) { | ||
1112 | generator.setFlag(Generate::RegularStartEnd); | ||
1113 | generator.generate( | ||
1114 | 6, 6, | ||
1115 | {{{Decoration::Dot_Intersection, 49}, | ||
1116 | {Decoration::Poly | Decoration::Color::Orange, 1}, | ||
1117 | {Decoration::Poly | Decoration::Color::Blue, 1}, | ||
1118 | {Decoration::Poly | Decoration::Negative | | ||
1119 | Decoration::Color::Blue, | ||
1120 | 2}, | ||
1121 | {Decoration::Poly | Decoration::Negative | | ||
1122 | Decoration::Color::Orange, | ||
1123 | 1}, | ||
1124 | {Decoration::Star | Decoration::Color::Orange, 4}, | ||
1125 | {Decoration::Star | Decoration::Color::Blue, 3}, | ||
1126 | {Decoration::Triangle | Decoration::Color::Orange, 2}, | ||
1127 | {Decoration::Triangle | Decoration::Color::Blue, 1}, | ||
1128 | {Decoration::Stone | Decoration::Color::Orange, 1}, | ||
1129 | {Decoration::Stone | Decoration::Color::Blue, 2}, | ||
1130 | {Decoration::Eraser | Decoration::Color::White, 1}}}); | ||
1131 | }, | ||
1132 | [](Generate& generator) { | ||
1133 | generator.setFlag(Generate::RegularStartEnd); | ||
1134 | generator.setSymmetry(Panel::Rotational); | ||
1135 | generator.generate( | ||
1136 | 7, 7, {{{Decoration::Poly | Decoration::Color::Yellow, 5}}}); | ||
1137 | }, | ||
1138 | [](Generate& generator) { | ||
1139 | generator.setFlag(Generate::RegularStartEnd); | ||
1140 | generator.generate( | ||
1141 | 5, 5, | ||
1142 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
1143 | {Decoration::Poly | Decoration::Color::Yellow | | ||
1144 | Decoration::Can_Rotate, | ||
1145 | 1}, | ||
1146 | {Decoration::Stone | Decoration::Color::Black, 5}, | ||
1147 | {Decoration::Stone | Decoration::Color::White, 3}}}); | ||
1148 | }, | ||
1149 | [](Generate& generator) { | ||
1150 | generator.setFlag(Generate::RegularStartEnd); | ||
1151 | generator.setFlag(Generate::BigShapes); | ||
1152 | generator.generate( | ||
1153 | 5, 5, | ||
1154 | {{{Decoration::Poly | Decoration::Color::Yellow | | ||
1155 | Decoration::Can_Rotate, | ||
1156 | 2}, | ||
1157 | {Decoration::Triangle | Decoration::Color::Orange, 3}, | ||
1158 | {Decoration::Stone | Decoration::Color::Black, 3}, | ||
1159 | {Decoration::Stone | Decoration::Color::White, 3}}}); | ||
1160 | }, | ||
1161 | [](Generate& generator) { | ||
1162 | generator.setFlag(Generate::StartEdgeOnly); | ||
1163 | generator.setSymbol(Decoration::Exit, 4 * 2, 0); | ||
1164 | generator.generate(5, 5, | ||
1165 | {{{Decoration::Dot_Intersection, 36}, | ||
1166 | {Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
1167 | {Decoration::Start, 1}}}); | ||
1168 | }, | ||
1169 | [](Generate& generator) { | ||
1170 | generator.setFlag(Generate::RegularStartEnd); | ||
1171 | generator.setFlag(Generate::BigShapes); | ||
1172 | generator.setFlag(Generate::RequireCancelShapes); | ||
1173 | generator.generate(5, 5, | ||
1174 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
1175 | {Decoration::Poly | Decoration::Negative | | ||
1176 | Decoration::Color::Blue, | ||
1177 | 3}}}); | ||
1178 | }, | ||
1179 | [](Generate& generator) { | ||
1180 | generator.setFlag(Generate::RegularStartEnd); | ||
1181 | generator.generate( | ||
1182 | 5, 6, | ||
1183 | {{{Decoration::Dot_Intersection, 42}, | ||
1184 | {Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
1185 | {Decoration::Poly | Decoration::Color::Yellow | | ||
1186 | Decoration::Can_Rotate, | ||
1187 | 1}, | ||
1188 | {Decoration::Triangle | Decoration::Color::Orange, 3}, | ||
1189 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
1190 | {Decoration::Stone | Decoration::Color::White, 2}}}); | ||
1191 | }, | ||
1192 | [](Generate& generator) { | ||
1193 | generator.setFlag(Generate::RegularStartEnd); | ||
1194 | generator.generate( | ||
1195 | 5, 5, | ||
1196 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
1197 | {Decoration::Poly | Decoration::Negative | | ||
1198 | Decoration::Color::Blue, | ||
1199 | 1}, | ||
1200 | {Decoration::Stone | Decoration::Color::Black, 4}, | ||
1201 | {Decoration::Stone | Decoration::Color::White, 3}}}); | ||
1202 | }, | ||
1203 | [](Generate& generator) { | ||
1204 | generator.setFlag(Generate::RegularStartEnd); | ||
1205 | generator.generate( | ||
1206 | 5, 5, | ||
1207 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
1208 | {Decoration::Poly | Decoration::Negative | | ||
1209 | Decoration::Color::Blue, | ||
1210 | 2}, | ||
1211 | {Decoration::Triangle | Decoration::Color::Orange, 5}}}); | ||
1212 | }, | ||
1213 | [](Generate& generator) { | ||
1214 | generator.setFlag(Generate::RegularStartEnd); | ||
1215 | generator.generate( | ||
1216 | 5, 5, | ||
1217 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
1218 | {Decoration::Poly | Decoration::Negative | | ||
1219 | Decoration::Color::Blue, | ||
1220 | 1}, | ||
1221 | {Decoration::Triangle | Decoration::Color::Orange, 3}, | ||
1222 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
1223 | {Decoration::Stone | Decoration::Color::White, 2}}}); | ||
1224 | }, | ||
1225 | [](Generate& generator) { | ||
1226 | generator.setFlag(Generate::RegularStartEnd); | ||
1227 | generator.generate( | ||
1228 | 5, 5, | ||
1229 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
1230 | {Decoration::Poly | Decoration::Negative | | ||
1231 | Decoration::Color::Blue, | ||
1232 | 2}, | ||
1233 | {Decoration::Triangle | Decoration::Color::Orange, 3}, | ||
1234 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
1235 | {Decoration::Stone | Decoration::Color::White, 2}}}); | ||
1236 | }, | ||
1237 | [](Generate& generator) { | ||
1238 | generator.setFlag(Generate::DisconnectShapes); | ||
1239 | generator.setFlag(Generate::BigShapes); | ||
1240 | generator.setSymbol(Decoration::Start, 0, 5 * 2); | ||
1241 | generator.setSymbol(Decoration::Exit, 0, 0); | ||
1242 | generator.generate( | ||
1243 | 5, 5, | ||
1244 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
1245 | {Decoration::Poly | Decoration::Negative | | ||
1246 | Decoration::Color::Blue, | ||
1247 | 1}, | ||
1248 | {Decoration::Triangle | Decoration::Color::Orange, 3}, | ||
1249 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
1250 | {Decoration::Stone | Decoration::Color::White, 2}}}); | ||
1251 | }, | ||
1252 | [](Generate& generator) { | ||
1253 | generator.setFlag(Generate::StartEdgeOnly); | ||
1254 | generator.setFlag(Generate::BigShapes); | ||
1255 | generator.setSymbol(Decoration::Exit, 5 * 2, 0); | ||
1256 | generator.generate(5, 5, | ||
1257 | {{{Decoration::Dot_Intersection, 36}, | ||
1258 | {Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
1259 | {Decoration::Poly | Decoration::Negative | | ||
1260 | Decoration::Color::Blue, | ||
1261 | 1}, | ||
1262 | {Decoration::Start, 1}}}); | ||
1263 | }, | ||
1264 | [](Generate& generator) { | ||
1265 | generator.setFlag(Generate::StartEdgeOnly); | ||
1266 | generator.setFlag(Generate::BigShapes); | ||
1267 | generator.setSymbol(Decoration::Exit, 5 * 2, 0); | ||
1268 | generator.generate(5, 5, | ||
1269 | {{{Decoration::Dot_Intersection, 36}, | ||
1270 | {Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
1271 | {Decoration::Poly | Decoration::Negative | | ||
1272 | Decoration::Color::Blue, | ||
1273 | 2}, | ||
1274 | {Decoration::Start, 1}}}); | ||
1275 | }, | ||
1276 | [](Generate& generator) { | ||
1277 | generator.setFlag(Generate::TreehouseLayout); | ||
1278 | generator.generate( | ||
1279 | 5, 5, | ||
1280 | {{{Decoration::Star | Decoration::Color::Orange, 4}, | ||
1281 | {Decoration::Triangle | Decoration::Color::Orange, 6}}}); | ||
1282 | }, | ||
1283 | [](Generate& generator) { | ||
1284 | generator.setFlag(Generate::TreehouseLayout); | ||
1285 | generator.generate( | ||
1286 | 5, 5, | ||
1287 | {{{Decoration::Star | Decoration::Color::Orange, 6}, | ||
1288 | {Decoration::Triangle | Decoration::Color::Orange, 5}}}); | ||
1289 | }, | ||
1290 | [](Generate& generator) { | ||
1291 | generator.setFlag(Generate::RegularStartEnd); | ||
1292 | generator.generate( | ||
1293 | 5, 5, | ||
1294 | {{{Decoration::Star | Decoration::Color::Orange, 5}, | ||
1295 | {Decoration::Triangle | Decoration::Color::Orange, 3}, | ||
1296 | {Decoration::Stone | Decoration::Color::Orange, 3}}}); | ||
1297 | }, | ||
1298 | [](Generate& generator) { | ||
1299 | generator.setFlag(Generate::TreehouseLayout); | ||
1300 | generator.generate(5, 5, | ||
1301 | {{{Decoration::Poly | Decoration::Color::Orange, 3}, | ||
1302 | {Decoration::Poly | Decoration::Negative | | ||
1303 | Decoration::Color::Blue, | ||
1304 | 1}, | ||
1305 | {Decoration::Star | Decoration::Color::Orange, 5}, | ||
1306 | {Decoration::Star | Decoration::Color::Blue, 3}}}); | ||
1307 | }, | ||
1308 | [](Generate& generator) { | ||
1309 | generator.setFlag(Generate::TreehouseLayout); | ||
1310 | generator.generate(5, 5, | ||
1311 | {{{Decoration::Poly | Decoration::Color::Orange, 3}, | ||
1312 | {Decoration::Poly | Decoration::Negative | | ||
1313 | Decoration::Color::Blue, | ||
1314 | 2}, | ||
1315 | {Decoration::Star | Decoration::Color::Orange, 5}, | ||
1316 | {Decoration::Star | Decoration::Color::Blue, 3}}}); | ||
1317 | }, | ||
1318 | [](Generate& generator) { | ||
1319 | generator.setFlag(Generate::TreehouseLayout); | ||
1320 | generator.generate( | ||
1321 | 5, 5, | ||
1322 | {{{Decoration::Poly | Decoration::Color::Orange, 1}, | ||
1323 | {Decoration::Poly | Decoration::Color::Magenta, 2}, | ||
1324 | {Decoration::Poly | Decoration::Negative | | ||
1325 | Decoration::Color::Orange, | ||
1326 | 2}, | ||
1327 | {Decoration::Poly | Decoration::Negative | | ||
1328 | Decoration::Color::Blue, | ||
1329 | 2}, | ||
1330 | {Decoration::Star | Decoration::Color::Orange, 3}, | ||
1331 | {Decoration::Star | Decoration::Color::Blue, 3}, | ||
1332 | {Decoration::Star | Decoration::Color::Magenta, 3}}}); | ||
1333 | }, | ||
1334 | [](Generate& generator) { | ||
1335 | generator.setFlag(Generate::TreehouseLayout); | ||
1336 | generator.generate( | ||
1337 | 5, 5, | ||
1338 | {{{Decoration::Poly | Decoration::Color::Magenta, 2}, | ||
1339 | {Decoration::Poly | Decoration::Negative | | ||
1340 | Decoration::Color::Blue, | ||
1341 | 2}, | ||
1342 | {Decoration::Star | Decoration::Color::Magenta, 3}, | ||
1343 | {Decoration::Star | Decoration::Color::Blue, 3}, | ||
1344 | {Decoration::Triangle | Decoration::Color::Magenta, 2}, | ||
1345 | {Decoration::Triangle | Decoration::Color::Blue, 2}}}); | ||
1346 | }, | ||
1347 | [](Generate& generator) { | ||
1348 | generator.setFlag(Generate::TreehouseLayout); | ||
1349 | generator.generate( | ||
1350 | 5, 5, | ||
1351 | {{{Decoration::Poly | Decoration::Color::Orange, 1}, | ||
1352 | {Decoration::Poly | Decoration::Color::Blue, 1}, | ||
1353 | {Decoration::Poly | Decoration::Color::Green, 1}, | ||
1354 | {Decoration::Poly | Decoration::Negative | | ||
1355 | Decoration::Color::Blue, | ||
1356 | 1}, | ||
1357 | {Decoration::Poly | Decoration::Negative | | ||
1358 | Decoration::Color::Magenta, | ||
1359 | 2}, | ||
1360 | {Decoration::Star | Decoration::Color::Green, 2}, | ||
1361 | {Decoration::Star | Decoration::Color::Magenta, 1}, | ||
1362 | {Decoration::Star | Decoration::Color::Orange, 1}, | ||
1363 | {Decoration::Star | Decoration::Color::Blue, 2}, | ||
1364 | {Decoration::Triangle | Decoration::Color::Magenta, 2}, | ||
1365 | {Decoration::Triangle | Decoration::Color::Orange, 1}, | ||
1366 | {Decoration::Triangle | Decoration::Color::Green, 2}}}); | ||
1367 | }, | ||
1368 | [](Generate& generator) { | ||
1369 | generator.setFlag(Generate::TreehouseLayout); | ||
1370 | generator.generate( | ||
1371 | 5, 5, | ||
1372 | {{{Decoration::Star | Decoration::Color::Orange, 4}, | ||
1373 | {Decoration::Star | Decoration::Color::Magenta, 4}, | ||
1374 | {Decoration::Triangle | Decoration::Color::Orange, 2}, | ||
1375 | {Decoration::Triangle | Decoration::Color::Magenta, 2}}}); | ||
1376 | }, | ||
1377 | [](Generate& generator) { | ||
1378 | generator.setFlag(Generate::TreehouseLayout); | ||
1379 | generator.generate( | ||
1380 | 5, 5, | ||
1381 | {{{Decoration::Star | Decoration::Color::Orange, 3}, | ||
1382 | {Decoration::Star | Decoration::Color::Magenta, 3}, | ||
1383 | {Decoration::Star | Decoration::Color::Green, 6}, | ||
1384 | {Decoration::Triangle | Decoration::Color::Orange, 2}, | ||
1385 | {Decoration::Triangle | Decoration::Color::Magenta, 2}}}); | ||
1386 | }, | ||
1387 | [](Generate& generator) { | ||
1388 | generator.setFlag(Generate::TreehouseLayout); | ||
1389 | generator.generate( | ||
1390 | 5, 5, | ||
1391 | {{{Decoration::Star | Decoration::Color::Orange, 4}, | ||
1392 | {Decoration::Star | Decoration::Color::Magenta, 4}, | ||
1393 | {Decoration::Star | Decoration::Color::Green, 6}, | ||
1394 | {Decoration::Triangle | Decoration::Color::Orange, 1}, | ||
1395 | {Decoration::Triangle | Decoration::Color::Magenta, 1}}}); | ||
1396 | }, | ||
1397 | [](Generate& generator) { | ||
1398 | generator.setFlag(Generate::TreehouseLayout); | ||
1399 | generator.generate( | ||
1400 | 5, 5, | ||
1401 | {{{Decoration::Star | Decoration::Color::Orange, 2}, | ||
1402 | {Decoration::Star | Decoration::Color::Magenta, 2}, | ||
1403 | {Decoration::Star | Decoration::Color::White, 2}, | ||
1404 | {Decoration::Star | Decoration::Color::Green, 2}, | ||
1405 | {Decoration::Star | Decoration::Color::Black, 2}, | ||
1406 | {Decoration::Triangle | Decoration::Color::Orange, 1}, | ||
1407 | {Decoration::Triangle | Decoration::Color::Magenta, 1}, | ||
1408 | {Decoration::Triangle | Decoration::Color::White, 1}, | ||
1409 | {Decoration::Triangle | Decoration::Color::Green, 1}, | ||
1410 | {Decoration::Triangle | Decoration::Color::Black, 1}}}); | ||
1411 | }, | ||
1412 | [](Generate& generator) { | ||
1413 | generator.setFlag(Generate::TreehouseLayout); | ||
1414 | generator.generate(5, 5, | ||
1415 | {{{Decoration::Star | Decoration::Color::Magenta, 4}, | ||
1416 | {Decoration::Star | Decoration::Color::Orange, 6}, | ||
1417 | {Decoration::Dot_Intersection, 36}}}); | ||
1418 | }, | ||
1419 | [](Generate& generator) { | ||
1420 | generator.setGridSize(7, 7); | ||
1421 | generator.setFlag(Generate::RequireCombineShapes); | ||
1422 | generator.setSymmetry(Panel::ParallelV); | ||
1423 | generator.setSymbol(Decoration::Start, 0, 14); | ||
1424 | generator.setSymbol(Decoration::Start, 8, 14); | ||
1425 | generator.setSymbol(Decoration::Exit, 6, 0); | ||
1426 | generator.setSymbol(Decoration::Exit, 14, 0); | ||
1427 | generator.generate( | ||
1428 | 7, 7, {{{Decoration::Poly | Decoration::Color::Orange, 5}}}); | ||
1429 | }, | ||
1430 | [](Generate& generator) { | ||
1431 | generator.setGridSize(7, 7); | ||
1432 | generator.setFlag(Generate::RequireCombineShapes); | ||
1433 | generator.setSymmetry(Panel::ParallelHFlip); | ||
1434 | generator.setSymbol(Decoration::Start, 0, 14); | ||
1435 | generator.setSymbol(Decoration::Start, 14, 6); | ||
1436 | generator.setSymbol(Decoration::Exit, 0, 0); | ||
1437 | generator.setSymbol(Decoration::Exit, 14, 8); | ||
1438 | generator.generate( | ||
1439 | 7, 7, {{{Decoration::Poly | Decoration::Color::Orange, 5}}}); | ||
1440 | }, | ||
1441 | [](Generate& generator) { | ||
1442 | generator.setGridSize(7, 7); | ||
1443 | generator.setFlag(Generate::RequireCombineShapes); | ||
1444 | generator.setSymmetry(Panel::ParallelVFlip); | ||
1445 | generator.setSymbol(Decoration::Start, 0, 14); | ||
1446 | generator.setSymbol(Decoration::Start, 8, 0); | ||
1447 | generator.setSymbol(Decoration::Exit, 6, 0); | ||
1448 | generator.setSymbol(Decoration::Exit, 14, 14); | ||
1449 | generator.generate( | ||
1450 | 7, 7, {{{Decoration::Poly | Decoration::Color::Orange, 5}}}); | ||
1451 | }, | ||
1452 | [](Generate& generator) { | ||
1453 | generator.setSymmetry(Panel::Symmetry::RotateLeft); | ||
1454 | generator.setSymbol(Decoration::Start, 4, 4); | ||
1455 | generator.setSymbol(Decoration::Start, 10, 4); | ||
1456 | generator.setSymbol(Decoration::Start, 4, 10); | ||
1457 | generator.setSymbol(Decoration::Start, 10, 10); | ||
1458 | generator.setSymbol(Decoration::Exit, 4, 0); | ||
1459 | generator.setSymbol(Decoration::Exit, 14, 4); | ||
1460 | generator.setSymbol(Decoration::Exit, 0, 10); | ||
1461 | generator.setSymbol(Decoration::Exit, 10, 14); | ||
1462 | generator.generate( | ||
1463 | 7, 7, | ||
1464 | {{{Decoration::Triangle4 | Decoration::Color::Orange, 1}, | ||
1465 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
1466 | }, | ||
1467 | [](Generate& generator) { | ||
1468 | generator.setFlag(Generate::WriteInvisible); | ||
1469 | generator.setFlag(Generate::StartEdgeOnly); | ||
1470 | generator.setSymmetry(Panel::Symmetry::FlipXY); | ||
1471 | generator.setSymbol(Decoration::Exit, 0, 8); | ||
1472 | generator.setSymbol(Decoration::Exit, 8, 0); | ||
1473 | generator.generate(7, 7, | ||
1474 | {{{Decoration::Dot | Decoration::Color::Blue, 2}, | ||
1475 | {Decoration::Dot | Decoration::Color::Yellow, 2}, | ||
1476 | {Decoration::Dot, 8}, | ||
1477 | {Decoration::Eraser | Decoration::Color::White, 1}, | ||
1478 | {Decoration::Start, 1}}}); | ||
1479 | }, | ||
1480 | [](Generate& generator) { | ||
1481 | generator.setSymmetry(Panel::Symmetry::FlipXY); | ||
1482 | generator.setSymbol(Decoration::Start, 0, 16); | ||
1483 | generator.setSymbol(Decoration::Start, 16, 0); | ||
1484 | generator.setSymbol(Decoration::Exit, 8, 0); | ||
1485 | generator.setSymbol(Decoration::Exit, 8, 16); | ||
1486 | generator.setSymbol(Decoration::Exit, 0, 8); | ||
1487 | generator.setSymbol(Decoration::Exit, 16, 8); | ||
1488 | generator.generate( | ||
1489 | 8, 8, | ||
1490 | {{{Decoration::Triangle | Decoration::Color::Cyan, 3}, | ||
1491 | {Decoration::Triangle | Decoration::Color::Yellow, 2}, | ||
1492 | {Decoration::Star | Decoration::Color::Cyan, 3}, | ||
1493 | {Decoration::Star | Decoration::Color::Yellow, 3}, | ||
1494 | {Decoration::Stone | Decoration::Color::Cyan, 2}, | ||
1495 | {Decoration::Stone | Decoration::Color::Yellow, 3}}}); | ||
1496 | }, | ||
1497 | [](Generate& generator) { | ||
1498 | generator.setGridSize(7, 7); | ||
1499 | generator.setSymmetry((Random::rand() % 2) == 0 | ||
1500 | ? Panel::Symmetry::Vertical | ||
1501 | : Panel::Symmetry::Horizontal); | ||
1502 | generator.setFlag(Generate::WriteInvisible); | ||
1503 | generator.setFlag(Generate::DisableDotIntersection); | ||
1504 | MakeSecretSymmetryGrid(generator); | ||
1505 | generator.generate( | ||
1506 | 7, 7, | ||
1507 | {{{Decoration::Dot | Decoration::Color::Cyan, 2}, | ||
1508 | {Decoration::Dot | Decoration::Color::Yellow, 2}, | ||
1509 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
1510 | }, | ||
1511 | [](Generate& generator) { | ||
1512 | generator.setGridSize(7, 7); | ||
1513 | generator.setSymmetry((Random::rand() % 2) == 0 | ||
1514 | ? Panel::Symmetry::ParallelH | ||
1515 | : Panel::Symmetry::ParallelV); | ||
1516 | generator.setFlag(Generate::WriteInvisible); | ||
1517 | generator.setFlag(Generate::DisableDotIntersection); | ||
1518 | MakeSecretSymmetryGrid(generator); | ||
1519 | generator.generate( | ||
1520 | 7, 7, | ||
1521 | {{{Decoration::Dot | Decoration::Color::Cyan, 2}, | ||
1522 | {Decoration::Dot | Decoration::Color::Yellow, 2}, | ||
1523 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
1524 | }, | ||
1525 | [](Generate& generator) { | ||
1526 | generator.setGridSize(7, 7); | ||
1527 | generator.setSymmetry(Panel::Symmetry::Rotational); | ||
1528 | generator.setFlag(Generate::WriteInvisible); | ||
1529 | generator.setFlag(Generate::DisableDotIntersection); | ||
1530 | MakeSecretSymmetryGrid(generator); | ||
1531 | generator.generate( | ||
1532 | 7, 7, | ||
1533 | {{{Decoration::Dot | Decoration::Color::Cyan, 2}, | ||
1534 | {Decoration::Dot | Decoration::Color::Yellow, 2}, | ||
1535 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
1536 | }, | ||
1537 | [](Generate& generator) { | ||
1538 | generator.setGridSize(7, 7); | ||
1539 | generator.setSymmetry((Random::rand() % 2) == 0 | ||
1540 | ? Panel::Symmetry::ParallelHFlip | ||
1541 | : Panel::Symmetry::ParallelVFlip); | ||
1542 | generator.setFlag(Generate::WriteInvisible); | ||
1543 | generator.setFlag(Generate::DisableDotIntersection); | ||
1544 | MakeSecretSymmetryGrid(generator); | ||
1545 | generator.generate( | ||
1546 | 7, 7, | ||
1547 | {{{Decoration::Dot | Decoration::Color::Cyan, 2}, | ||
1548 | {Decoration::Dot | Decoration::Color::Yellow, 2}, | ||
1549 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
1550 | }, | ||
1551 | }; | ||
1552 | |||
1066 | Generate generator; | 1553 | Generate generator; |
1067 | 1554 | ||
1068 | int choice = Random::rand() % 50; | 1555 | int choice = Random::rand() % generator_fns.size(); |
1069 | std::cout << "Generate EXPERT: choice " << std::dec << choice << std::endl; | 1556 | std::cout << "Generate EXPERT: choice " << std::dec << choice << std::endl; |
1070 | 1557 | ||
1071 | switch (choice) { | 1558 | generator_fns.at(choice)(generator); |
1072 | case 0: { | ||
1073 | generator.setFlag(Generate::StartEdgeOnly); | ||
1074 | generator.setSymmetry(Panel::Rotational); | ||
1075 | generator.generate( | ||
1076 | 6, 6, | ||
1077 | {{{Decoration::Triangle | Decoration::Color::Orange, 12}, | ||
1078 | {Decoration::Start, 1}, | ||
1079 | {Decoration::Exit, 1}}}); | ||
1080 | break; | ||
1081 | } | ||
1082 | case 1: { | ||
1083 | generator.setFlag(Generate::StartEdgeOnly); | ||
1084 | generator.setFlag(Generate::WriteInvisible); | ||
1085 | generator.setSymmetry(Panel::Rotational); | ||
1086 | generator.generate(7, 7, | ||
1087 | {{{Decoration::Dot | Decoration::Color::Blue, 4}, | ||
1088 | {Decoration::Dot | Decoration::Color::Yellow, 4}, | ||
1089 | {Decoration::Dot, 7}, | ||
1090 | {Decoration::Start, 1}, | ||
1091 | {Decoration::Exit, 1}}}); | ||
1092 | break; | ||
1093 | } | ||
1094 | case 2: { | ||
1095 | generator.setFlag(Generate::StartEdgeOnly); | ||
1096 | generator.setFlag(Generate::WriteInvisible); | ||
1097 | generator.setSymmetry(Panel::Rotational); | ||
1098 | generator.generate(7, 7, | ||
1099 | {{{Decoration::Stone | Decoration::Color::Black, 6}, | ||
1100 | {Decoration::Stone | Decoration::Color::White, 6}, | ||
1101 | {Decoration::Start, 1}, | ||
1102 | {Decoration::Exit, 1}}}); | ||
1103 | break; | ||
1104 | } | ||
1105 | case 3: { | ||
1106 | generator.setFlag(Generate::StartEdgeOnly); | ||
1107 | generator.setFlag(Generate::WriteInvisible); | ||
1108 | generator.setSymmetry(Panel::Rotational); | ||
1109 | generator.generate(7, 7, | ||
1110 | {{{Decoration::Star | Decoration::Color::Orange, 6}, | ||
1111 | {Decoration::Star | Decoration::Color::Green, 6}, | ||
1112 | {Decoration::Start, 1}, | ||
1113 | {Decoration::Exit, 1}}}); | ||
1114 | break; | ||
1115 | } | ||
1116 | case 4: { | ||
1117 | generator.setFlag(Generate::StartEdgeOnly); | ||
1118 | generator.setFlag(Generate::WriteInvisible); | ||
1119 | generator.setFlag(Generate::RequireCombineShapes); | ||
1120 | generator.setSymmetry(Panel::Rotational); | ||
1121 | generator.generate(5, 5, | ||
1122 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
1123 | {Decoration::Start, 1}, | ||
1124 | {Decoration::Exit, 1}}}); | ||
1125 | break; | ||
1126 | } | ||
1127 | case 5: { | ||
1128 | generator.setFlag(Generate::StartEdgeOnly); | ||
1129 | generator.setFlag(Generate::WriteInvisible); | ||
1130 | generator.setSymmetry(Panel::Rotational); | ||
1131 | generator.generate(7, 7, | ||
1132 | {{{Decoration::Dot | Decoration::Color::Blue, 2}, | ||
1133 | {Decoration::Dot | Decoration::Color::Yellow, 2}, | ||
1134 | {Decoration::Dot, 8}, | ||
1135 | {Decoration::Eraser | Decoration::Color::Purple, 1}, | ||
1136 | {Decoration::Start, 1}, | ||
1137 | {Decoration::Exit, 1}}}); | ||
1138 | break; | ||
1139 | } | ||
1140 | case 6: { | ||
1141 | generator.setFlag(Generate::RegularStartEnd); | ||
1142 | generator.generate( | ||
1143 | 4, 4, | ||
1144 | {{{Decoration::Triangle | Decoration::Color::Orange, 15}, | ||
1145 | {Decoration::Eraser | Decoration::Color::Purple, 1}}}); | ||
1146 | break; | ||
1147 | } | ||
1148 | case 7: { | ||
1149 | generator.setFlag(Generate::RegularStartEnd); | ||
1150 | generator.generate( | ||
1151 | 4, 4, | ||
1152 | {{{Decoration::Stone | Decoration::Color::White, 1}, | ||
1153 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
1154 | {Decoration::Stone | Decoration::Color::Red, 2}, | ||
1155 | {Decoration::Star | Decoration::Color::White, 4}, | ||
1156 | {Decoration::Star | Decoration::Color::Black, 3}, | ||
1157 | {Decoration::Star | Decoration::Color::Red, 3}, | ||
1158 | {Decoration::Decoration::Eraser | Decoration::Color::Green, 1}}}); | ||
1159 | break; | ||
1160 | } | ||
1161 | case 8: { | ||
1162 | generator.setSymbol(Decoration::Exit, 0, 0); | ||
1163 | generator.setSymbol(Decoration::Exit, 0, 4 * 4); | ||
1164 | generator.setSymbol(Decoration::Exit, 4 * 4, 0); | ||
1165 | generator.setSymbol(Decoration::Exit, 4 * 4, 4 * 4); | ||
1166 | generator.generate(8, 8, | ||
1167 | {{{Decoration::Stone | Decoration::Color::White, 10}, | ||
1168 | {Decoration::Stone | Decoration::Color::Black, 10}, | ||
1169 | {Decoration::Dot_Intersection, 81}, | ||
1170 | {Decoration::Start, 8}}}); | ||
1171 | break; | ||
1172 | } | ||
1173 | case 9: { | ||
1174 | generator.setFlag(Generate::RegularStartEnd); | ||
1175 | generator.generate( | ||
1176 | 6, 6, | ||
1177 | {{{Decoration::Dot_Intersection, 49}, | ||
1178 | {Decoration::Poly | Decoration::Color::Orange, 1}, | ||
1179 | {Decoration::Poly | Decoration::Color::Blue, 1}, | ||
1180 | {Decoration::Poly | Decoration::Negative | Decoration::Color::Blue, | ||
1181 | 2}, | ||
1182 | {Decoration::Poly | Decoration::Negative | | ||
1183 | Decoration::Color::Orange, | ||
1184 | 1}, | ||
1185 | {Decoration::Star | Decoration::Color::Orange, 4}, | ||
1186 | {Decoration::Star | Decoration::Color::Blue, 3}, | ||
1187 | {Decoration::Triangle | Decoration::Color::Orange, 2}, | ||
1188 | {Decoration::Triangle | Decoration::Color::Blue, 1}, | ||
1189 | {Decoration::Stone | Decoration::Color::Orange, 1}, | ||
1190 | {Decoration::Stone | Decoration::Color::Blue, 2}, | ||
1191 | {Decoration::Eraser | Decoration::Color::White, 1}}}); | ||
1192 | break; | ||
1193 | } | ||
1194 | case 10: { | ||
1195 | generator.setFlag(Generate::RegularStartEnd); | ||
1196 | generator.setSymmetry(Panel::Vertical); | ||
1197 | generator.generate(7, 7, | ||
1198 | {{{Decoration::Poly | Decoration::Color::Yellow, 5}}}); | ||
1199 | break; | ||
1200 | } | ||
1201 | case 11: { | ||
1202 | generator.setFlag(Generate::RegularStartEnd); | ||
1203 | generator.setSymmetry(Panel::Rotational); | ||
1204 | generator.generate(7, 7, | ||
1205 | {{{Decoration::Poly | Decoration::Color::Yellow, 5}}}); | ||
1206 | break; | ||
1207 | } | ||
1208 | case 12: { | ||
1209 | generator.setFlag(Generate::RegularStartEnd); | ||
1210 | generator.generate(5, 5, | ||
1211 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
1212 | {Decoration::Poly | Decoration::Color::Yellow | | ||
1213 | Decoration::Can_Rotate, | ||
1214 | 1}, | ||
1215 | {Decoration::Stone | Decoration::Color::Black, 5}, | ||
1216 | {Decoration::Stone | Decoration::Color::White, 3}}}); | ||
1217 | break; | ||
1218 | } | ||
1219 | case 13: { | ||
1220 | generator.setFlag(Generate::RegularStartEnd); | ||
1221 | generator.generate( | ||
1222 | 4, 4, | ||
1223 | {{{Decoration::Poly | Decoration::Color::Yellow, 1}, | ||
1224 | {Decoration::Poly | Decoration::Color::Yellow | | ||
1225 | Decoration::Can_Rotate, | ||
1226 | 1}, | ||
1227 | {Decoration::Triangle | Decoration::Color::Orange, 3}}}); | ||
1228 | break; | ||
1229 | } | ||
1230 | case 14: { | ||
1231 | generator.setFlag(Generate::RegularStartEnd); | ||
1232 | generator.generate( | ||
1233 | 4, 4, | ||
1234 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
1235 | {Decoration::Poly | Decoration::Color::Yellow | | ||
1236 | Decoration::Can_Rotate, | ||
1237 | 1}, | ||
1238 | {Decoration::Triangle | Decoration::Color::Orange, 2}, | ||
1239 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
1240 | {Decoration::Stone | Decoration::Color::White, 2}}}); | ||
1241 | break; | ||
1242 | } | ||
1243 | case 15: { | ||
1244 | generator.setFlag(Generate::RegularStartEnd); | ||
1245 | generator.setFlag(Generate::BigShapes); | ||
1246 | generator.generate( | ||
1247 | 5, 5, | ||
1248 | {{{Decoration::Poly | Decoration::Color::Yellow | | ||
1249 | Decoration::Can_Rotate, | ||
1250 | 2}, | ||
1251 | {Decoration::Triangle | Decoration::Color::Orange, 3}, | ||
1252 | {Decoration::Stone | Decoration::Color::Black, 3}, | ||
1253 | {Decoration::Stone | Decoration::Color::White, 3}}}); | ||
1254 | break; | ||
1255 | } | ||
1256 | case 16: { | ||
1257 | generator.setFlag(Generate::StartEdgeOnly); | ||
1258 | generator.setSymbol(Decoration::Exit, 4 * 2, 0); | ||
1259 | generator.generate(4, 4, | ||
1260 | {{{Decoration::Dot_Intersection, 25}, | ||
1261 | {Decoration::Poly | Decoration::Color::Yellow, 1}, | ||
1262 | {Decoration::Poly | Decoration::Color::Yellow | | ||
1263 | Decoration::Can_Rotate, | ||
1264 | 2}, | ||
1265 | {Decoration::Start, 1}}}); | ||
1266 | break; | ||
1267 | } | ||
1268 | case 17: { | ||
1269 | generator.setFlag(Generate::StartEdgeOnly); | ||
1270 | generator.setSymbol(Decoration::Exit, 4 * 2, 0); | ||
1271 | generator.generate(5, 5, | ||
1272 | {{{Decoration::Dot_Intersection, 36}, | ||
1273 | {Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
1274 | {Decoration::Start, 1}}}); | ||
1275 | break; | ||
1276 | } | ||
1277 | case 18: { | ||
1278 | generator.setFlag(Generate::RegularStartEnd); | ||
1279 | generator.setFlag(Generate::BigShapes); | ||
1280 | generator.setFlag(Generate::RequireCancelShapes); | ||
1281 | generator.generate( | ||
1282 | 5, 5, | ||
1283 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
1284 | {Decoration::Poly | Decoration::Negative | Decoration::Color::Blue, | ||
1285 | 3}}}); | ||
1286 | break; | ||
1287 | } | ||
1288 | case 19: { | ||
1289 | generator.setFlag(Generate::RegularStartEnd); | ||
1290 | generator.generate( | ||
1291 | 5, 6, | ||
1292 | {{{Decoration::Dot_Intersection, 42}, | ||
1293 | {Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
1294 | {Decoration::Poly | Decoration::Color::Yellow | | ||
1295 | Decoration::Can_Rotate, | ||
1296 | 1}, | ||
1297 | {Decoration::Triangle | Decoration::Color::Orange, 3}, | ||
1298 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
1299 | {Decoration::Stone | Decoration::Color::White, 2}}}); | ||
1300 | break; | ||
1301 | } | ||
1302 | case 20: { | ||
1303 | generator.setFlag(Generate::RegularStartEnd); | ||
1304 | generator.generate( | ||
1305 | 5, 5, | ||
1306 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
1307 | {Decoration::Poly | Decoration::Negative | Decoration::Color::Blue, | ||
1308 | 1}, | ||
1309 | {Decoration::Stone | Decoration::Color::Black, 4}, | ||
1310 | {Decoration::Stone | Decoration::Color::White, 3}}}); | ||
1311 | break; | ||
1312 | } | ||
1313 | case 21: { | ||
1314 | generator.setFlag(Generate::RegularStartEnd); | ||
1315 | generator.generate( | ||
1316 | 5, 5, | ||
1317 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
1318 | {Decoration::Poly | Decoration::Negative | Decoration::Color::Blue, | ||
1319 | 2}, | ||
1320 | {Decoration::Triangle | Decoration::Color::Orange, 5}}}); | ||
1321 | break; | ||
1322 | } | ||
1323 | case 22: { | ||
1324 | generator.setFlag(Generate::RegularStartEnd); | ||
1325 | generator.generate( | ||
1326 | 5, 5, | ||
1327 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
1328 | {Decoration::Poly | Decoration::Negative | Decoration::Color::Blue, | ||
1329 | 1}, | ||
1330 | {Decoration::Triangle | Decoration::Color::Orange, 3}, | ||
1331 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
1332 | {Decoration::Stone | Decoration::Color::White, 2}}}); | ||
1333 | break; | ||
1334 | } | ||
1335 | case 23: { | ||
1336 | generator.setFlag(Generate::RegularStartEnd); | ||
1337 | generator.generate( | ||
1338 | 5, 5, | ||
1339 | {{{Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
1340 | {Decoration::Poly | Decoration::Negative | Decoration::Color::Blue, | ||
1341 | 2}, | ||
1342 | {Decoration::Triangle | Decoration::Color::Orange, 3}, | ||
1343 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
1344 | {Decoration::Stone | Decoration::Color::White, 2}}}); | ||
1345 | break; | ||
1346 | } | ||
1347 | case 24: { | ||
1348 | generator.setFlag(Generate::DisconnectShapes); | ||
1349 | generator.setFlag(Generate::BigShapes); | ||
1350 | generator.setSymbol(Decoration::Start, 0, 5 * 2); | ||
1351 | generator.setSymbol(Decoration::Exit, 0, 0); | ||
1352 | generator.generate( | ||
1353 | 5, 5, | ||
1354 | {{{Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
1355 | {Decoration::Poly | Decoration::Negative | Decoration::Color::Blue, | ||
1356 | 1}, | ||
1357 | {Decoration::Triangle | Decoration::Color::Orange, 3}, | ||
1358 | {Decoration::Stone | Decoration::Color::Black, 2}, | ||
1359 | {Decoration::Stone | Decoration::Color::White, 2}}}); | ||
1360 | break; | ||
1361 | } | ||
1362 | case 25: { | ||
1363 | generator.setFlag(Generate::StartEdgeOnly); | ||
1364 | generator.setFlag(Generate::BigShapes); | ||
1365 | generator.setSymbol(Decoration::Exit, 5 * 2, 0); | ||
1366 | generator.generate( | ||
1367 | 5, 5, | ||
1368 | {{{Decoration::Dot_Intersection, 36}, | ||
1369 | {Decoration::Poly | Decoration::Color::Yellow, 2}, | ||
1370 | {Decoration::Poly | Decoration::Negative | Decoration::Color::Blue, | ||
1371 | 1}, | ||
1372 | {Decoration::Start, 1}}}); | ||
1373 | break; | ||
1374 | } | ||
1375 | case 26: { | ||
1376 | generator.setFlag(Generate::StartEdgeOnly); | ||
1377 | generator.setFlag(Generate::BigShapes); | ||
1378 | generator.setSymbol(Decoration::Exit, 5 * 2, 0); | ||
1379 | generator.generate( | ||
1380 | 5, 5, | ||
1381 | {{{Decoration::Dot_Intersection, 36}, | ||
1382 | {Decoration::Poly | Decoration::Color::Yellow, 3}, | ||
1383 | {Decoration::Poly | Decoration::Negative | Decoration::Color::Blue, | ||
1384 | 2}, | ||
1385 | {Decoration::Start, 1}}}); | ||
1386 | break; | ||
1387 | } | ||
1388 | case 27: { | ||
1389 | generator.setFlag(Generate::TreehouseLayout); | ||
1390 | generator.generate( | ||
1391 | 5, 5, | ||
1392 | {{{Decoration::Star | Decoration::Color::Orange, 4}, | ||
1393 | {Decoration::Triangle | Decoration::Color::Orange, 6}}}); | ||
1394 | break; | ||
1395 | } | ||
1396 | case 28: { | ||
1397 | generator.setFlag(Generate::TreehouseLayout); | ||
1398 | generator.generate( | ||
1399 | 5, 5, | ||
1400 | {{{Decoration::Star | Decoration::Color::Orange, 6}, | ||
1401 | {Decoration::Triangle | Decoration::Color::Orange, 5}}}); | ||
1402 | break; | ||
1403 | } | ||
1404 | case 29: { | ||
1405 | generator.setFlag(Generate::RegularStartEnd); | ||
1406 | generator.generate( | ||
1407 | 5, 5, | ||
1408 | {{{Decoration::Star | Decoration::Color::Orange, 5}, | ||
1409 | {Decoration::Triangle | Decoration::Color::Orange, 3}, | ||
1410 | {Decoration::Stone | Decoration::Color::Orange, 3}}}); | ||
1411 | break; | ||
1412 | } | ||
1413 | case 30: { | ||
1414 | generator.setFlag(Generate::TreehouseLayout); | ||
1415 | generator.generate( | ||
1416 | 5, 5, | ||
1417 | {{{Decoration::Poly | Decoration::Color::Orange, 3}, | ||
1418 | {Decoration::Poly | Decoration::Negative | Decoration::Color::Blue, | ||
1419 | 1}, | ||
1420 | {Decoration::Star | Decoration::Color::Orange, 5}, | ||
1421 | {Decoration::Star | Decoration::Color::Blue, 3}}}); | ||
1422 | break; | ||
1423 | } | ||
1424 | case 31: { | ||
1425 | generator.setFlag(Generate::TreehouseLayout); | ||
1426 | generator.generate( | ||
1427 | 5, 5, | ||
1428 | {{{Decoration::Poly | Decoration::Color::Orange, 3}, | ||
1429 | {Decoration::Poly | Decoration::Negative | Decoration::Color::Blue, | ||
1430 | 2}, | ||
1431 | {Decoration::Star | Decoration::Color::Orange, 5}, | ||
1432 | {Decoration::Star | Decoration::Color::Blue, 3}}}); | ||
1433 | break; | ||
1434 | } | ||
1435 | case 32: { | ||
1436 | generator.setFlag(Generate::TreehouseLayout); | ||
1437 | generator.generate( | ||
1438 | 5, 5, | ||
1439 | {{{Decoration::Poly | Decoration::Color::Orange, 1}, | ||
1440 | {Decoration::Poly | Decoration::Color::Magenta, 2}, | ||
1441 | {Decoration::Poly | Decoration::Negative | | ||
1442 | Decoration::Color::Orange, | ||
1443 | 2}, | ||
1444 | {Decoration::Poly | Decoration::Negative | Decoration::Color::Blue, | ||
1445 | 2}, | ||
1446 | {Decoration::Star | Decoration::Color::Orange, 3}, | ||
1447 | {Decoration::Star | Decoration::Color::Blue, 3}, | ||
1448 | {Decoration::Star | Decoration::Color::Magenta, 3}}}); | ||
1449 | break; | ||
1450 | } | ||
1451 | case 33: { | ||
1452 | generator.setFlag(Generate::TreehouseLayout); | ||
1453 | generator.generate( | ||
1454 | 5, 5, | ||
1455 | {{{Decoration::Poly | Decoration::Color::Magenta, 2}, | ||
1456 | {Decoration::Poly | Decoration::Negative | Decoration::Color::Blue, | ||
1457 | 2}, | ||
1458 | {Decoration::Star | Decoration::Color::Magenta, 3}, | ||
1459 | {Decoration::Star | Decoration::Color::Blue, 3}, | ||
1460 | {Decoration::Triangle | Decoration::Color::Magenta, 2}, | ||
1461 | {Decoration::Triangle | Decoration::Color::Blue, 2}}}); | ||
1462 | break; | ||
1463 | } | ||
1464 | case 34: { | ||
1465 | generator.setFlag(Generate::TreehouseLayout); | ||
1466 | generator.generate( | ||
1467 | 5, 5, | ||
1468 | {{{Decoration::Poly | Decoration::Color::Orange, 1}, | ||
1469 | {Decoration::Poly | Decoration::Color::Blue, 1}, | ||
1470 | {Decoration::Poly | Decoration::Color::Green, 1}, | ||
1471 | {Decoration::Poly | Decoration::Negative | Decoration::Color::Blue, | ||
1472 | 1}, | ||
1473 | {Decoration::Poly | Decoration::Negative | | ||
1474 | Decoration::Color::Magenta, | ||
1475 | 2}, | ||
1476 | {Decoration::Star | Decoration::Color::Green, 2}, | ||
1477 | {Decoration::Star | Decoration::Color::Magenta, 1}, | ||
1478 | {Decoration::Star | Decoration::Color::Orange, 1}, | ||
1479 | {Decoration::Star | Decoration::Color::Blue, 2}, | ||
1480 | {Decoration::Triangle | Decoration::Color::Magenta, 2}, | ||
1481 | {Decoration::Triangle | Decoration::Color::Orange, 1}, | ||
1482 | {Decoration::Triangle | Decoration::Color::Green, 2}}}); | ||
1483 | break; | ||
1484 | } | ||
1485 | case 35: { | ||
1486 | generator.setFlag(Generate::TreehouseLayout); | ||
1487 | generator.generate( | ||
1488 | 5, 5, | ||
1489 | {{{Decoration::Star | Decoration::Color::Orange, 4}, | ||
1490 | {Decoration::Star | Decoration::Color::Magenta, 4}, | ||
1491 | {Decoration::Triangle | Decoration::Color::Orange, 2}, | ||
1492 | {Decoration::Triangle | Decoration::Color::Magenta, 2}}}); | ||
1493 | break; | ||
1494 | } | ||
1495 | case 36: { | ||
1496 | generator.setFlag(Generate::TreehouseLayout); | ||
1497 | generator.generate( | ||
1498 | 5, 5, | ||
1499 | {{{Decoration::Star | Decoration::Color::Orange, 3}, | ||
1500 | {Decoration::Star | Decoration::Color::Magenta, 3}, | ||
1501 | {Decoration::Star | Decoration::Color::Green, 6}, | ||
1502 | {Decoration::Triangle | Decoration::Color::Orange, 2}, | ||
1503 | {Decoration::Triangle | Decoration::Color::Magenta, 2}}}); | ||
1504 | break; | ||
1505 | } | ||
1506 | case 37: { | ||
1507 | generator.setFlag(Generate::TreehouseLayout); | ||
1508 | generator.generate( | ||
1509 | 5, 5, | ||
1510 | {{{Decoration::Star | Decoration::Color::Orange, 4}, | ||
1511 | {Decoration::Star | Decoration::Color::Magenta, 4}, | ||
1512 | {Decoration::Star | Decoration::Color::Green, 6}, | ||
1513 | {Decoration::Triangle | Decoration::Color::Orange, 1}, | ||
1514 | {Decoration::Triangle | Decoration::Color::Magenta, 1}}}); | ||
1515 | break; | ||
1516 | } | ||
1517 | case 38: { | ||
1518 | generator.setFlag(Generate::TreehouseLayout); | ||
1519 | generator.generate( | ||
1520 | 5, 5, | ||
1521 | {{{Decoration::Star | Decoration::Color::Orange, 2}, | ||
1522 | {Decoration::Star | Decoration::Color::Magenta, 2}, | ||
1523 | {Decoration::Star | Decoration::Color::White, 2}, | ||
1524 | {Decoration::Star | Decoration::Color::Green, 2}, | ||
1525 | {Decoration::Star | Decoration::Color::Black, 2}, | ||
1526 | {Decoration::Triangle | Decoration::Color::Orange, 1}, | ||
1527 | {Decoration::Triangle | Decoration::Color::Magenta, 1}, | ||
1528 | {Decoration::Triangle | Decoration::Color::White, 1}, | ||
1529 | {Decoration::Triangle | Decoration::Color::Green, 1}, | ||
1530 | {Decoration::Triangle | Decoration::Color::Black, 1}}}); | ||
1531 | break; | ||
1532 | } | ||
1533 | case 39: { | ||
1534 | generator.setFlag(Generate::TreehouseLayout); | ||
1535 | generator.generate(5, 5, | ||
1536 | {{{Decoration::Star | Decoration::Color::Magenta, 4}, | ||
1537 | {Decoration::Star | Decoration::Color::Orange, 6}, | ||
1538 | {Decoration::Dot_Intersection, 36}}}); | ||
1539 | break; | ||
1540 | } | ||
1541 | case 40: { | ||
1542 | generator.setGridSize(7, 7); | ||
1543 | generator.setFlag(Generate::RequireCombineShapes); | ||
1544 | generator.setSymmetry(Panel::ParallelV); | ||
1545 | generator.setSymbol(Decoration::Start, 0, 14); | ||
1546 | generator.setSymbol(Decoration::Start, 8, 14); | ||
1547 | generator.setSymbol(Decoration::Exit, 6, 0); | ||
1548 | generator.setSymbol(Decoration::Exit, 14, 0); | ||
1549 | generator.generate(7, 7, | ||
1550 | {{{Decoration::Poly | Decoration::Color::Orange, 5}}}); | ||
1551 | break; | ||
1552 | } | ||
1553 | case 41: { | ||
1554 | generator.setGridSize(7, 7); | ||
1555 | generator.setFlag(Generate::RequireCombineShapes); | ||
1556 | generator.setSymmetry(Panel::ParallelHFlip); | ||
1557 | generator.setSymbol(Decoration::Start, 0, 14); | ||
1558 | generator.setSymbol(Decoration::Start, 14, 6); | ||
1559 | generator.setSymbol(Decoration::Exit, 0, 0); | ||
1560 | generator.setSymbol(Decoration::Exit, 14, 8); | ||
1561 | generator.generate(7, 7, | ||
1562 | {{{Decoration::Poly | Decoration::Color::Orange, 5}}}); | ||
1563 | break; | ||
1564 | } | ||
1565 | case 42: { | ||
1566 | generator.setGridSize(7, 7); | ||
1567 | generator.setFlag(Generate::RequireCombineShapes); | ||
1568 | generator.setSymmetry(Panel::ParallelVFlip); | ||
1569 | generator.setSymbol(Decoration::Start, 0, 14); | ||
1570 | generator.setSymbol(Decoration::Start, 8, 0); | ||
1571 | generator.setSymbol(Decoration::Exit, 6, 0); | ||
1572 | generator.setSymbol(Decoration::Exit, 14, 14); | ||
1573 | generator.generate(7, 7, | ||
1574 | {{{Decoration::Poly | Decoration::Color::Orange, 5}}}); | ||
1575 | break; | ||
1576 | } | ||
1577 | case 43: { | ||
1578 | generator.setSymmetry(Panel::Symmetry::RotateLeft); | ||
1579 | generator.setSymbol(Decoration::Start, 4, 4); | ||
1580 | generator.setSymbol(Decoration::Start, 10, 4); | ||
1581 | generator.setSymbol(Decoration::Start, 4, 10); | ||
1582 | generator.setSymbol(Decoration::Start, 10, 10); | ||
1583 | generator.setSymbol(Decoration::Exit, 4, 0); | ||
1584 | generator.setSymbol(Decoration::Exit, 14, 4); | ||
1585 | generator.setSymbol(Decoration::Exit, 0, 10); | ||
1586 | generator.setSymbol(Decoration::Exit, 10, 14); | ||
1587 | generator.generate( | ||
1588 | 7, 7, | ||
1589 | {{{Decoration::Triangle4 | Decoration::Color::Orange, 1}, | ||
1590 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
1591 | break; | ||
1592 | } | ||
1593 | case 44: { | ||
1594 | generator.setFlag(Generate::WriteInvisible); | ||
1595 | generator.setFlag(Generate::StartEdgeOnly); | ||
1596 | generator.setSymmetry(Panel::Symmetry::FlipXY); | ||
1597 | generator.setSymbol(Decoration::Exit, 0, 8); | ||
1598 | generator.setSymbol(Decoration::Exit, 8, 0); | ||
1599 | generator.generate(7, 7, | ||
1600 | {{{Decoration::Dot | Decoration::Color::Blue, 2}, | ||
1601 | {Decoration::Dot | Decoration::Color::Yellow, 2}, | ||
1602 | {Decoration::Dot, 8}, | ||
1603 | {Decoration::Eraser | Decoration::Color::White, 1}, | ||
1604 | {Decoration::Start, 1}}}); | ||
1605 | break; | ||
1606 | } | ||
1607 | case 45: { | ||
1608 | generator.setSymmetry(Panel::Symmetry::FlipXY); | ||
1609 | generator.setSymbol(Decoration::Start, 0, 16); | ||
1610 | generator.setSymbol(Decoration::Start, 16, 0); | ||
1611 | generator.setSymbol(Decoration::Exit, 8, 0); | ||
1612 | generator.setSymbol(Decoration::Exit, 8, 16); | ||
1613 | generator.setSymbol(Decoration::Exit, 0, 8); | ||
1614 | generator.setSymbol(Decoration::Exit, 16, 8); | ||
1615 | generator.generate( | ||
1616 | 8, 8, | ||
1617 | {{{Decoration::Triangle | Decoration::Color::Cyan, 3}, | ||
1618 | {Decoration::Triangle | Decoration::Color::Yellow, 2}, | ||
1619 | {Decoration::Star | Decoration::Color::Cyan, 3}, | ||
1620 | {Decoration::Star | Decoration::Color::Yellow, 3}, | ||
1621 | {Decoration::Stone | Decoration::Color::Cyan, 2}, | ||
1622 | {Decoration::Stone | Decoration::Color::Yellow, 3}}}); | ||
1623 | break; | ||
1624 | } | ||
1625 | case 46: { | ||
1626 | generator.setGridSize(7, 7); | ||
1627 | generator.setSymmetry((Random::rand() % 2) == 0 | ||
1628 | ? Panel::Symmetry::Vertical | ||
1629 | : Panel::Symmetry::Horizontal); | ||
1630 | generator.setFlag(Generate::WriteInvisible); | ||
1631 | generator.setFlag(Generate::DisableDotIntersection); | ||
1632 | MakeSecretSymmetryGrid(generator); | ||
1633 | generator.generate( | ||
1634 | 7, 7, | ||
1635 | {{{Decoration::Dot | Decoration::Color::Cyan, 2}, | ||
1636 | {Decoration::Dot | Decoration::Color::Yellow, 2}, | ||
1637 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
1638 | break; | ||
1639 | } | ||
1640 | case 47: { | ||
1641 | generator.setGridSize(7, 7); | ||
1642 | generator.setSymmetry((Random::rand() % 2) == 0 | ||
1643 | ? Panel::Symmetry::ParallelH | ||
1644 | : Panel::Symmetry::ParallelV); | ||
1645 | generator.setFlag(Generate::WriteInvisible); | ||
1646 | generator.setFlag(Generate::DisableDotIntersection); | ||
1647 | MakeSecretSymmetryGrid(generator); | ||
1648 | generator.generate( | ||
1649 | 7, 7, | ||
1650 | {{{Decoration::Dot | Decoration::Color::Cyan, 2}, | ||
1651 | {Decoration::Dot | Decoration::Color::Yellow, 2}, | ||
1652 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
1653 | break; | ||
1654 | } | ||
1655 | case 48: { | ||
1656 | generator.setGridSize(7, 7); | ||
1657 | generator.setSymmetry(Panel::Symmetry::Rotational); | ||
1658 | generator.setFlag(Generate::WriteInvisible); | ||
1659 | generator.setFlag(Generate::DisableDotIntersection); | ||
1660 | MakeSecretSymmetryGrid(generator); | ||
1661 | generator.generate( | ||
1662 | 7, 7, | ||
1663 | {{{Decoration::Dot | Decoration::Color::Cyan, 2}, | ||
1664 | {Decoration::Dot | Decoration::Color::Yellow, 2}, | ||
1665 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
1666 | break; | ||
1667 | } | ||
1668 | case 49: { | ||
1669 | generator.setGridSize(7, 7); | ||
1670 | generator.setSymmetry((Random::rand() % 2) == 0 | ||
1671 | ? Panel::Symmetry::ParallelHFlip | ||
1672 | : Panel::Symmetry::ParallelVFlip); | ||
1673 | generator.setFlag(Generate::WriteInvisible); | ||
1674 | generator.setFlag(Generate::DisableDotIntersection); | ||
1675 | MakeSecretSymmetryGrid(generator); | ||
1676 | generator.generate( | ||
1677 | 7, 7, | ||
1678 | {{{Decoration::Dot | Decoration::Color::Cyan, 2}, | ||
1679 | {Decoration::Dot | Decoration::Color::Yellow, 2}, | ||
1680 | {Decoration::Triangle | Decoration::Color::Orange, 4}}}); | ||
1681 | break; | ||
1682 | } | ||
1683 | } | ||
1684 | 1559 | ||
1685 | Rice::String str(generator.AsCode()); | 1560 | Rice::String str(generator.AsCode()); |
1686 | return str; | 1561 | return str; |