about summary refs log tree commit diff stats
path: root/ext/wittle_generator/wittle_generator.cpp
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2025-01-14 19:35:34 -0500
committerStar Rauchenberger <fefferburbia@gmail.com>2025-01-14 19:35:34 -0500
commit0822404cf75fb6ad04faf55861faaf8330effa59 (patch)
tree3848f7a74b1433246beb16db9f90efb67df0c42a /ext/wittle_generator/wittle_generator.cpp
parentd00531cb6c36e061bf5b9a4361ea74ae473d6946 (diff)
downloadwittle-0822404cf75fb6ad04faf55861faaf8330effa59.tar.gz
wittle-0822404cf75fb6ad04faf55861faaf8330effa59.tar.bz2
wittle-0822404cf75fb6ad04faf55861faaf8330effa59.zip
Split puzzle generators into separate files
Diffstat (limited to 'ext/wittle_generator/wittle_generator.cpp')
-rw-r--r--ext/wittle_generator/wittle_generator.cpp1889
1 files changed, 9 insertions, 1880 deletions
diff --git a/ext/wittle_generator/wittle_generator.cpp b/ext/wittle_generator/wittle_generator.cpp index 56f3d9d..5669592 100644 --- a/ext/wittle_generator/wittle_generator.cpp +++ b/ext/wittle_generator/wittle_generator.cpp
@@ -4,394 +4,14 @@
4#include <vector> 4#include <vector>
5 5
6#include "Generate.h" 6#include "Generate.h"
7#include "PuzzlesetEasy.h"
8#include "PuzzlesetHard.h"
9#include "PuzzlesetMedium.h"
7#include "Random.h" 10#include "Random.h"
8 11
9void MakeSecretSymmetryGrid(Generate& generator) {
10 for (int x : {0, 6, 8, 14}) {
11 for (int y : {0, 6, 8, 14}) {
12 generator.setSymbol(Decoration::Start, x, y);
13 }
14 }
15 for (int x : {0, 14}) {
16 for (int y : {2, 4, 10, 12}) {
17 generator.setSymbol(Decoration::Exit, x, y);
18 generator.setSymbol(Decoration::Exit, y, x);
19 }
20 }
21}
22
23Rice::Object wittle_generator_generate_easy(Rice::Object /* self */) { 12Rice::Object wittle_generator_generate_easy(Rice::Object /* self */) {
24 static std::vector<std::function<void(Generate&)>> generator_fns{ 13 const std::vector<std::function<void(Generate&)>>& generator_fns =
25 [](Generate& generator) { 14 GetEasyPuzzles();
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 15
396 Generate generator; 16 Generate generator;
397 17
@@ -405,594 +25,8 @@ Rice::Object wittle_generator_generate_easy(Rice::Object /* self */) {
405} 25}
406 26
407Rice::Object wittle_generator_generate_medium(Rice::Object /* self */) { 27Rice::Object wittle_generator_generate_medium(Rice::Object /* self */) {
408 static std::vector<std::function<void(Generate&)>> generator_fns{ 28 const std::vector<std::function<void(Generate&)>>& generator_fns =
409 [](Generate& generator) { 29 GetMediumPuzzles();
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.setGridSize(7, 7);
950 generator.setSymmetry(Panel::Symmetry::ParallelV);
951 generator.generate(7, 7,
952 {{{Decoration::Gap, 12},
953 {Decoration::Dot_Intersection, 10},
954 {Decoration::Start, 2},
955 {Decoration::Exit, 1}}});
956 },
957 [](Generate& generator) {
958 generator.setGridSize(7, 7);
959 generator.setSymmetry(Panel::Symmetry::ParallelHFlip);
960 generator.generate(7, 7,
961 {{{Decoration::Gap, 12},
962 {Decoration::Dot_Intersection, 10},
963 {Decoration::Start, 2},
964 {Decoration::Exit, 1}}});
965 },
966 [](Generate& generator) {
967 generator.setFlag(Generate::StartEdgeOnly);
968 generator.setSymbol(Decoration::Exit, 4 * 2, 0);
969 generator.generate(4, 4,
970 {{{Decoration::Dot_Intersection, 25},
971 {Decoration::Poly | Decoration::Color::Yellow, 1},
972 {Decoration::Poly | Decoration::Color::Yellow |
973 Decoration::Can_Rotate,
974 2},
975 {Decoration::Start, 1}}});
976 },
977 [](Generate& generator) {
978 generator.setFlag(Generate::RegularStartEnd);
979 generator.setSymmetry(Panel::Vertical);
980 generator.generate(
981 7, 7, {{{Decoration::Poly | Decoration::Color::Yellow, 5}}});
982 },
983 [](Generate& generator) {
984 generator.setFlag(Generate::TreehouseLayout);
985 generator.generate(
986 4, 4,
987 {{{Decoration::Star | Decoration::Color::Black, 1},
988 {Decoration::Star | Decoration::Color::White, 2},
989 {Decoration::Stone | Decoration::Color::Black, 2},
990 {Decoration::Stone | Decoration::Color::White, 1},
991 {Decoration::Poly | Decoration::Can_Rotate | Decoration::Orange,
992 1},
993 {Decoration::Poly | Decoration::Orange, 1}}});
994 },
995 };
996 30
997 Generate generator; 31 Generate generator;
998 32
@@ -1006,913 +40,8 @@ Rice::Object wittle_generator_generate_medium(Rice::Object /* self */) {
1006} 40}
1007 41
1008Rice::Object wittle_generator_generate_expert(Rice::Object /* self */) { 42Rice::Object wittle_generator_generate_expert(Rice::Object /* self */) {
1009 static std::vector<std::function<void(Generate&)>> generator_fns{ 43 const std::vector<std::function<void(Generate&)>>& generator_fns =
1010 [](Generate& generator) { 44 GetHardPuzzles();
1011 generator.setFlag(Generate::StartEdgeOnly);
1012 generator.setSymmetry(Panel::Rotational);
1013 generator.generate(
1014 6, 6,
1015 {{{Decoration::Triangle | Decoration::Color::Orange, 12},
1016 {Decoration::Start, 1},
1017 {Decoration::Exit, 1}}});
1018 },
1019 [](Generate& generator) {
1020 generator.setFlag(Generate::StartEdgeOnly);
1021 generator.setFlag(Generate::WriteInvisible);
1022 generator.setSymmetry(Panel::Rotational);
1023 generator.generate(7, 7,
1024 {{{Decoration::Dot | Decoration::Color::Blue, 4},
1025 {Decoration::Dot | Decoration::Color::Yellow, 4},
1026 {Decoration::Dot, 7},
1027 {Decoration::Start, 1},
1028 {Decoration::Exit, 1}}});
1029 },
1030 [](Generate& generator) {
1031 generator.setFlag(Generate::StartEdgeOnly);
1032 generator.setFlag(Generate::WriteInvisible);
1033 generator.setSymmetry(Panel::Rotational);
1034 generator.generate(7, 7,
1035 {{{Decoration::Stone | Decoration::Color::Black, 6},
1036 {Decoration::Stone | Decoration::Color::White, 6},
1037 {Decoration::Start, 1},
1038 {Decoration::Exit, 1}}});
1039 },
1040 [](Generate& generator) {
1041 generator.setFlag(Generate::StartEdgeOnly);
1042 generator.setFlag(Generate::WriteInvisible);
1043 generator.setSymmetry(Panel::Rotational);
1044 generator.generate(7, 7,
1045 {{{Decoration::Star | Decoration::Color::Orange, 6},
1046 {Decoration::Star | Decoration::Color::Green, 6},
1047 {Decoration::Start, 1},
1048 {Decoration::Exit, 1}}});
1049 },
1050 [](Generate& generator) {
1051 generator.setFlag(Generate::StartEdgeOnly);
1052 generator.setFlag(Generate::WriteInvisible);
1053 generator.setFlag(Generate::RequireCombineShapes);
1054 generator.setSymmetry(Panel::Rotational);
1055 generator.generate(5, 5,
1056 {{{Decoration::Poly | Decoration::Color::Yellow, 3},
1057 {Decoration::Start, 1},
1058 {Decoration::Exit, 1}}});
1059 },
1060 [](Generate& generator) {
1061 generator.setFlag(Generate::StartEdgeOnly);
1062 generator.setFlag(Generate::WriteInvisible);
1063 generator.setSymmetry(Panel::Rotational);
1064 generator.generate(
1065 7, 7,
1066 {{{Decoration::Dot | Decoration::Color::Blue, 2},
1067 {Decoration::Dot | Decoration::Color::Yellow, 2},
1068 {Decoration::Dot, 8},
1069 {Decoration::Eraser | Decoration::Color::Purple, 1},
1070 {Decoration::Start, 1},
1071 {Decoration::Exit, 1}}});
1072 },
1073 [](Generate& generator) {
1074 generator.setSymbol(Decoration::Exit, 0, 0);
1075 generator.setSymbol(Decoration::Exit, 0, 4 * 4);
1076 generator.setSymbol(Decoration::Exit, 4 * 4, 0);
1077 generator.setSymbol(Decoration::Exit, 4 * 4, 4 * 4);
1078 generator.generate(8, 8,
1079 {{{Decoration::Stone | Decoration::Color::White, 10},
1080 {Decoration::Stone | Decoration::Color::Black, 10},
1081 {Decoration::Dot_Intersection, 81},
1082 {Decoration::Start, 8}}});
1083 },
1084 [](Generate& generator) {
1085 generator.setFlag(Generate::RegularStartEnd);
1086 generator.generate(
1087 6, 6,
1088 {{{Decoration::Dot_Intersection, 49},
1089 {Decoration::Poly | Decoration::Color::Orange, 1},
1090 {Decoration::Poly | Decoration::Color::Blue, 1},
1091 {Decoration::Poly | Decoration::Negative |
1092 Decoration::Color::Blue,
1093 2},
1094 {Decoration::Poly | Decoration::Negative |
1095 Decoration::Color::Orange,
1096 1},
1097 {Decoration::Star | Decoration::Color::Orange, 4},
1098 {Decoration::Star | Decoration::Color::Blue, 3},
1099 {Decoration::Triangle | Decoration::Color::Orange, 2},
1100 {Decoration::Triangle | Decoration::Color::Blue, 1},
1101 {Decoration::Stone | Decoration::Color::Orange, 1},
1102 {Decoration::Stone | Decoration::Color::Blue, 2},
1103 {Decoration::Eraser | Decoration::Color::White, 1}}});
1104 },
1105 [](Generate& generator) {
1106 generator.setFlag(Generate::RegularStartEnd);
1107 generator.setSymmetry(Panel::Rotational);
1108 generator.generate(
1109 7, 7, {{{Decoration::Poly | Decoration::Color::Yellow, 5}}});
1110 },
1111 [](Generate& generator) {
1112 generator.setFlag(Generate::RegularStartEnd);
1113 generator.generate(
1114 5, 5,
1115 {{{Decoration::Poly | Decoration::Color::Yellow, 2},
1116 {Decoration::Poly | Decoration::Color::Yellow |
1117 Decoration::Can_Rotate,
1118 1},
1119 {Decoration::Stone | Decoration::Color::Black, 5},
1120 {Decoration::Stone | Decoration::Color::White, 3}}});
1121 },
1122 [](Generate& generator) {
1123 generator.setFlag(Generate::RegularStartEnd);
1124 generator.setFlag(Generate::BigShapes);
1125 generator.generate(
1126 5, 5,
1127 {{{Decoration::Poly | Decoration::Color::Yellow |
1128 Decoration::Can_Rotate,
1129 2},
1130 {Decoration::Triangle | Decoration::Color::Orange, 3},
1131 {Decoration::Stone | Decoration::Color::Black, 3},
1132 {Decoration::Stone | Decoration::Color::White, 3}}});
1133 },
1134 [](Generate& generator) {
1135 generator.setFlag(Generate::StartEdgeOnly);
1136 generator.setSymbol(Decoration::Exit, 4 * 2, 0);
1137 generator.generate(5, 5,
1138 {{{Decoration::Dot_Intersection, 36},
1139 {Decoration::Poly | Decoration::Color::Yellow, 3},
1140 {Decoration::Start, 1}}});
1141 },
1142 [](Generate& generator) {
1143 generator.setFlag(Generate::RegularStartEnd);
1144 generator.setFlag(Generate::BigShapes);
1145 generator.setFlag(Generate::RequireCancelShapes);
1146 generator.generate(5, 5,
1147 {{{Decoration::Poly | Decoration::Color::Yellow, 3},
1148 {Decoration::Poly | Decoration::Negative |
1149 Decoration::Color::Blue,
1150 3}}});
1151 },
1152 [](Generate& generator) {
1153 generator.setFlag(Generate::RegularStartEnd);
1154 generator.generate(
1155 5, 6,
1156 {{{Decoration::Dot_Intersection, 42},
1157 {Decoration::Poly | Decoration::Color::Yellow, 2},
1158 {Decoration::Poly | Decoration::Color::Yellow |
1159 Decoration::Can_Rotate,
1160 1},
1161 {Decoration::Triangle | Decoration::Color::Orange, 3},
1162 {Decoration::Stone | Decoration::Color::Black, 2},
1163 {Decoration::Stone | Decoration::Color::White, 2}}});
1164 },
1165 [](Generate& generator) {
1166 generator.setFlag(Generate::RegularStartEnd);
1167 generator.generate(
1168 5, 5,
1169 {{{Decoration::Poly | Decoration::Color::Yellow, 3},
1170 {Decoration::Poly | Decoration::Negative |
1171 Decoration::Color::Blue,
1172 1},
1173 {Decoration::Stone | Decoration::Color::Black, 4},
1174 {Decoration::Stone | Decoration::Color::White, 3}}});
1175 },
1176 [](Generate& generator) {
1177 generator.setFlag(Generate::RegularStartEnd);
1178 generator.generate(
1179 5, 5,
1180 {{{Decoration::Poly | Decoration::Color::Yellow, 3},
1181 {Decoration::Poly | Decoration::Negative |
1182 Decoration::Color::Blue,
1183 2},
1184 {Decoration::Triangle | Decoration::Color::Orange, 5}}});
1185 },
1186 [](Generate& generator) {
1187 generator.setFlag(Generate::RegularStartEnd);
1188 generator.generate(
1189 5, 5,
1190 {{{Decoration::Poly | Decoration::Color::Yellow, 3},
1191 {Decoration::Poly | Decoration::Negative |
1192 Decoration::Color::Blue,
1193 1},
1194 {Decoration::Triangle | Decoration::Color::Orange, 3},
1195 {Decoration::Stone | Decoration::Color::Black, 2},
1196 {Decoration::Stone | Decoration::Color::White, 2}}});
1197 },
1198 [](Generate& generator) {
1199 generator.setFlag(Generate::RegularStartEnd);
1200 generator.generate(
1201 5, 5,
1202 {{{Decoration::Poly | Decoration::Color::Yellow, 3},
1203 {Decoration::Poly | Decoration::Negative |
1204 Decoration::Color::Blue,
1205 2},
1206 {Decoration::Triangle | Decoration::Color::Orange, 3},
1207 {Decoration::Stone | Decoration::Color::Black, 2},
1208 {Decoration::Stone | Decoration::Color::White, 2}}});
1209 },
1210 [](Generate& generator) {
1211 generator.setFlag(Generate::DisconnectShapes);
1212 generator.setFlag(Generate::BigShapes);
1213 generator.setSymbol(Decoration::Start, 0, 5 * 2);
1214 generator.setSymbol(Decoration::Exit, 0, 0);
1215 generator.generate(
1216 5, 5,
1217 {{{Decoration::Poly | Decoration::Color::Yellow, 2},
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::BigShapes);
1227 generator.setSymbol(Decoration::Exit, 5 * 2, 0);
1228 generator.generate(5, 5,
1229 {{{Decoration::Dot_Intersection, 36},
1230 {Decoration::Poly | Decoration::Color::Yellow, 2},
1231 {Decoration::Poly | Decoration::Negative |
1232 Decoration::Color::Blue,
1233 1},
1234 {Decoration::Start, 1}}});
1235 },
1236 [](Generate& generator) {
1237 generator.setFlag(Generate::BigShapes);
1238 generator.setSymbol(Decoration::Exit, 5 * 2, 0);
1239 generator.generate(5, 5,
1240 {{{Decoration::Dot_Intersection, 36},
1241 {Decoration::Poly | Decoration::Color::Yellow, 3},
1242 {Decoration::Poly | Decoration::Negative |
1243 Decoration::Color::Blue,
1244 2},
1245 {Decoration::Start, 1}}});
1246 },
1247 [](Generate& generator) {
1248 generator.setFlag(Generate::TreehouseLayout);
1249 generator.generate(
1250 5, 5,
1251 {{{Decoration::Star | Decoration::Color::Orange, 4},
1252 {Decoration::Triangle | Decoration::Color::Orange, 6}}});
1253 },
1254 [](Generate& generator) {
1255 generator.setFlag(Generate::TreehouseLayout);
1256 generator.generate(
1257 5, 5,
1258 {{{Decoration::Star | Decoration::Color::Orange, 6},
1259 {Decoration::Triangle | Decoration::Color::Orange, 5}}});
1260 },
1261 [](Generate& generator) {
1262 generator.setFlag(Generate::RegularStartEnd);
1263 generator.generate(
1264 5, 5,
1265 {{{Decoration::Star | Decoration::Color::Orange, 5},
1266 {Decoration::Triangle | Decoration::Color::Orange, 3},
1267 {Decoration::Stone | Decoration::Color::Orange, 3}}});
1268 },
1269 [](Generate& generator) {
1270 generator.setFlag(Generate::TreehouseLayout);
1271 generator.generate(5, 5,
1272 {{{Decoration::Poly | Decoration::Color::Orange, 3},
1273 {Decoration::Poly | Decoration::Negative |
1274 Decoration::Color::Blue,
1275 1},
1276 {Decoration::Star | Decoration::Color::Orange, 5},
1277 {Decoration::Star | Decoration::Color::Blue, 3}}});
1278 },
1279 [](Generate& generator) {
1280 generator.setFlag(Generate::TreehouseLayout);
1281 generator.generate(5, 5,
1282 {{{Decoration::Poly | Decoration::Color::Orange, 3},
1283 {Decoration::Poly | Decoration::Negative |
1284 Decoration::Color::Blue,
1285 2},
1286 {Decoration::Star | Decoration::Color::Orange, 5},
1287 {Decoration::Star | Decoration::Color::Blue, 3}}});
1288 },
1289 [](Generate& generator) {
1290 generator.setFlag(Generate::TreehouseLayout);
1291 generator.generate(
1292 5, 5,
1293 {{{Decoration::Poly | Decoration::Color::Orange, 1},
1294 {Decoration::Poly | Decoration::Color::Magenta, 2},
1295 {Decoration::Poly | Decoration::Negative |
1296 Decoration::Color::Orange,
1297 2},
1298 {Decoration::Poly | Decoration::Negative |
1299 Decoration::Color::Blue,
1300 2},
1301 {Decoration::Star | Decoration::Color::Orange, 3},
1302 {Decoration::Star | Decoration::Color::Blue, 3},
1303 {Decoration::Star | Decoration::Color::Magenta, 3}}});
1304 },
1305 [](Generate& generator) {
1306 generator.setFlag(Generate::TreehouseLayout);
1307 generator.generate(
1308 5, 5,
1309 {{{Decoration::Poly | Decoration::Color::Magenta, 2},
1310 {Decoration::Poly | Decoration::Negative |
1311 Decoration::Color::Blue,
1312 2},
1313 {Decoration::Star | Decoration::Color::Magenta, 3},
1314 {Decoration::Star | Decoration::Color::Blue, 3},
1315 {Decoration::Triangle | Decoration::Color::Magenta, 2},
1316 {Decoration::Triangle | Decoration::Color::Blue, 2}}});
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::Blue, 1},
1324 {Decoration::Poly | Decoration::Color::Green, 1},
1325 {Decoration::Poly | Decoration::Negative |
1326 Decoration::Color::Blue,
1327 1},
1328 {Decoration::Poly | Decoration::Negative |
1329 Decoration::Color::Magenta,
1330 2},
1331 {Decoration::Star | Decoration::Color::Green, 2},
1332 {Decoration::Star | Decoration::Color::Magenta, 1},
1333 {Decoration::Star | Decoration::Color::Orange, 1},
1334 {Decoration::Star | Decoration::Color::Blue, 2},
1335 {Decoration::Triangle | Decoration::Color::Magenta, 2},
1336 {Decoration::Triangle | Decoration::Color::Orange, 1},
1337 {Decoration::Triangle | Decoration::Color::Green, 2}}});
1338 },
1339 [](Generate& generator) {
1340 generator.setFlag(Generate::TreehouseLayout);
1341 generator.generate(
1342 5, 5,
1343 {{{Decoration::Star | Decoration::Color::Orange, 4},
1344 {Decoration::Star | Decoration::Color::Magenta, 4},
1345 {Decoration::Triangle | Decoration::Color::Orange, 2},
1346 {Decoration::Triangle | Decoration::Color::Magenta, 2}}});
1347 },
1348 [](Generate& generator) {
1349 generator.setFlag(Generate::TreehouseLayout);
1350 generator.generate(
1351 5, 5,
1352 {{{Decoration::Star | Decoration::Color::Orange, 3},
1353 {Decoration::Star | Decoration::Color::Magenta, 3},
1354 {Decoration::Star | Decoration::Color::Green, 6},
1355 {Decoration::Triangle | Decoration::Color::Orange, 2},
1356 {Decoration::Triangle | Decoration::Color::Magenta, 2}}});
1357 },
1358 [](Generate& generator) {
1359 generator.setFlag(Generate::TreehouseLayout);
1360 generator.generate(
1361 5, 5,
1362 {{{Decoration::Star | Decoration::Color::Orange, 4},
1363 {Decoration::Star | Decoration::Color::Magenta, 4},
1364 {Decoration::Star | Decoration::Color::Green, 6},
1365 {Decoration::Triangle | Decoration::Color::Orange, 1},
1366 {Decoration::Triangle | Decoration::Color::Magenta, 1}}});
1367 },
1368 [](Generate& generator) {
1369 generator.setFlag(Generate::TreehouseLayout);
1370 generator.generate(
1371 5, 5,
1372 {{{Decoration::Star | Decoration::Color::Orange, 2},
1373 {Decoration::Star | Decoration::Color::Magenta, 2},
1374 {Decoration::Star | Decoration::Color::White, 2},
1375 {Decoration::Star | Decoration::Color::Green, 2},
1376 {Decoration::Star | Decoration::Color::Black, 2},
1377 {Decoration::Triangle | Decoration::Color::Orange, 1},
1378 {Decoration::Triangle | Decoration::Color::Magenta, 1},
1379 {Decoration::Triangle | Decoration::Color::White, 1},
1380 {Decoration::Triangle | Decoration::Color::Green, 1},
1381 {Decoration::Triangle | Decoration::Color::Black, 1}}});
1382 },
1383 [](Generate& generator) {
1384 generator.setFlag(Generate::TreehouseLayout);
1385 generator.generate(5, 5,
1386 {{{Decoration::Star | Decoration::Color::Magenta, 4},
1387 {Decoration::Star | Decoration::Color::Orange, 6},
1388 {Decoration::Dot_Intersection, 36}}});
1389 },
1390 [](Generate& generator) {
1391 generator.setGridSize(7, 7);
1392 generator.setFlag(Generate::RequireCombineShapes);
1393 generator.setSymmetry(Panel::ParallelV);
1394 generator.setSymbol(Decoration::Start, 0, 14);
1395 generator.setSymbol(Decoration::Start, 8, 14);
1396 generator.setSymbol(Decoration::Exit, 6, 0);
1397 generator.setSymbol(Decoration::Exit, 14, 0);
1398 generator.generate(
1399 7, 7, {{{Decoration::Poly | Decoration::Color::Orange, 5}}});
1400 },
1401 [](Generate& generator) {
1402 generator.setGridSize(7, 7);
1403 generator.setFlag(Generate::RequireCombineShapes);
1404 generator.setSymmetry(Panel::ParallelHFlip);
1405 generator.setSymbol(Decoration::Start, 0, 14);
1406 generator.setSymbol(Decoration::Start, 14, 6);
1407 generator.setSymbol(Decoration::Exit, 0, 0);
1408 generator.setSymbol(Decoration::Exit, 14, 8);
1409 generator.generate(
1410 7, 7, {{{Decoration::Poly | Decoration::Color::Orange, 5}}});
1411 },
1412 [](Generate& generator) {
1413 generator.setGridSize(7, 7);
1414 generator.setFlag(Generate::RequireCombineShapes);
1415 generator.setSymmetry(Panel::ParallelVFlip);
1416 generator.setSymbol(Decoration::Start, 0, 14);
1417 generator.setSymbol(Decoration::Start, 8, 0);
1418 generator.setSymbol(Decoration::Exit, 6, 0);
1419 generator.setSymbol(Decoration::Exit, 14, 14);
1420 generator.generate(
1421 7, 7, {{{Decoration::Poly | Decoration::Color::Orange, 5}}});
1422 },
1423 [](Generate& generator) {
1424 generator.setSymmetry(Panel::Symmetry::RotateLeft);
1425 generator.setSymbol(Decoration::Start, 4, 4);
1426 generator.setSymbol(Decoration::Start, 10, 4);
1427 generator.setSymbol(Decoration::Start, 4, 10);
1428 generator.setSymbol(Decoration::Start, 10, 10);
1429 generator.setSymbol(Decoration::Exit, 4, 0);
1430 generator.setSymbol(Decoration::Exit, 14, 4);
1431 generator.setSymbol(Decoration::Exit, 0, 10);
1432 generator.setSymbol(Decoration::Exit, 10, 14);
1433 generator.generate(
1434 7, 7,
1435 {{{Decoration::Triangle4 | Decoration::Color::Orange, 1},
1436 {Decoration::Triangle | Decoration::Color::Orange, 4}}});
1437 },
1438 [](Generate& generator) {
1439 generator.setFlag(Generate::WriteInvisible);
1440 generator.setFlag(Generate::StartEdgeOnly);
1441 generator.setSymmetry(Panel::Symmetry::FlipXY);
1442 generator.setSymbol(Decoration::Exit, 0, 8);
1443 generator.setSymbol(Decoration::Exit, 8, 0);
1444 generator.generate(7, 7,
1445 {{{Decoration::Dot | Decoration::Color::Blue, 2},
1446 {Decoration::Dot | Decoration::Color::Yellow, 2},
1447 {Decoration::Dot, 8},
1448 {Decoration::Eraser | Decoration::Color::White, 1},
1449 {Decoration::Start, 1}}});
1450 },
1451 [](Generate& generator) {
1452 generator.setSymmetry(Panel::Symmetry::FlipXY);
1453 generator.setSymbol(Decoration::Start, 0, 16);
1454 generator.setSymbol(Decoration::Start, 16, 0);
1455 generator.setSymbol(Decoration::Exit, 8, 0);
1456 generator.setSymbol(Decoration::Exit, 8, 16);
1457 generator.setSymbol(Decoration::Exit, 0, 8);
1458 generator.setSymbol(Decoration::Exit, 16, 8);
1459 generator.generate(
1460 8, 8,
1461 {{{Decoration::Triangle | Decoration::Color::Cyan, 3},
1462 {Decoration::Triangle | Decoration::Color::Yellow, 2},
1463 {Decoration::Star | Decoration::Color::Cyan, 3},
1464 {Decoration::Star | Decoration::Color::Yellow, 3},
1465 {Decoration::Stone | Decoration::Color::Cyan, 2},
1466 {Decoration::Stone | Decoration::Color::Yellow, 3}}});
1467 },
1468 [](Generate& generator) {
1469 generator.setGridSize(7, 7);
1470 generator.setSymmetry((Random::rand() % 2) == 0
1471 ? Panel::Symmetry::Vertical
1472 : Panel::Symmetry::Horizontal);
1473 generator.setFlag(Generate::WriteInvisible);
1474 generator.setFlag(Generate::DisableDotIntersection);
1475 MakeSecretSymmetryGrid(generator);
1476 generator.generate(
1477 7, 7,
1478 {{{Decoration::Dot | Decoration::Color::Cyan, 2},
1479 {Decoration::Dot | Decoration::Color::Yellow, 2},
1480 {Decoration::Triangle | Decoration::Color::Orange, 4}}});
1481 },
1482 [](Generate& generator) {
1483 generator.setGridSize(7, 7);
1484 generator.setSymmetry((Random::rand() % 2) == 0
1485 ? Panel::Symmetry::ParallelH
1486 : Panel::Symmetry::ParallelV);
1487 generator.setFlag(Generate::WriteInvisible);
1488 generator.setFlag(Generate::DisableDotIntersection);
1489 MakeSecretSymmetryGrid(generator);
1490 generator.generate(
1491 7, 7,
1492 {{{Decoration::Dot | Decoration::Color::Cyan, 2},
1493 {Decoration::Dot | Decoration::Color::Yellow, 2},
1494 {Decoration::Triangle | Decoration::Color::Orange, 4}}});
1495 },
1496 [](Generate& generator) {
1497 generator.setGridSize(7, 7);
1498 generator.setSymmetry(Panel::Symmetry::Rotational);
1499 generator.setFlag(Generate::WriteInvisible);
1500 generator.setFlag(Generate::DisableDotIntersection);
1501 MakeSecretSymmetryGrid(generator);
1502 generator.generate(
1503 7, 7,
1504 {{{Decoration::Dot | Decoration::Color::Cyan, 2},
1505 {Decoration::Dot | Decoration::Color::Yellow, 2},
1506 {Decoration::Triangle | Decoration::Color::Orange, 4}}});
1507 },
1508 [](Generate& generator) {
1509 generator.setGridSize(7, 7);
1510 generator.setSymmetry((Random::rand() % 2) == 0
1511 ? Panel::Symmetry::ParallelHFlip
1512 : Panel::Symmetry::ParallelVFlip);
1513 generator.setFlag(Generate::WriteInvisible);
1514 generator.setFlag(Generate::DisableDotIntersection);
1515 MakeSecretSymmetryGrid(generator);
1516 generator.generate(
1517 7, 7,
1518 {{{Decoration::Dot | Decoration::Color::Cyan, 2},
1519 {Decoration::Dot | Decoration::Color::Yellow, 2},
1520 {Decoration::Triangle | Decoration::Color::Orange, 4}}});
1521 },
1522 [](Generate& generator) {
1523 generator.setFlag(Generate::RegularStartEnd);
1524 generator.generate(
1525 4, 4,
1526 {{{Decoration::Triangle | Decoration::Color::Orange, 15},
1527 {Decoration::Eraser | Decoration::Color::Purple, 1}}});
1528 },
1529 [](Generate& generator) {
1530 generator.setFlag(Generate::RegularStartEnd);
1531 generator.generate(
1532 4, 4,
1533 {{{Decoration::Stone | Decoration::Color::White, 1},
1534 {Decoration::Stone | Decoration::Color::Black, 2},
1535 {Decoration::Stone | Decoration::Color::Red, 2},
1536 {Decoration::Star | Decoration::Color::White, 4},
1537 {Decoration::Star | Decoration::Color::Black, 3},
1538 {Decoration::Star | Decoration::Color::Red, 3},
1539 {Decoration::Decoration::Eraser | Decoration::Color::Green, 1}}});
1540 },
1541 [](Generate& generator) {
1542 generator.setFlag(Generate::RegularStartEnd);
1543 generator.generate(
1544 4, 4,
1545 {{{Decoration::Poly | Decoration::Color::Yellow, 1},
1546 {Decoration::Poly | Decoration::Color::Yellow |
1547 Decoration::Can_Rotate,
1548 1},
1549 {Decoration::Triangle | Decoration::Color::Orange, 3}}});
1550 },
1551 [](Generate& generator) {
1552 generator.setFlag(Generate::RegularStartEnd);
1553 generator.generate(
1554 4, 4,
1555 {{{Decoration::Poly | Decoration::Color::Yellow, 2},
1556 {Decoration::Poly | Decoration::Color::Yellow |
1557 Decoration::Can_Rotate,
1558 1},
1559 {Decoration::Triangle | Decoration::Color::Orange, 2},
1560 {Decoration::Stone | Decoration::Color::Black, 2},
1561 {Decoration::Stone | Decoration::Color::White, 2}}});
1562 },
1563 [](Generate& generator) {
1564 generator.setSymbol(Decoration::Start, 4, 4);
1565 generator.setSymbol(Decoration::Exit, 8, 0);
1566 generator.generate(4, 4,
1567 {{{Decoration::Poly | Decoration::Color::Yellow |
1568 Decoration::Can_Rotate,
1569 3},
1570 {Decoration::Gap, 3}}});
1571 },
1572 [](Generate& generator) {
1573 generator.setSymbol(Decoration::Start, 4, 6);
1574 generator.setSymbol(Decoration::Exit, 10, 0);
1575 generator.generate(5, 5,
1576 {{{Decoration::Poly | Decoration::Color::Yellow |
1577 Decoration::Can_Rotate,
1578 3},
1579 {Decoration::Gap, 3}}});
1580 },
1581 [](Generate& generator) {
1582 generator.setFlag(Generate::DisconnectShapes);
1583 generator.setSymbol(Decoration::Start, 4, 6);
1584 generator.setSymbol(Decoration::Exit, 10, 0);
1585 generator.generate(5, 5,
1586 {{{Decoration::Poly | Decoration::Color::Yellow |
1587 Decoration::Can_Rotate,
1588 3}}});
1589 },
1590 [](Generate& generator) {
1591 generator.setSymbol(Decoration::Exit, 10, 0);
1592 generator.generate(5, 5,
1593 {{{Decoration::Dot_Intersection, 36},
1594 {Decoration::Poly | Decoration::Color::Yellow, 2},
1595 {Decoration::Poly | Decoration::Color::Yellow |
1596 Decoration::Can_Rotate,
1597 1},
1598 {Decoration::Start, 1}}});
1599 },
1600 [](Generate& generator) {
1601 generator.setFlag(Generate::BigShapes);
1602 generator.setSymbol(Decoration::Exit, 10, 0);
1603 generator.generate(5, 5,
1604 {{{Decoration::Dot_Intersection, 36},
1605 {Decoration::Poly | Decoration::Color::Yellow, 3},
1606 {Decoration::Start, 1}}});
1607 },
1608 [](Generate& generator) {
1609 generator.setFlag(Generate::DisconnectShapes);
1610 generator.setSymbol(Decoration::Exit, 10, 0);
1611 generator.generate(5, 5,
1612 {{{Decoration::Dot_Intersection, 36},
1613 {Decoration::Poly | Decoration::Color::Yellow, 3},
1614 {Decoration::Start, 1}}});
1615 },
1616 [](Generate& generator) {
1617 generator.setFlag(Generate::TreehouseLayout);
1618 generator.generate(
1619 4, 4,
1620 {{{Decoration::Triangle | Decoration::Color::Magenta, 4},
1621 {Decoration::Stone | Decoration::Color::Black, 2},
1622 {Decoration::Stone | Decoration::Color::White, 2},
1623 {Decoration::Star | Decoration::Color::Black, 1},
1624 {Decoration::Star | Decoration::Color::White, 1}}});
1625 },
1626 [](Generate& generator) {
1627 generator.setFlag(Generate::TreehouseLayout);
1628 generator.generate(
1629 4, 4,
1630 {{{Decoration::Triangle | Decoration::Color::Orange, 2},
1631 {Decoration::Triangle | Decoration::Color::Magenta, 2},
1632 {Decoration::Star | Decoration::Color::Magenta, 2},
1633 {Decoration::Star | Decoration::Color::Green, 2},
1634 {Decoration::Stone | Decoration::Color::Orange, 2},
1635 {Decoration::Stone | Decoration::Color::Green, 2}}});
1636 },
1637 [](Generate& generator) {
1638 generator.setFlag(Generate::TreehouseLayout);
1639 generator.generate(
1640 5, 4,
1641 {{{Decoration::Triangle | Decoration::Color::Green, 3},
1642 {Decoration::Triangle | Decoration::Color::Magenta, 2},
1643 {Decoration::Star | Decoration::Color::Magenta, 3},
1644 {Decoration::Star | Decoration::Color::Orange, 3},
1645 {Decoration::Stone | Decoration::Color::Orange, 2},
1646 {Decoration::Stone | Decoration::Color::Green, 2}}});
1647 },
1648 [](Generate& generator) {
1649 generator.setFlag(Generate::TreehouseLayout);
1650 generator.generate(
1651 4, 4,
1652 {{{Decoration::Star | Decoration::Color::Black, 1},
1653 {Decoration::Star | Decoration::Color::White, 2},
1654 {Decoration::Stone | Decoration::Color::Black, 2},
1655 {Decoration::Stone | Decoration::Color::White, 1},
1656 {Decoration::Poly | Decoration::Can_Rotate | Decoration::Black,
1657 1},
1658 {Decoration::Poly | Decoration::Black, 1}}});
1659 },
1660 [](Generate& generator) {
1661 generator.setFlag(Generate::TreehouseLayout);
1662 generator.generate(
1663 4, 4,
1664 {{{Decoration::Star | Decoration::Color::Black, 1},
1665 {Decoration::Star | Decoration::Color::White, 2},
1666 {Decoration::Stone | Decoration::Color::Black, 2},
1667 {Decoration::Stone | Decoration::Color::White, 1},
1668 {Decoration::Poly | Decoration::Can_Rotate | Decoration::Black,
1669 1},
1670 {Decoration::Poly | Decoration::White, 1}}});
1671 },
1672 [](Generate& generator) {
1673 generator.setFlag(Generate::TreehouseLayout);
1674 generator.generate(
1675 5, 5,
1676 {{{Decoration::Star | Decoration::Color::Green, 2},
1677 {Decoration::Star | Decoration::Color::Magenta, 4},
1678 {Decoration::Stone | Decoration::Color::Green, 2},
1679 {Decoration::Stone | Decoration::Color::Magenta, 2},
1680 {Decoration::Poly | Decoration::Can_Rotate | Decoration::Green,
1681 1},
1682 {Decoration::Poly | Decoration::Green, 1}}});
1683 },
1684 [](Generate& generator) {
1685 generator.setFlag(Generate::TreehouseLayout);
1686 generator.setFlag(Generate::BigShapes);
1687 generator.generate(
1688 5, 5,
1689 {{{Decoration::Star | Decoration::Color::Green, 3},
1690 {Decoration::Star | Decoration::Color::Magenta, 4},
1691 {Decoration::Stone | Decoration::Color::Green, 2},
1692 {Decoration::Stone | Decoration::Color::Magenta, 2},
1693 {Decoration::Poly | Decoration::Can_Rotate | Decoration::Green,
1694 1},
1695 {Decoration::Poly | Decoration::Magenta, 1}}});
1696 },
1697 [](Generate& generator) {
1698 generator.setFlag(Generate::TreehouseLayout);
1699 generator.generate(
1700 5, 5,
1701 {{{Decoration::Star | Decoration::Color::Black, 2},
1702 {Decoration::Star | Decoration::Color::White, 3},
1703 {Decoration::Stone | Decoration::Color::Black, 2},
1704 {Decoration::Stone | Decoration::Color::White, 1},
1705 {Decoration::Triangle | Decoration::Color::Black, 2},
1706 {Decoration::Triangle | Decoration::Color::White, 1},
1707 {Decoration::Poly | Decoration::Can_Rotate | Decoration::Black,
1708 1},
1709 {Decoration::Poly | Decoration::White, 1}}});
1710 },
1711 [](Generate& generator) {
1712 generator.setFlag(Generate::TreehouseLayout);
1713 generator.generate(
1714 5, 5,
1715 {{{Decoration::Star | Decoration::Color::Black, 3},
1716 {Decoration::Star | Decoration::Color::White, 3},
1717 {Decoration::Stone | Decoration::Color::Black, 1},
1718 {Decoration::Stone | Decoration::Color::White, 1},
1719 {Decoration::Poly | Decoration::Can_Rotate | Decoration::Black,
1720 1},
1721 {Decoration::Poly | Decoration::Can_Rotate | Decoration::White,
1722 1},
1723 {Decoration::Triangle | Decoration::Black, 1},
1724 {Decoration::Triangle | Decoration::White, 1}}});
1725 },
1726 [](Generate& generator) {
1727 generator.setGridSize(5, 5);
1728 generator.setSymbol(Decoration::Start, 10, 10);
1729 generator.setSymbol(Decoration::Exit, 0, 0);
1730 generator.generate(
1731 5, 5,
1732 {{{Decoration::Star | Decoration::White, 3},
1733 {Decoration::Star | Decoration::Black, 8},
1734 {Decoration::Star | Decoration::Magenta, 6},
1735 {Decoration::Eraser | Decoration::Color::White, 1}}});
1736 },
1737 [](Generate& generator) {
1738 generator.setFlag(Generate::RegularStartEnd);
1739 generator.setFlag(Generate::DisconnectShapes);
1740 generator.generate(
1741 4, 4,
1742 {{{Decoration::Poly | Decoration::Color::Yellow, 4},
1743 {Decoration::Eraser | Decoration::Color::White, 1}}});
1744 },
1745 [](Generate& generator) {
1746 generator.setFlag(Generate::RegularStartEnd);
1747 generator.generate(
1748 4, 4,
1749 {{{Decoration::Poly | Decoration::Color::Yellow, 4},
1750 {Decoration::Poly | Decoration::Negative |
1751 Decoration::Color::Blue,
1752 1},
1753 {Decoration::Eraser | Decoration::Color::White, 1}}});
1754 },
1755 [](Generate& generator) {
1756 generator.setFlag(Generate::RegularStartEnd);
1757 generator.setFlag(Generate::DisconnectShapes);
1758 generator.generate(
1759 4, 4,
1760 {{{Decoration::Poly | Decoration::Color::Yellow, 3},
1761 {Decoration::Poly | Decoration::Negative |
1762 Decoration::Color::Blue,
1763 1},
1764 {Decoration::Eraser | Decoration::Color::White, 1}}});
1765 },
1766 [](Generate& generator) {
1767 generator.setFlag(Generate::RegularStartEnd);
1768 generator.generate(4, 4,
1769 {{{Decoration::Star | Decoration::Color::Green, 7},
1770 {Decoration::Star | Decoration::Color::Orange, 5},
1771 {Decoration::Eraser | Decoration::Green, 1},
1772 {Decoration::Eraser | Decoration::Orange, 1}}});
1773 },
1774 [](Generate& generator) {
1775 generator.setFlag(Generate::RegularStartEnd);
1776 generator.generate(5, 5,
1777 {{{Decoration::Star | Decoration::Color::Magenta, 8},
1778 {Decoration::Star | Decoration::Color::Orange, 6},
1779 {Decoration::Star | Decoration::Color::Green, 4},
1780 {Decoration::Eraser | Decoration::Magenta, 1},
1781 {Decoration::Eraser | Decoration::Orange, 1}}});
1782 },
1783 [](Generate& generator) {
1784 generator.setFlag(Generate::RegularStartEnd);
1785 generator.generate(
1786 4, 4,
1787 {{{Decoration::Poly | Decoration::Color::Green, 4},
1788 {Decoration::Eraser | Decoration::Color::White, 2}}});
1789 },
1790 [](Generate& generator) {
1791 generator.setFlag(Generate::RegularStartEnd);
1792 generator.setFlag(Generate::DisconnectShapes);
1793 generator.generate(
1794 4, 4,
1795 {{{Decoration::Poly | Decoration::Color::Green, 4},
1796 {Decoration::Eraser | Decoration::Color::White, 2}}});
1797 },
1798 [](Generate& generator) {
1799 generator.setFlag(Generate::RegularStartEnd);
1800 generator.generate(
1801 4, 4,
1802 {{{Decoration::Poly | Decoration::Color::Green, 2},
1803 {Decoration::Poly | Decoration::Color::Magenta, 1},
1804 {Decoration::Star | Decoration::Color::Green, 2},
1805 {Decoration::Star | Decoration::Color::Magenta, 2},
1806 {Decoration::Eraser | Decoration::Color::White, 2}}});
1807 },
1808 [](Generate& generator) {
1809 generator.setFlag(Generate::RegularStartEnd);
1810 generator.generate(6, 3,
1811 {{{Decoration::Star | Decoration::Color::Orange, 4},
1812 {Decoration::Poly | Decoration::Color::Orange, 2},
1813 {Decoration::Poly | Decoration::Negative |
1814 Decoration::Color::Magenta,
1815 2},
1816 {Decoration::Eraser | Decoration::White, 2}}});
1817 },
1818 [](Generate& generator) {
1819 generator.setFlag(Generate::RegularStartEnd);
1820 generator.generate(6, 3,
1821 {{{Decoration::Star | Decoration::Color::Magenta, 2},
1822 {Decoration::Star | Decoration::Color::Orange, 3},
1823 {Decoration::Poly | Decoration::Color::Orange, 2},
1824 {Decoration::Poly | Decoration::Negative |
1825 Decoration::Color::Magenta,
1826 2},
1827 {Decoration::Eraser | Decoration::White, 2}}});
1828 },
1829 [](Generate& generator) {
1830 generator.setFlag(Generate::FalseParity);
1831 generator.setSymbol(Decoration::Exit, 0, 0);
1832 generator.setSymbol(Decoration::Exit, 16, 0);
1833 generator.setSymbol(Decoration::Exit, 0, 16);
1834 generator.setSymbol(Decoration::Exit, 16, 16);
1835 generator.generate(
1836 8, 8,
1837 {{{Decoration::Stone | Decoration::Color::White, 10},
1838 {Decoration::Stone | Decoration::Color::Black, 10},
1839 {Decoration::Dot_Intersection, 81},
1840 {Decoration::Start, 7},
1841 {Decoration::Eraser | Decoration::Color::Purple, 1}}});
1842 },
1843 [](Generate& generator) {
1844 generator.setFlag(Generate::TreehouseLayout);
1845 generator.generate(
1846 4, 5,
1847 {{{Decoration::Poly | Decoration::Color::Yellow, 3},
1848 {Decoration::Triangle | Decoration::Color::Orange, 5},
1849 {Decoration::Eraser | Decoration::Color::White, 1}}});
1850 },
1851 [](Generate& generator) {
1852 generator.setFlag(Generate::RegularStartEnd);
1853 generator.generate(
1854 5, 5,
1855 {{{Decoration::Poly | Decoration::Color::Yellow, 7},
1856 {Decoration::Stone | Decoration::Color::White, 3},
1857 {Decoration::Stone | Decoration::Color::Black, 3},
1858 {Decoration::Triangle | Decoration::Color::Orange, 6}}});
1859 },
1860 [](Generate& generator) {
1861 generator.setSymbol(Decoration::Exit, 10, 0);
1862 generator.generate(
1863 5, 5,
1864 {{{Decoration::Dot_Intersection, 36},
1865 {Decoration::Triangle1 | Decoration::Color::Orange, 4},
1866 {Decoration::Start, 1}}});
1867 },
1868 [](Generate& generator) {
1869 generator.setSymbol(Decoration::Exit, 10, 0);
1870 generator.generate(
1871 5, 5,
1872 {{{Decoration::Dot_Intersection, 36},
1873 {Decoration::Triangle3 | Decoration::Color::Orange, 6},
1874 {Decoration::Start, 1}}});
1875 },
1876 [](Generate& generator) {
1877 generator.setSymbol(Decoration::Exit, 10, 0);
1878 generator.generate(
1879 5, 5,
1880 {{{Decoration::Dot_Intersection, 36},
1881 {Decoration::Triangle2 | Decoration::Color::Orange, 10},
1882 {Decoration::Start, 1}}});
1883 },
1884 [](Generate& generator) {
1885 generator.setSymbol(Decoration::Exit, 10, 0);
1886 generator.generate(
1887 5, 5,
1888 {{{Decoration::Dot_Intersection, 36},
1889 {Decoration::Triangle | Decoration::Color::Orange, 8},
1890 {Decoration::Start, 1}}});
1891 },
1892 [](Generate& generator) {
1893 generator.setFlag(Generate::RegularStartEnd);
1894 generator.setFlag(Generate::FalseParity);
1895 generator.generate(
1896 5, 5,
1897 {{{Decoration::Dot_Intersection, 36},
1898 {Decoration::Triangle | Decoration::Color::Orange, 7},
1899 {Decoration::Eraser | Decoration::Color::White, 1}}});
1900 },
1901 [](Generate& generator) {
1902 generator.setFlag(Generate::RegularStartEnd);
1903 generator.setFlag(Generate::SmallShapes);
1904 generator.generate(
1905 5, 5,
1906 {{{Decoration::Poly | Decoration::Can_Rotate |
1907 Decoration::Color::Orange,
1908 3},
1909 {Decoration::Poly | Decoration::Can_Rotate |
1910 Decoration::Color::Magenta,
1911 2},
1912 {Decoration::Star | Decoration::Color::Orange, 4},
1913 {Decoration::Star | Decoration::Color::Magenta, 5}}});
1914 },
1915 };
1916 45
1917 Generate generator; 46 Generate generator;
1918 47