Generated on Tue Feb 11 2025 17:33:26 for Gecode by doxygen 1.12.0
crossword.cpp
Go to the documentation of this file.
1/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2/*
3 * Main authors:
4 * Christian Schulte <schulte@gecode.org>
5 *
6 * Copyright:
7 * Christian Schulte, 2009
8 *
9 * This file is part of Gecode, the generic constraint
10 * development environment:
11 * http://www.gecode.org
12 *
13 * Permission is hereby granted, free of charge, to any person obtaining
14 * a copy of this software and associated documentation files (the
15 * "Software"), to deal in the Software without restriction, including
16 * without limitation the rights to use, copy, modify, merge, publish,
17 * distribute, sublicense, and/or sell copies of the Software, and to
18 * permit persons to whom the Software is furnished to do so, subject to
19 * the following conditions:
20 *
21 * The above copyright notice and this permission notice shall be
22 * included in all copies or substantial portions of the Software.
23 *
24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
28 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
29 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
30 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 *
32 */
33
34#include <gecode/driver.hh>
35
36#include <gecode/int.hh>
37#include <gecode/minimodel.hh>
38
39#include "examples/scowl.hpp"
40
41using namespace Gecode;
42
43
44// Grid data
45namespace {
46 // Grid data
47 extern const int* grids[];
48 // Number of grids
49 extern const unsigned int n_grids;
50}
51
52
66class Crossword : public Script {
67protected:
69 const int w;
71 const int h;
74public:
76 enum {
79 };
81 enum {
91 };
94 : Script(opt),
95 w(grids[opt.size()][0]), h(grids[opt.size()][1]),
96 letters(*this,w*h,'a','z') {
97 // Pointer into the grid specification (width and height already skipped)
98 const int* g = &grids[opt.size()][2];
99
100 // Matrix for letters
102
103 // Set black fields to 0
104 {
105 IntVar z(*this,0,0);
106 for (int n = *g++; n--; ) {
107 int x=*g++, y=*g++;
108 ml(x,y)=z;
109 }
110 }
111
112 // Array of all words
113 IntVarArgs allwords;
114
115 switch (opt.model()) {
116 case MODEL_ELEMENT:
117 // While words of length w_l to process
118 while (int w_l=*g++) {
119 // Number of words of that length in the dictionary
120 int n_w = dict.words(w_l);
121 // Number of words of that length in the puzzle
122 int n=*g++;
123
124 if (n > n_w) {
125 fail();
126 } else {
127 // Array of all words of length w_l
128 IntVarArgs words(*this,n,0,n_w-1);
129 allwords << words;
130
131 // All words of same length must be different
132 distinct(*this, words, opt.ipl());
133
134 for (int d=0; d<w_l; d++) {
135 // Array that maps words to a letter at a certain position (shared among all element constraints)
136 IntSharedArray w2l(n_w);
137 // Initialize word to letter map
138 for (int i=n_w; i--; )
139 w2l[i] = dict.word(w_l,i)[d];
140 // Link word to letter variable
141 for (int i=0; i<n; i++) {
142 // Get (x,y) coordinate where word begins
143 int x=g[3*i+0], y=g[3*i+1];
144 // Whether word is horizontal
145 bool h=(g[3*i+2] == 0);
146 // Constrain the letters to the words' letters
147 element(*this, w2l, words[i], h ? ml(x+d,y) : ml(x,y+d));
148 }
149 }
150 // Skip word coordinates
151 g += 3*n;
152 }
153 }
154 break;
155 case MODEL_TUPLESET:
156 // While words of length w_l to process
157 while (int w_l=*g++) {
158 // Number of words of that length in the dictionary
159 int n_w = dict.words(w_l);
160 // Number of words of that length in the puzzle
161 int n=*g++;
162
163 if (n > n_w) {
164 fail();
165 } else {
166 // Setup tuple-set
167 TupleSet ts(w_l+1);
168 {
169 IntArgs w(w_l+1);
170 for (int i=0; i<n_w; i++) {
171 for (int d=0; d<w_l; d++)
172 w[d] = dict.word(w_l,i)[d];
173 w[w_l]=i;
174 ts.add(w);
175 }
176 }
177 ts.finalize();
178
179 // Array of all words of length w_l
180 IntVarArgs words(*this,n,0,n_w-1);
181 allwords << words;
182
183 // All words of same length must be different
184 distinct(*this, words, opt.ipl());
185
186 // Constraint all words in puzzle
187 for (int i=0; i<n; i++) {
188 // Get (x,y) coordinate where word begins
189 int x=*g++, y=*g++;
190 // Whether word is horizontal
191 bool h=(*g++ == 0);
192 // Letters in word plus word number
193 IntVarArgs w(w_l+1); w[w_l]=words[i];
194 if (h)
195 for (int d=0; d<w_l; d++)
196 w[d] = ml(x+d,y);
197 else
198 for (int d=0; d<w_l; d++)
199 w[d] = ml(x,y+d);
200 // Constrain word
201 extensional(*this, w, ts);
202 }
203 }
204 }
205 break;
206 }
207 switch (opt.branching()) {
208 case BRANCH_WORDS_AFC:
209 // Branch by assigning words
210 branch(*this, allwords,
212 nullptr, &printwords);
213 break;
215 // Branch by assigning letters
216 branch(*this, letters,
217 INT_VAR_AFC_SIZE_MAX(opt.decay()), INT_VAL_MIN(),
218 nullptr, &printletters);
219 break;
221 // Branch by assigning letters (try all letters)
222 branch(*this, letters,
223 INT_VAR_AFC_SIZE_MAX(opt.decay()), INT_VALUES_MIN(),
224 nullptr, &printletters);
225 break;
227 // Branch by assigning words
228 branch(*this, allwords,
230 nullptr, &printwords);
231 break;
233 // Branch by assigning letters
234 branch(*this, letters,
235 INT_VAR_ACTION_SIZE_MAX(opt.decay()), INT_VAL_MIN(),
236 nullptr, &printletters);
237 break;
239 // Branch by assigning letters (try all letters)
240 branch(*this, letters,
242 nullptr, &printletters);
243 break;
244 case BRANCH_WORDS_CHB:
245 // Branch by assigning words
246 branch(*this, allwords,
248 nullptr, &printwords);
249 break;
251 // Branch by assigning letters
252 branch(*this, letters,
254 nullptr, &printletters);
255 break;
257 // Branch by assigning letters (try all letters)
258 branch(*this, letters,
260 nullptr, &printletters);
261 break;
262 }
263 }
265 static void printletters(const Space& home, const Brancher&,
266 unsigned int a,
267 IntVar, int i, const int& n,
268 std::ostream& os) {
269 const Crossword& c = static_cast<const Crossword&>(home);
270 int x = i % c.w, y = i / c.w;
271 os << "letters[" << x << "," << y << "] "
272 << ((a == 0) ? "=" : "!=") << " "
273 << static_cast<char>(n);
274 }
276 static void printwords(const Space&, const Brancher&,
277 unsigned int a,
278 IntVar, int i, const int& n,
279 std::ostream& os) {
280 os << "allwords[" << i << "] "
281 << ((a == 0) ? "<=" : ">") << " "
282 << n;
283 }
285 bool master(const MetaInfo& mi) {
286 if (mi.type() == MetaInfo::RESTART)
287 // Post no-goods
288 mi.nogoods().post(*this);
289 // Do not perform a restart if a solution has been found
290 return false;
291 }
292
295 : Script(s), w(s.w), h(s.h) {
296 letters.update(*this, s.letters);
297 }
299 virtual Space*
300 copy(void) {
301 return new Crossword(*this);
302 }
304 virtual void
305 print(std::ostream& os) const {
306 // Matrix for letters
308 for (int i=0; i<h; i++) {
309 os << '\t';
310 for (int j=0; j<w; j++)
311 if (ml(j,i).assigned())
312 if (ml(j,i).val() == 0)
313 os << '*';
314 else
315 os << static_cast<char>(ml(j,i).val());
316 else
317 os << '?';
318 os << std::endl;
319 }
320 os << std::endl << std::endl;
321 }
322};
323
324
328int
329main(int argc, char* argv[]) {
330 FileSizeOptions opt("Crossword");
331 opt.size(10);
332 opt.ipl(IPL_VAL);
333 opt.model(Crossword::MODEL_ELEMENT);
334 opt.model(Crossword::MODEL_ELEMENT,"element");
335 opt.model(Crossword::MODEL_TUPLESET,"tuple-set");
336 opt.branching(Crossword::BRANCH_LETTERS_AFC);
337 opt.branching(Crossword::BRANCH_WORDS_AFC,
338 "words-afc");
339 opt.branching(Crossword::BRANCH_LETTERS_AFC,
340 "letters-afc");
342 "letters-afc-all");
343 opt.branching(Crossword::BRANCH_WORDS_ACTION,
344 "words-action");
346 "letters-action");
348 "letters-action-all");
349 opt.branching(Crossword::BRANCH_WORDS_CHB,
350 "words-chb");
351 opt.branching(Crossword::BRANCH_LETTERS_CHB,
352 "letters-chb");
354 "letters-chb-all");
355 opt.parse(argc,argv);
356 dict.init(opt.file());
357 if (opt.size() >= n_grids) {
358 std::cerr << "Error: size must be between 0 and "
359 << n_grids-1 << std::endl;
360 return 1;
361 }
363 return 0;
364}
365
366namespace {
367
368 /*
369 * The Grid data has been provided by Peter Van Beek, to
370 * quote the original README.txt:
371 *
372 * The files in this directory contain templates for crossword
373 * puzzles. Each is a two-dimensional array. A _ indicates
374 * that the associated square in the crossword template is
375 * blank, and a * indicates that it is a black square that
376 * does not need to have a letter inserted.
377 *
378 * The crossword puzzles templates came from the following
379 * sources:
380 *
381 * 15.01, ..., 15.10
382 * 19.01, ..., 19.10
383 * 21.01, ..., 21.10
384 * 23.01, ..., 23.10
385 *
386 * Herald Tribune Crosswords, Spring, 1999
387 *
388 * 05.01, ..., 05.10
389 *
390 * All legal 5 x 5 puzzles.
391 *
392 * puzzle01, ..., puzzle19
393 *
394 * Ginsberg, M.L., "Dynamic Backtracking,"
395 * Journal of Artificial Intelligence Researc (JAIR)
396 * Volume 1, pages 25-46, 1993.
397 *
398 * puzzle20, ..., puzzle22
399 *
400 * Ginsberg, M.L. et al., "Search Lessons Learned
401 * from Crossword Puzzles," AAAI-90, pages 210-215.
402 *
403 */
404
405 /*
406 * Name: 05.01, 5 x 5
407 * (_ _ _ _ _)
408 * (_ _ _ _ _)
409 * (_ _ _ _ _)
410 * (_ _ _ _ _)
411 * (_ _ _ _ _)
412 */
413 const int g0[] = {
414 // Width and height of crossword grid
415 5, 5,
416 // Number of black fields
417 0,
418 // Black field coordinates
419
420 // Length and number of words of that length
421 5, 10,
422 // Coordinates where words start and direction (0 = horizontal)
423 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,3,0, 0,4,0, 1,0,1, 2,0,1, 3,0,1, 4,0,1,
424 // End marker
425 0
426 };
427
428
429 /*
430 * Name: 05.02, 5 x 5
431 * (_ _ _ _ *)
432 * (_ _ _ _ _)
433 * (_ _ _ _ _)
434 * (_ _ _ _ _)
435 * (* _ _ _ _)
436 */
437 const int g1[] = {
438 // Width and height of crossword grid
439 5, 5,
440 // Number of black fields
441 2,
442 // Black field coordinates
443 0,4, 4,0,
444 // Length and number of words of that length
445 5, 6,
446 // Coordinates where words start and direction (0 = horizontal)
447 0,1,0, 0,2,0, 0,3,0, 1,0,1, 2,0,1, 3,0,1,
448 // Length and number of words of that length
449 4, 4,
450 // Coordinates where words start and direction (0 = horizontal)
451 0,0,0, 0,0,1, 1,4,0, 4,1,1,
452 // End marker
453 0
454 };
455
456
457 /*
458 * Name: 05.03, 5 x 5
459 * (_ _ _ _ *)
460 * (_ _ _ _ *)
461 * (_ _ _ _ _)
462 * (* _ _ _ _)
463 * (* _ _ _ _)
464 */
465 const int g2[] = {
466 // Width and height of crossword grid
467 5, 5,
468 // Number of black fields
469 4,
470 // Black field coordinates
471 0,3, 0,4, 4,0, 4,1,
472 // Length and number of words of that length
473 5, 4,
474 // Coordinates where words start and direction (0 = horizontal)
475 0,2,0, 1,0,1, 2,0,1, 3,0,1,
476 // Length and number of words of that length
477 4, 4,
478 // Coordinates where words start and direction (0 = horizontal)
479 0,0,0, 0,1,0, 1,3,0, 1,4,0,
480 // Length and number of words of that length
481 3, 2,
482 // Coordinates where words start and direction (0 = horizontal)
483 0,0,1, 4,2,1,
484 // End marker
485 0
486 };
487
488
489 /*
490 * Name: 05.04, 5 x 5
491 * (_ _ _ * *)
492 * (_ _ _ _ *)
493 * (_ _ _ _ _)
494 * (* _ _ _ _)
495 * (* * _ _ _)
496 */
497 const int g3[] = {
498 // Width and height of crossword grid
499 5, 5,
500 // Number of black fields
501 6,
502 // Black field coordinates
503 0,3, 0,4, 1,4, 3,0, 4,0, 4,1,
504 // Length and number of words of that length
505 5, 2,
506 // Coordinates where words start and direction (0 = horizontal)
507 0,2,0, 2,0,1,
508 // Length and number of words of that length
509 4, 4,
510 // Coordinates where words start and direction (0 = horizontal)
511 0,1,0, 1,0,1, 1,3,0, 3,1,1,
512 // Length and number of words of that length
513 3, 4,
514 // Coordinates where words start and direction (0 = horizontal)
515 0,0,0, 0,0,1, 2,4,0, 4,2,1,
516 // End marker
517 0
518 };
519
520
521 /*
522 * Name: 05.05, 5 x 5
523 * (_ _ _ * *)
524 * (_ _ _ * *)
525 * (_ _ _ _ _)
526 * (* * _ _ _)
527 * (* * _ _ _)
528 */
529 const int g4[] = {
530 // Width and height of crossword grid
531 5, 5,
532 // Number of black fields
533 8,
534 // Black field coordinates
535 0,3, 0,4, 1,3, 1,4, 3,0, 3,1, 4,0, 4,1,
536 // Length and number of words of that length
537 5, 2,
538 // Coordinates where words start and direction (0 = horizontal)
539 0,2,0, 2,0,1,
540 // Length and number of words of that length
541 3, 8,
542 // Coordinates where words start and direction (0 = horizontal)
543 0,0,0, 0,0,1, 0,1,0, 1,0,1, 2,3,0, 2,4,0, 3,2,1, 4,2,1,
544 // End marker
545 0
546 };
547
548
549 /*
550 * Name: 05.06, 5 x 5
551 * (* _ _ _ _)
552 * (_ _ _ _ _)
553 * (_ _ _ _ _)
554 * (_ _ _ _ _)
555 * (_ _ _ _ *)
556 */
557 const int g5[] = {
558 // Width and height of crossword grid
559 5, 5,
560 // Number of black fields
561 2,
562 // Black field coordinates
563 0,0, 4,4,
564 // Length and number of words of that length
565 5, 6,
566 // Coordinates where words start and direction (0 = horizontal)
567 0,1,0, 0,2,0, 0,3,0, 1,0,1, 2,0,1, 3,0,1,
568 // Length and number of words of that length
569 4, 4,
570 // Coordinates where words start and direction (0 = horizontal)
571 0,1,1, 0,4,0, 1,0,0, 4,0,1,
572 // End marker
573 0
574 };
575
576
577 /*
578 * Name: 05.07, 5 x 5
579 * (* _ _ _ _)
580 * (* _ _ _ _)
581 * (_ _ _ _ _)
582 * (_ _ _ _ *)
583 * (_ _ _ _ *)
584 */
585 const int g6[] = {
586 // Width and height of crossword grid
587 5, 5,
588 // Number of black fields
589 4,
590 // Black field coordinates
591 0,0, 0,1, 4,3, 4,4,
592 // Length and number of words of that length
593 5, 4,
594 // Coordinates where words start and direction (0 = horizontal)
595 0,2,0, 1,0,1, 2,0,1, 3,0,1,
596 // Length and number of words of that length
597 4, 4,
598 // Coordinates where words start and direction (0 = horizontal)
599 0,3,0, 0,4,0, 1,0,0, 1,1,0,
600 // Length and number of words of that length
601 3, 2,
602 // Coordinates where words start and direction (0 = horizontal)
603 0,2,1, 4,0,1,
604 // End marker
605 0
606 };
607
608
609 /*
610 * Name: 05.08, 5 x 5
611 * (* _ _ _ *)
612 * (_ _ _ _ _)
613 * (_ _ _ _ _)
614 * (_ _ _ _ _)
615 * (* _ _ _ *)
616 */
617 const int g7[] = {
618 // Width and height of crossword grid
619 5, 5,
620 // Number of black fields
621 4,
622 // Black field coordinates
623 0,0, 0,4, 4,0, 4,4,
624 // Length and number of words of that length
625 5, 6,
626 // Coordinates where words start and direction (0 = horizontal)
627 0,1,0, 0,2,0, 0,3,0, 1,0,1, 2,0,1, 3,0,1,
628 // Length and number of words of that length
629 3, 4,
630 // Coordinates where words start and direction (0 = horizontal)
631 0,1,1, 1,0,0, 1,4,0, 4,1,1,
632 // End marker
633 0
634 };
635
636
637 /*
638 * Name: 05.09, 5 x 5
639 * (* * _ _ _)
640 * (* _ _ _ _)
641 * (_ _ _ _ _)
642 * (_ _ _ _ *)
643 * (_ _ _ * *)
644 */
645 const int g8[] = {
646 // Width and height of crossword grid
647 5, 5,
648 // Number of black fields
649 6,
650 // Black field coordinates
651 0,0, 0,1, 1,0, 3,4, 4,3, 4,4,
652 // Length and number of words of that length
653 5, 2,
654 // Coordinates where words start and direction (0 = horizontal)
655 0,2,0, 2,0,1,
656 // Length and number of words of that length
657 4, 4,
658 // Coordinates where words start and direction (0 = horizontal)
659 0,3,0, 1,1,0, 1,1,1, 3,0,1,
660 // Length and number of words of that length
661 3, 4,
662 // Coordinates where words start and direction (0 = horizontal)
663 0,2,1, 0,4,0, 2,0,0, 4,0,1,
664 // End marker
665 0
666 };
667
668
669 /*
670 * Name: 05.10, 5 x 5
671 * (* * _ _ _)
672 * (* * _ _ _)
673 * (_ _ _ _ _)
674 * (_ _ _ * *)
675 * (_ _ _ * *)
676 */
677 const int g9[] = {
678 // Width and height of crossword grid
679 5, 5,
680 // Number of black fields
681 8,
682 // Black field coordinates
683 0,0, 0,1, 1,0, 1,1, 3,3, 3,4, 4,3, 4,4,
684 // Length and number of words of that length
685 5, 2,
686 // Coordinates where words start and direction (0 = horizontal)
687 0,2,0, 2,0,1,
688 // Length and number of words of that length
689 3, 8,
690 // Coordinates where words start and direction (0 = horizontal)
691 0,2,1, 0,3,0, 0,4,0, 1,2,1, 2,0,0, 2,1,0, 3,0,1, 4,0,1,
692 // End marker
693 0
694 };
695
696
697 /*
698 * Name: 15.01, 15 x 15
699 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
700 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
701 * (_ _ _ _ _ _ _ _ _ _ * _ _ _ _)
702 * (_ _ _ _ _ _ _ * * _ _ _ _ _ _)
703 * (* * * _ _ _ * _ _ _ _ _ _ * *)
704 * (_ _ _ _ _ * _ _ _ * _ _ _ _ _)
705 * (_ _ _ * _ _ _ _ _ _ * _ _ _ _)
706 * (_ _ _ * _ _ _ _ _ _ _ * _ _ _)
707 * (_ _ _ _ * _ _ _ _ _ _ * _ _ _)
708 * (_ _ _ _ _ * _ _ _ * _ _ _ _ _)
709 * (* * _ _ _ _ _ _ * _ _ _ * * *)
710 * (_ _ _ _ _ _ * * _ _ _ _ _ _ _)
711 * (_ _ _ _ * _ _ _ _ _ _ _ _ _ _)
712 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
713 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
714 */
715 const int g10[] = {
716 // Width and height of crossword grid
717 15, 15,
718 // Number of black fields
719 36,
720 // Black field coordinates
721 0,4, 0,10, 1,4, 1,10, 2,4, 3,6, 3,7, 4,0, 4,1, 4,8, 4,12, 4,13, 4,14, 5,5, 5,9, 6,4, 6,11, 7,3, 7,11, 8,3, 8,10, 9,5, 9,9, 10,0, 10,1, 10,2, 10,6, 10,13, 10,14, 11,7, 11,8, 12,10, 13,4, 13,10, 14,4, 14,10,
722 // Length and number of words of that length
723 10, 4,
724 // Coordinates where words start and direction (0 = horizontal)
725 0,2,0, 2,5,1, 5,12,0, 12,0,1,
726 // Length and number of words of that length
727 7, 6,
728 // Coordinates where words start and direction (0 = horizontal)
729 0,3,0, 3,8,1, 4,7,0, 7,4,1, 8,11,0, 11,0,1,
730 // Length and number of words of that length
731 6, 12,
732 // Coordinates where words start and direction (0 = horizontal)
733 0,11,0, 2,10,0, 3,0,1, 4,2,1, 4,6,0, 5,8,0, 6,5,1, 7,4,0, 8,4,1, 9,3,0, 10,7,1, 11,9,1,
734 // Length and number of words of that length
735 5, 16,
736 // Coordinates where words start and direction (0 = horizontal)
737 0,5,0, 0,5,1, 0,9,0, 1,5,1, 5,0,0, 5,0,1, 5,1,0, 5,10,1, 5,13,0, 5,14,0, 9,0,1, 9,10,1, 10,5,0, 10,9,0, 13,5,1, 14,5,1,
738 // Length and number of words of that length
739 4, 24,
740 // Coordinates where words start and direction (0 = horizontal)
741 0,0,0, 0,0,1, 0,1,0, 0,8,0, 0,11,1, 0,12,0, 0,13,0, 0,14,0, 1,0,1, 1,11,1, 2,0,1, 6,0,1, 8,11,1, 11,0,0, 11,1,0, 11,2,0, 11,6,0, 11,13,0, 11,14,0, 12,11,1, 13,0,1, 13,11,1, 14,0,1, 14,11,1,
742 // Length and number of words of that length
743 3, 16,
744 // Coordinates where words start and direction (0 = horizontal)
745 0,6,0, 0,7,0, 3,4,0, 4,9,1, 5,6,1, 6,5,0, 6,9,0, 6,12,1, 7,0,1, 7,12,1, 8,0,1, 9,6,1, 9,10,0, 10,3,1, 12,7,0, 12,8,0,
746 // End marker
747 0
748 };
749
750
751 /*
752 * Name: 15.02, 15 x 15
753 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _)
754 * (_ _ _ _ _ _ _ _ _ _ * _ _ _ _)
755 * (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _)
756 * (_ _ _ _ * _ _ _ _ _ _ _ _ _ _)
757 * (_ _ _ * _ _ _ _ * _ _ _ * * *)
758 * (* * * _ _ _ _ * _ _ _ * _ _ _)
759 * (_ _ _ _ _ _ * _ _ _ * _ _ _ _)
760 * (_ _ _ _ _ * _ _ _ * _ _ _ _ _)
761 * (_ _ _ _ * _ _ _ * _ _ _ _ _ _)
762 * (_ _ _ * _ _ _ * _ _ _ _ * * *)
763 * (* * * _ _ _ * _ _ _ _ * _ _ _)
764 * (_ _ _ _ _ _ _ _ _ _ * _ _ _ _)
765 * (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _)
766 * (_ _ _ _ * _ _ _ _ _ _ _ _ _ _)
767 * (_ _ _ _ * _ _ _ _ * _ _ _ _ _)
768 */
769 const int g11[] = {
770 // Width and height of crossword grid
771 15, 15,
772 // Number of black fields
773 34,
774 // Black field coordinates
775 0,5, 0,10, 1,5, 1,10, 2,5, 2,10, 3,4, 3,9, 4,3, 4,8, 4,13, 4,14, 5,0, 5,7, 6,6, 6,10, 7,5, 7,9, 8,4, 8,8, 9,7, 9,14, 10,0, 10,1, 10,6, 10,11, 11,5, 11,10, 12,4, 12,9, 13,4, 13,9, 14,4, 14,9,
776 // Length and number of words of that length
777 15, 2,
778 // Coordinates where words start and direction (0 = horizontal)
779 0,2,0, 0,12,0,
780 // Length and number of words of that length
781 10, 4,
782 // Coordinates where words start and direction (0 = horizontal)
783 0,1,0, 0,11,0, 5,3,0, 5,13,0,
784 // Length and number of words of that length
785 7, 2,
786 // Coordinates where words start and direction (0 = horizontal)
787 5,8,1, 9,0,1,
788 // Length and number of words of that length
789 6, 6,
790 // Coordinates where words start and direction (0 = horizontal)
791 0,6,0, 5,1,1, 6,0,1, 8,9,1, 9,8,0, 9,8,1,
792 // Length and number of words of that length
793 5, 14,
794 // Coordinates where words start and direction (0 = horizontal)
795 0,0,0, 0,0,1, 0,7,0, 1,0,1, 2,0,1, 3,10,1, 7,0,1, 7,10,1, 10,7,0, 10,14,0, 11,0,1, 12,10,1, 13,10,1, 14,10,1,
796 // Length and number of words of that length
797 4, 36,
798 // Coordinates where words start and direction (0 = horizontal)
799 0,3,0, 0,6,1, 0,8,0, 0,11,1, 0,13,0, 0,14,0, 1,6,1, 1,11,1, 2,6,1, 2,11,1, 3,0,1, 3,5,0, 3,5,1, 4,4,0, 4,4,1, 4,9,1, 5,14,0, 6,0,0, 6,11,1, 7,10,0, 8,0,1, 8,9,0, 10,2,1, 10,7,1, 11,0,0, 11,1,0, 11,6,0, 11,6,1, 11,11,0, 11,11,1, 12,0,1, 12,5,1, 13,0,1, 13,5,1, 14,0,1, 14,5,1,
800 // Length and number of words of that length
801 3, 16,
802 // Coordinates where words start and direction (0 = horizontal)
803 0,4,0, 0,9,0, 3,10,0, 4,0,1, 4,9,0, 5,8,0, 6,7,0, 6,7,1, 7,6,0, 7,6,1, 8,5,0, 8,5,1, 9,4,0, 10,12,1, 12,5,0, 12,10,0,
804 // End marker
805 0
806 };
807
808
809 /*
810 * Name: 15.03, 15 x 15
811 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
812 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
813 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
814 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ _)
815 * (* * * _ _ _ _ * _ _ _ _ * * *)
816 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ _)
817 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _)
818 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
819 * (_ _ _ * _ _ _ _ _ * _ _ _ _ _)
820 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ _)
821 * (* * * _ _ _ _ * _ _ _ _ * * *)
822 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ _)
823 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
824 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
825 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
826 */
827 const int g12[] = {
828 // Width and height of crossword grid
829 15, 15,
830 // Number of black fields
831 36,
832 // Black field coordinates
833 0,4, 0,10, 1,4, 1,10, 2,4, 2,10, 3,8, 4,0, 4,1, 4,2, 4,7, 4,12, 4,13, 4,14, 5,6, 6,5, 6,11, 7,4, 7,10, 8,3, 8,9, 9,8, 10,0, 10,1, 10,2, 10,7, 10,12, 10,13, 10,14, 11,6, 12,4, 12,10, 13,4, 13,10, 14,4, 14,10,
834 // Length and number of words of that length
835 8, 8,
836 // Coordinates where words start and direction (0 = horizontal)
837 0,3,0, 0,9,0, 3,0,1, 5,7,1, 7,5,0, 7,11,0, 9,0,1, 11,7,1,
838 // Length and number of words of that length
839 6, 8,
840 // Coordinates where words start and direction (0 = horizontal)
841 0,5,0, 0,11,0, 3,9,1, 5,0,1, 9,3,0, 9,9,0, 9,9,1, 11,0,1,
842 // Length and number of words of that length
843 5, 22,
844 // Coordinates where words start and direction (0 = horizontal)
845 0,5,1, 0,6,0, 1,5,1, 2,5,1, 4,8,0, 5,0,0, 5,1,0, 5,2,0, 5,7,0, 5,12,0, 5,13,0, 5,14,0, 6,0,1, 6,6,0, 6,6,1, 7,5,1, 8,4,1, 8,10,1, 10,8,0, 12,5,1, 13,5,1, 14,5,1,
846 // Length and number of words of that length
847 4, 36,
848 // Coordinates where words start and direction (0 = horizontal)
849 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,7,0, 0,11,1, 0,12,0, 0,13,0, 0,14,0, 1,0,1, 1,11,1, 2,0,1, 2,11,1, 3,4,0, 3,10,0, 4,3,1, 4,8,1, 7,0,1, 7,11,1, 8,4,0, 8,10,0, 10,3,1, 10,8,1, 11,0,0, 11,1,0, 11,2,0, 11,7,0, 11,12,0, 11,13,0, 11,14,0, 12,0,1, 12,11,1, 13,0,1, 13,11,1, 14,0,1, 14,11,1,
850 // Length and number of words of that length
851 3, 4,
852 // Coordinates where words start and direction (0 = horizontal)
853 0,8,0, 6,12,1, 8,0,1, 12,6,0,
854 // End marker
855 0
856 };
857
858
859 /*
860 * Name: 15.04, 15 x 15
861 * (_ _ _ * _ _ _ _ * _ _ _ _ _ _)
862 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ _)
863 * (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _)
864 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _)
865 * (* * * _ _ _ * _ _ _ _ _ * * *)
866 * (_ _ _ * _ _ _ _ _ * _ _ _ _ _)
867 * (_ _ _ _ * _ _ _ * _ _ _ _ _ _)
868 * (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _)
869 * (_ _ _ _ _ _ * _ _ _ * _ _ _ _)
870 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _)
871 * (* * * _ _ _ _ _ * _ _ _ * * *)
872 * (_ _ _ * _ _ _ _ _ * _ _ _ _ _)
873 * (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _)
874 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ _)
875 * (_ _ _ _ _ _ * _ _ _ _ * _ _ _)
876 */
877 const int g13[] = {
878 // Width and height of crossword grid
879 15, 15,
880 // Number of black fields
881 32,
882 // Black field coordinates
883 0,4, 0,10, 1,4, 1,10, 2,4, 2,10, 3,0, 3,5, 3,11, 4,6, 5,3, 5,9, 6,4, 6,8, 6,13, 6,14, 8,0, 8,1, 8,6, 8,10, 9,5, 9,11, 10,8, 11,3, 11,9, 11,14, 12,4, 12,10, 13,4, 13,10, 14,4, 14,10,
884 // Length and number of words of that length
885 15, 4,
886 // Coordinates where words start and direction (0 = horizontal)
887 0,2,0, 0,7,0, 0,12,0, 7,0,1,
888 // Length and number of words of that length
889 8, 4,
890 // Coordinates where words start and direction (0 = horizontal)
891 0,1,0, 4,7,1, 7,13,0, 10,0,1,
892 // Length and number of words of that length
893 6, 8,
894 // Coordinates where words start and direction (0 = horizontal)
895 0,8,0, 0,13,0, 0,14,0, 4,0,1, 9,0,0, 9,1,0, 9,6,0, 10,9,1,
896 // Length and number of words of that length
897 5, 22,
898 // Coordinates where words start and direction (0 = horizontal)
899 0,3,0, 0,5,1, 0,9,0, 1,5,1, 2,5,1, 3,6,1, 3,10,0, 4,5,0, 4,11,0, 5,4,1, 5,10,1, 6,3,0, 6,9,0, 7,4,0, 9,0,1, 9,6,1, 10,5,0, 10,11,0, 11,4,1, 12,5,1, 13,5,1, 14,5,1,
900 // Length and number of words of that length
901 4, 22,
902 // Coordinates where words start and direction (0 = horizontal)
903 0,0,1, 0,6,0, 0,11,1, 1,0,1, 1,11,1, 2,0,1, 2,11,1, 3,1,1, 4,0,0, 6,0,1, 6,9,1, 7,14,0, 8,2,1, 8,11,1, 11,8,0, 11,10,1, 12,0,1, 12,11,1, 13,0,1, 13,11,1, 14,0,1, 14,11,1,
904 // Length and number of words of that length
905 3, 16,
906 // Coordinates where words start and direction (0 = horizontal)
907 0,0,0, 0,5,0, 0,11,0, 3,4,0, 3,12,1, 5,0,1, 5,6,0, 6,5,1, 7,8,0, 8,7,1, 9,10,0, 9,12,1, 11,0,1, 12,3,0, 12,9,0, 12,14,0,
908 // End marker
909 0
910 };
911
912
913 /*
914 * Name: 15.05, 15 x 15
915 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _)
916 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _)
917 * (_ _ _ _ _ _ _ _ _ _ * _ _ _ _)
918 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
919 * (* * * * _ _ _ * * * _ _ _ _ _)
920 * (_ _ _ _ _ _ * _ _ _ _ * * * *)
921 * (_ _ _ _ _ * * _ _ _ _ _ _ _ *)
922 * (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _)
923 * (* _ _ _ _ _ _ _ * * _ _ _ _ _)
924 * (* * * * _ _ _ _ * _ _ _ _ _ _)
925 * (_ _ _ _ _ * * * _ _ _ * * * *)
926 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
927 * (_ _ _ _ * _ _ _ _ _ _ _ _ _ _)
928 * (_ _ _ _ * _ _ _ _ * _ _ _ _ _)
929 * (_ _ _ _ * _ _ _ _ * _ _ _ _ _)
930 */
931 const int g14[] = {
932 // Width and height of crossword grid
933 15, 15,
934 // Number of black fields
935 44,
936 // Black field coordinates
937 0,4, 0,8, 0,9, 1,4, 1,9, 2,4, 2,9, 3,4, 3,9, 4,3, 4,11, 4,12, 4,13, 4,14, 5,0, 5,1, 5,6, 5,10, 6,5, 6,6, 6,10, 7,4, 7,10, 8,4, 8,8, 8,9, 9,4, 9,8, 9,13, 9,14, 10,0, 10,1, 10,2, 10,3, 10,11, 11,5, 11,10, 12,5, 12,10, 13,5, 13,10, 14,5, 14,6, 14,10,
938 // Length and number of words of that length
939 15, 1,
940 // Coordinates where words start and direction (0 = horizontal)
941 0,7,0,
942 // Length and number of words of that length
943 10, 2,
944 // Coordinates where words start and direction (0 = horizontal)
945 0,2,0, 5,12,0,
946 // Length and number of words of that length
947 7, 4,
948 // Coordinates where words start and direction (0 = horizontal)
949 1,8,0, 4,4,1, 7,6,0, 10,4,1,
950 // Length and number of words of that length
951 6, 2,
952 // Coordinates where words start and direction (0 = horizontal)
953 0,5,0, 9,9,0,
954 // Length and number of words of that length
955 5, 21,
956 // Coordinates where words start and direction (0 = horizontal)
957 0,0,0, 0,1,0, 0,6,0, 0,10,0, 0,10,1, 1,10,1, 2,10,1, 3,10,1, 5,3,0, 5,11,0, 6,0,1, 7,5,1, 8,10,1, 10,4,0, 10,8,0, 10,13,0, 10,14,0, 11,0,1, 12,0,1, 13,0,1, 14,0,1,
958 // Length and number of words of that length
959 4, 38,
960 // Coordinates where words start and direction (0 = horizontal)
961 0,0,1, 0,3,0, 0,11,0, 0,12,0, 0,13,0, 0,14,0, 1,0,1, 1,5,1, 2,0,1, 2,5,1, 3,0,1, 3,5,1, 4,9,0, 5,2,1, 5,11,1, 5,13,0, 5,14,0, 6,0,0, 6,1,0, 6,11,1, 7,0,1, 7,5,0, 7,11,1, 8,0,1, 9,0,1, 9,9,1, 11,0,0, 11,1,0, 11,2,0, 11,3,0, 11,6,1, 11,11,0, 11,11,1, 12,6,1, 12,11,1, 13,6,1, 13,11,1, 14,11,1,
962 // Length and number of words of that length
963 3, 10,
964 // Coordinates where words start and direction (0 = horizontal)
965 0,5,1, 4,0,1, 4,4,0, 5,7,1, 6,7,1, 8,5,1, 8,10,0, 9,5,1, 10,12,1, 14,7,1,
966 // End marker
967 0
968 };
969
970
971 /*
972 * Name: 15.06, 15 x 15
973 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _)
974 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _)
975 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _)
976 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
977 * (* * * _ _ _ * _ _ _ _ _ * * *)
978 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ _)
979 * (_ _ _ _ _ _ _ _ _ * _ _ _ _ _)
980 * (_ _ _ * _ _ _ _ _ _ _ * _ _ _)
981 * (_ _ _ _ _ * _ _ _ _ _ _ _ _ _)
982 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ _)
983 * (* * * _ _ _ _ _ * _ _ _ * * *)
984 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
985 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _)
986 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _)
987 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _)
988 */
989 const int g15[] = {
990 // Width and height of crossword grid
991 15, 15,
992 // Number of black fields
993 30,
994 // Black field coordinates
995 0,4, 0,10, 1,4, 1,10, 2,4, 2,10, 3,7, 4,3, 4,11, 5,8, 6,4, 6,9, 7,0, 7,1, 7,2, 7,12, 7,13, 7,14, 8,5, 8,10, 9,6, 10,3, 10,11, 11,7, 12,4, 12,10, 13,4, 13,10, 14,4, 14,10,
996 // Length and number of words of that length
997 9, 3,
998 // Coordinates where words start and direction (0 = horizontal)
999 0,6,0, 6,8,0, 7,3,1,
1000 // Length and number of words of that length
1001 8, 4,
1002 // Coordinates where words start and direction (0 = horizontal)
1003 0,5,0, 5,0,1, 7,9,0, 9,7,1,
1004 // Length and number of words of that length
1005 7, 19,
1006 // Coordinates where words start and direction (0 = horizontal)
1007 0,0,0, 0,1,0, 0,2,0, 0,12,0, 0,13,0, 0,14,0, 3,0,1, 3,8,1, 4,4,1, 4,7,0, 8,0,0, 8,1,0, 8,2,0, 8,12,0, 8,13,0, 8,14,0, 10,4,1, 11,0,1, 11,8,1,
1008 // Length and number of words of that length
1009 6, 4,
1010 // Coordinates where words start and direction (0 = horizontal)
1011 0,9,0, 5,9,1, 9,0,1, 9,5,0,
1012 // Length and number of words of that length
1013 5, 14,
1014 // Coordinates where words start and direction (0 = horizontal)
1015 0,5,1, 0,8,0, 1,5,1, 2,5,1, 3,10,0, 5,3,0, 5,11,0, 6,10,1, 7,4,0, 8,0,1, 10,6,0, 12,5,1, 13,5,1, 14,5,1,
1016 // Length and number of words of that length
1017 4, 20,
1018 // Coordinates where words start and direction (0 = horizontal)
1019 0,0,1, 0,3,0, 0,11,0, 0,11,1, 1,0,1, 1,11,1, 2,0,1, 2,11,1, 6,0,1, 6,5,1, 8,6,1, 8,11,1, 11,3,0, 11,11,0, 12,0,1, 12,11,1, 13,0,1, 13,11,1, 14,0,1, 14,11,1,
1020 // Length and number of words of that length
1021 3, 8,
1022 // Coordinates where words start and direction (0 = horizontal)
1023 0,7,0, 3,4,0, 4,0,1, 4,12,1, 9,10,0, 10,0,1, 10,12,1, 12,7,0,
1024 // End marker
1025 0
1026 };
1027
1028
1029 /*
1030 * Name: 15.07, 15 x 15
1031 * (_ _ _ _ * _ _ _ _ * _ _ _ _ _)
1032 * (_ _ _ _ * _ _ _ _ * _ _ _ _ _)
1033 * (_ _ _ _ _ _ _ _ _ * _ _ _ _ _)
1034 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _)
1035 * (* * _ _ _ _ * _ _ _ * _ _ _ _)
1036 * (_ _ _ _ _ * _ _ _ _ _ _ * * *)
1037 * (_ _ _ _ * _ _ _ _ _ _ _ _ _ _)
1038 * (_ _ _ * _ _ _ _ _ _ _ * _ _ _)
1039 * (_ _ _ _ _ _ _ _ _ _ * _ _ _ _)
1040 * (* * * _ _ _ _ _ _ * _ _ _ _ _)
1041 * (_ _ _ _ * _ _ _ * _ _ _ _ * *)
1042 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _)
1043 * (_ _ _ _ _ * _ _ _ _ _ _ _ _ _)
1044 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _)
1045 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _)
1046 */
1047 const int g16[] = {
1048 // Width and height of crossword grid
1049 15, 15,
1050 // Number of black fields
1051 32,
1052 // Black field coordinates
1053 0,4, 0,9, 1,4, 1,9, 2,9, 3,7, 4,0, 4,1, 4,6, 4,10, 5,5, 5,12, 5,13, 5,14, 6,4, 7,3, 7,11, 8,10, 9,0, 9,1, 9,2, 9,9, 10,4, 10,8, 10,13, 10,14, 11,7, 12,5, 13,5, 13,10, 14,5, 14,10,
1054 // Length and number of words of that length
1055 10, 4,
1056 // Coordinates where words start and direction (0 = horizontal)
1057 0,8,0, 5,6,0, 6,5,1, 8,0,1,
1058 // Length and number of words of that length
1059 9, 4,
1060 // Coordinates where words start and direction (0 = horizontal)
1061 0,2,0, 2,0,1, 6,12,0, 12,6,1,
1062 // Length and number of words of that length
1063 7, 10,
1064 // Coordinates where words start and direction (0 = horizontal)
1065 0,3,0, 0,11,0, 3,0,1, 3,8,1, 4,7,0, 7,4,1, 8,3,0, 8,11,0, 11,0,1, 11,8,1,
1066 // Length and number of words of that length
1067 6, 4,
1068 // Coordinates where words start and direction (0 = horizontal)
1069 3,9,0, 5,6,1, 6,5,0, 9,3,1,
1070 // Length and number of words of that length
1071 5, 16,
1072 // Coordinates where words start and direction (0 = horizontal)
1073 0,5,0, 0,10,1, 0,12,0, 0,13,0, 0,14,0, 1,10,1, 2,10,1, 5,0,1, 9,10,1, 10,0,0, 10,1,0, 10,2,0, 10,9,0, 12,0,1, 13,0,1, 14,0,1,
1074 // Length and number of words of that length
1075 4, 28,
1076 // Coordinates where words start and direction (0 = horizontal)
1077 0,0,0, 0,0,1, 0,1,0, 0,5,1, 0,6,0, 0,10,0, 1,0,1, 1,5,1, 2,4,0, 4,2,1, 4,11,1, 5,0,0, 5,1,0, 6,0,1, 6,13,0, 6,14,0, 8,11,1, 9,10,0, 10,0,1, 10,9,1, 11,4,0, 11,8,0, 11,13,0, 11,14,0, 13,6,1, 13,11,1, 14,6,1, 14,11,1,
1078 // Length and number of words of that length
1079 3, 8,
1080 // Coordinates where words start and direction (0 = horizontal)
1081 0,7,0, 4,7,1, 5,10,0, 7,0,1, 7,4,0, 7,12,1, 10,5,1, 12,7,0,
1082 // End marker
1083 0
1084 };
1085
1086
1087 /*
1088 * Name: 15.08, 15 x 15
1089 * (_ _ _ _ * _ _ _ _ * _ _ _ _ _)
1090 * (_ _ _ _ * _ _ _ _ * _ _ _ _ _)
1091 * (_ _ _ _ * _ _ _ _ * _ _ _ _ _)
1092 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _)
1093 * (* * * _ _ _ * _ _ _ * _ _ _ _)
1094 * (_ _ _ * _ _ _ _ _ _ _ _ * * *)
1095 * (_ _ _ _ * _ _ _ * _ _ _ _ _ _)
1096 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _)
1097 * (_ _ _ _ _ _ * _ _ _ * _ _ _ _)
1098 * (* * * _ _ _ _ _ _ _ _ * _ _ _)
1099 * (_ _ _ _ * _ _ _ * _ _ _ * * *)
1100 * (_ _ _ * _ _ _ _ _ * _ _ _ _ _)
1101 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _)
1102 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _)
1103 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _)
1104 */
1105 const int g17[] = {
1106 // Width and height of crossword grid
1107 15, 15,
1108 // Number of black fields
1109 39,
1110 // Black field coordinates
1111 0,4, 0,9, 1,4, 1,9, 2,4, 2,9, 3,5, 3,11, 4,0, 4,1, 4,2, 4,6, 4,10, 5,3, 5,12, 5,13, 5,14, 6,4, 6,8, 7,7, 8,6, 8,10, 9,0, 9,1, 9,2, 9,11, 10,4, 10,8, 10,12, 10,13, 10,14, 11,3, 11,9, 12,5, 12,10, 13,5, 13,10, 14,5, 14,10,
1112 // Length and number of words of that length
1113 8, 4,
1114 // Coordinates where words start and direction (0 = horizontal)
1115 3,9,0, 4,5,0, 5,4,1, 9,3,1,
1116 // Length and number of words of that length
1117 7, 4,
1118 // Coordinates where words start and direction (0 = horizontal)
1119 0,7,0, 7,0,1, 7,8,1, 8,7,0,
1120 // Length and number of words of that length
1121 6, 4,
1122 // Coordinates where words start and direction (0 = horizontal)
1123 0,8,0, 6,9,1, 8,0,1, 9,6,0,
1124 // Length and number of words of that length
1125 5, 20,
1126 // Coordinates where words start and direction (0 = horizontal)
1127 0,3,0, 0,10,1, 0,12,0, 0,13,0, 0,14,0, 1,10,1, 2,10,1, 3,0,1, 3,6,1, 4,11,0, 6,3,0, 10,0,0, 10,1,0, 10,2,0, 10,11,0, 11,4,1, 11,10,1, 12,0,1, 13,0,1, 14,0,1,
1128 // Length and number of words of that length
1129 4, 32,
1130 // Coordinates where words start and direction (0 = horizontal)
1131 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,5,1, 0,6,0, 0,10,0, 1,0,1, 1,5,1, 2,0,1, 2,5,1, 4,11,1, 5,0,0, 5,1,0, 5,2,0, 6,0,1, 6,12,0, 6,13,0, 6,14,0, 8,11,1, 10,0,1, 11,4,0, 11,8,0, 11,12,0, 11,13,0, 11,14,0, 12,6,1, 12,11,1, 13,6,1, 13,11,1, 14,6,1, 14,11,1,
1132 // Length and number of words of that length
1133 3, 20,
1134 // Coordinates where words start and direction (0 = horizontal)
1135 0,5,0, 0,11,0, 3,4,0, 3,12,1, 4,3,1, 4,7,1, 5,0,1, 5,6,0, 5,10,0, 6,5,1, 7,4,0, 7,8,0, 8,7,1, 9,10,0, 9,12,1, 10,5,1, 10,9,1, 11,0,1, 12,3,0, 12,9,0,
1136 // End marker
1137 0
1138 };
1139
1140
1141 /*
1142 * Name: 15.09, 15 x 15
1143 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
1144 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
1145 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
1146 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _)
1147 * (* * * _ _ _ * _ _ _ _ _ * * *)
1148 * (_ _ _ _ _ * _ _ _ * _ _ _ _ _)
1149 * (_ _ _ _ * _ _ _ * _ _ _ _ _ _)
1150 * (_ _ _ * _ _ _ _ _ _ _ * _ _ _)
1151 * (_ _ _ _ _ _ * _ _ _ * _ _ _ _)
1152 * (_ _ _ _ _ * _ _ _ * _ _ _ _ _)
1153 * (* * * _ _ _ _ _ * _ _ _ * * *)
1154 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _)
1155 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
1156 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
1157 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
1158 */
1159 const int g18[] = {
1160 // Width and height of crossword grid
1161 15, 15,
1162 // Number of black fields
1163 38,
1164 // Black field coordinates
1165 0,4, 0,10, 1,4, 1,10, 2,4, 2,10, 3,7, 4,0, 4,1, 4,2, 4,6, 4,12, 4,13, 4,14, 5,5, 5,9, 6,4, 6,8, 7,3, 7,11, 8,6, 8,10, 9,5, 9,9, 10,0, 10,1, 10,2, 10,8, 10,12, 10,13, 10,14, 11,7, 12,4, 12,10, 13,4, 13,10, 14,4, 14,10,
1166 // Length and number of words of that length
1167 7, 10,
1168 // Coordinates where words start and direction (0 = horizontal)
1169 0,3,0, 0,11,0, 3,0,1, 3,8,1, 4,7,0, 7,4,1, 8,3,0, 8,11,0, 11,0,1, 11,8,1,
1170 // Length and number of words of that length
1171 6, 4,
1172 // Coordinates where words start and direction (0 = horizontal)
1173 0,8,0, 6,9,1, 8,0,1, 9,6,0,
1174 // Length and number of words of that length
1175 5, 24,
1176 // Coordinates where words start and direction (0 = horizontal)
1177 0,5,0, 0,5,1, 0,9,0, 1,5,1, 2,5,1, 3,10,0, 4,7,1, 5,0,0, 5,0,1, 5,1,0, 5,2,0, 5,10,1, 5,12,0, 5,13,0, 5,14,0, 7,4,0, 9,0,1, 9,10,1, 10,3,1, 10,5,0, 10,9,0, 12,5,1, 13,5,1, 14,5,1,
1178 // Length and number of words of that length
1179 4, 28,
1180 // Coordinates where words start and direction (0 = horizontal)
1181 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,6,0, 0,11,1, 0,12,0, 0,13,0, 0,14,0, 1,0,1, 1,11,1, 2,0,1, 2,11,1, 6,0,1, 8,11,1, 11,0,0, 11,1,0, 11,2,0, 11,8,0, 11,12,0, 11,13,0, 11,14,0, 12,0,1, 12,11,1, 13,0,1, 13,11,1, 14,0,1, 14,11,1,
1182 // Length and number of words of that length
1183 3, 16,
1184 // Coordinates where words start and direction (0 = horizontal)
1185 0,7,0, 3,4,0, 4,3,1, 5,6,0, 5,6,1, 6,5,0, 6,5,1, 6,9,0, 7,0,1, 7,8,0, 7,12,1, 8,7,1, 9,6,1, 9,10,0, 10,9,1, 12,7,0,
1186 // End marker
1187 0
1188 };
1189
1190
1191 /*
1192 * Name: 15.10, 15 x 15
1193 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
1194 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
1195 * (_ _ _ _ _ _ _ _ _ _ * _ _ _ _)
1196 * (_ _ _ _ _ _ _ _ _ _ * _ _ _ _)
1197 * (* * * * _ _ _ _ * _ _ _ _ _ _)
1198 * (_ _ _ _ _ * * _ _ _ _ _ * * *)
1199 * (_ _ _ _ * _ _ _ _ _ _ _ _ _ _)
1200 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _)
1201 * (_ _ _ _ _ _ _ _ _ _ * _ _ _ _)
1202 * (* * * _ _ _ _ _ * * _ _ _ _ _)
1203 * (_ _ _ _ _ _ * _ _ _ _ * * * *)
1204 * (_ _ _ _ * _ _ _ _ _ _ _ _ _ _)
1205 * (_ _ _ _ * _ _ _ _ _ _ _ _ _ _)
1206 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
1207 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
1208 */
1209 const int g19[] = {
1210 // Width and height of crossword grid
1211 15, 15,
1212 // Number of black fields
1213 35,
1214 // Black field coordinates
1215 0,4, 0,9, 1,4, 1,9, 2,4, 2,9, 3,4, 4,0, 4,1, 4,6, 4,11, 4,12, 4,13, 4,14, 5,5, 6,5, 6,10, 7,7, 8,4, 8,9, 9,9, 10,0, 10,1, 10,2, 10,3, 10,8, 10,13, 10,14, 11,10, 12,5, 12,10, 13,5, 13,10, 14,5, 14,10,
1216 // Length and number of words of that length
1217 10, 8,
1218 // Coordinates where words start and direction (0 = horizontal)
1219 0,2,0, 0,3,0, 0,8,0, 3,5,1, 5,6,0, 5,11,0, 5,12,0, 11,0,1,
1220 // Length and number of words of that length
1221 9, 2,
1222 // Coordinates where words start and direction (0 = horizontal)
1223 5,6,1, 9,0,1,
1224 // Length and number of words of that length
1225 7, 4,
1226 // Coordinates where words start and direction (0 = horizontal)
1227 0,7,0, 7,0,1, 7,8,1, 8,7,0,
1228 // Length and number of words of that length
1229 6, 2,
1230 // Coordinates where words start and direction (0 = horizontal)
1231 0,10,0, 9,4,0,
1232 // Length and number of words of that length
1233 5, 18,
1234 // Coordinates where words start and direction (0 = horizontal)
1235 0,5,0, 0,10,1, 1,10,1, 2,10,1, 3,9,0, 5,0,0, 5,0,1, 5,1,0, 5,13,0, 5,14,0, 6,0,1, 7,5,0, 8,10,1, 9,10,1, 10,9,0, 12,0,1, 13,0,1, 14,0,1,
1236 // Length and number of words of that length
1237 4, 38,
1238 // Coordinates where words start and direction (0 = horizontal)
1239 0,0,0, 0,0,1, 0,1,0, 0,5,1, 0,6,0, 0,11,0, 0,12,0, 0,13,0, 0,14,0, 1,0,1, 1,5,1, 2,0,1, 2,5,1, 3,0,1, 4,2,1, 4,4,0, 4,7,1, 6,6,1, 6,11,1, 7,10,0, 8,0,1, 8,5,1, 10,4,1, 10,9,1, 11,0,0, 11,1,0, 11,2,0, 11,3,0, 11,8,0, 11,11,1, 11,13,0, 11,14,0, 12,6,1, 12,11,1, 13,6,1, 13,11,1, 14,6,1, 14,11,1,
1240 // End marker
1241 0
1242 };
1243
1244
1245 /*
1246 * Name: 19.01, 19 x 19
1247 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1248 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1249 * (_ _ _ _ _ _ _ _ _ * _ _ _ _ _ _ _ _ _)
1250 * (_ _ _ _ _ _ _ * _ _ _ _ * _ _ _ _ _ _)
1251 * (* * * _ _ _ * _ _ _ _ * _ _ _ _ * * *)
1252 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ _ _ _ _)
1253 * (_ _ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _)
1254 * (_ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _ _)
1255 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
1256 * (* * _ _ _ _ * _ _ _ _ _ * _ _ _ _ * *)
1257 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
1258 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _)
1259 * (_ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _ _)
1260 * (_ _ _ _ _ _ _ _ * _ _ _ _ * _ _ _ _ _)
1261 * (* * * _ _ _ _ * _ _ _ _ * _ _ _ * * *)
1262 * (_ _ _ _ _ _ * _ _ _ _ * _ _ _ _ _ _ _)
1263 * (_ _ _ _ _ _ _ _ _ * _ _ _ _ _ _ _ _ _)
1264 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1265 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1266 */
1267 const int g20[] = {
1268 // Width and height of crossword grid
1269 19, 19,
1270 // Number of black fields
1271 60,
1272 // Black field coordinates
1273 0,4, 0,9, 0,14, 1,4, 1,9, 1,14, 2,4, 2,14, 3,7, 3,12, 4,0, 4,1, 4,6, 4,11, 4,17, 4,18, 5,5, 5,10, 6,4, 6,9, 6,15, 7,3, 7,8, 7,14, 8,7, 8,13, 9,0, 9,1, 9,2, 9,6, 9,12, 9,16, 9,17, 9,18, 10,5, 10,11, 11,4, 11,10, 11,15, 12,3, 12,9, 12,14, 13,8, 13,13, 14,0, 14,1, 14,7, 14,12, 14,17, 14,18, 15,6, 15,11, 16,4, 16,14, 17,4, 17,9, 17,14, 18,4, 18,9, 18,14,
1274 // Length and number of words of that length
1275 9, 6,
1276 // Coordinates where words start and direction (0 = horizontal)
1277 0,2,0, 0,16,0, 2,5,1, 10,2,0, 10,16,0, 16,5,1,
1278 // Length and number of words of that length
1279 8, 4,
1280 // Coordinates where words start and direction (0 = horizontal)
1281 0,13,0, 5,11,1, 11,5,0, 13,0,1,
1282 // Length and number of words of that length
1283 7, 8,
1284 // Coordinates where words start and direction (0 = horizontal)
1285 0,3,0, 0,8,0, 3,0,1, 8,0,1, 10,12,1, 12,10,0, 12,15,0, 15,12,1,
1286 // Length and number of words of that length
1287 6, 4,
1288 // Coordinates where words start and direction (0 = horizontal)
1289 0,15,0, 3,13,1, 13,3,0, 15,0,1,
1290 // Length and number of words of that length
1291 5, 24,
1292 // Coordinates where words start and direction (0 = horizontal)
1293 0,5,0, 0,10,0, 4,12,0, 4,12,1, 5,0,1, 5,11,0, 6,10,0, 6,10,1, 7,9,0, 7,9,1, 8,8,0, 8,8,1, 8,14,1, 9,7,0, 9,7,1, 10,0,1, 10,6,0, 10,6,1, 11,5,1, 12,4,1, 13,14,1, 14,2,1, 14,8,0, 14,13,0,
1294 // Length and number of words of that length
1295 4, 70,
1296 // Coordinates where words start and direction (0 = horizontal)
1297 0,0,0, 0,0,1, 0,1,0, 0,5,1, 0,6,0, 0,10,1, 0,11,0, 0,15,1, 0,17,0, 0,18,0, 1,0,1, 1,5,1, 1,10,1, 1,15,1, 2,0,1, 2,9,0, 2,15,1, 3,8,1, 3,14,0, 4,2,1, 4,7,0, 4,7,1, 5,0,0, 5,1,0, 5,6,0, 5,6,1, 5,17,0, 5,18,0, 6,0,1, 6,5,0, 6,5,1, 7,4,0, 7,4,1, 7,15,0, 7,15,1, 8,3,0, 8,14,0, 9,13,0, 10,0,0, 10,1,0, 10,12,0, 10,17,0, 10,18,0, 11,0,1, 11,11,0, 11,11,1, 12,4,0, 12,10,1, 12,15,1, 13,9,0, 13,9,1, 14,8,1, 14,13,1, 15,0,0, 15,1,0, 15,7,0, 15,7,1, 15,12,0, 15,17,0, 15,18,0, 16,0,1, 16,15,1, 17,0,1, 17,5,1, 17,10,1, 17,15,1, 18,0,1, 18,5,1, 18,10,1, 18,15,1,
1298 // Length and number of words of that length
1299 3, 12,
1300 // Coordinates where words start and direction (0 = horizontal)
1301 0,7,0, 0,12,0, 3,4,0, 6,16,1, 7,0,1, 9,3,1, 9,13,1, 11,16,1, 12,0,1, 13,14,0, 16,6,0, 16,11,0,
1302 // End marker
1303 0
1304 };
1305
1306
1307 /*
1308 * Name: 19.02, 19 x 19
1309 * (_ _ _ _ _ * * _ _ _ _ _ * * _ _ _ _ _)
1310 * (_ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _)
1311 * (_ _ _ _ _ _ _ _ _ _ _ _ _ * _ _ _ _ _)
1312 * (_ _ _ _ * _ _ _ _ _ * * _ _ _ _ _ _ _)
1313 * (* * * _ _ _ _ _ _ * _ _ _ _ _ _ _ * *)
1314 * (_ _ _ _ _ _ _ * * _ _ _ _ _ * _ _ _ _)
1315 * (_ _ _ _ _ * * _ _ _ _ _ _ _ * * _ _ _)
1316 * (_ _ _ * * _ _ _ _ _ _ _ _ * _ _ _ _ _)
1317 * (_ _ _ _ * _ _ _ _ _ * * * _ _ _ _ _ _)
1318 * (* * _ _ _ _ _ _ _ * _ _ _ _ _ _ _ * *)
1319 * (_ _ _ _ _ _ * * * _ _ _ _ _ * _ _ _ _)
1320 * (_ _ _ _ _ * _ _ _ _ _ _ _ _ * * _ _ _)
1321 * (_ _ _ * * _ _ _ _ _ _ _ * * _ _ _ _ _)
1322 * (_ _ _ _ * _ _ _ _ _ * * _ _ _ _ _ _ _)
1323 * (* * _ _ _ _ _ _ _ * _ _ _ _ _ _ * * *)
1324 * (_ _ _ _ _ _ _ * * _ _ _ _ _ * _ _ _ _)
1325 * (_ _ _ _ _ * _ _ _ _ _ _ _ _ _ _ _ _ _)
1326 * (_ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _)
1327 * (_ _ _ _ _ * * _ _ _ _ _ * * _ _ _ _ _)
1328 */
1329 const int g21[] = {
1330 // Width and height of crossword grid
1331 19, 19,
1332 // Number of black fields
1333 65,
1334 // Black field coordinates
1335 0,4, 0,9, 0,14, 1,4, 1,9, 1,14, 2,4, 3,7, 3,12, 4,3, 4,7, 4,8, 4,12, 4,13, 5,0, 5,1, 5,6, 5,11, 5,16, 5,17, 5,18, 6,0, 6,6, 6,10, 6,18, 7,5, 7,10, 7,15, 8,5, 8,10, 8,15, 9,4, 9,9, 9,14, 10,3, 10,8, 10,13, 11,3, 11,8, 11,13, 12,0, 12,8, 12,12, 12,18, 13,0, 13,1, 13,2, 13,7, 13,12, 13,17, 13,18, 14,5, 14,6, 14,10, 14,11, 14,15, 15,6, 15,11, 16,14, 17,4, 17,9, 17,14, 18,4, 18,9, 18,14,
1336 // Length and number of words of that length
1337 14, 2,
1338 // Coordinates where words start and direction (0 = horizontal)
1339 2,5,1, 16,0,1,
1340 // Length and number of words of that length
1341 13, 2,
1342 // Coordinates where words start and direction (0 = horizontal)
1343 0,2,0, 6,16,0,
1344 // Length and number of words of that length
1345 8, 2,
1346 // Coordinates where words start and direction (0 = horizontal)
1347 5,7,0, 6,11,0,
1348 // Length and number of words of that length
1349 7, 16,
1350 // Coordinates where words start and direction (0 = horizontal)
1351 0,5,0, 0,15,0, 2,9,0, 2,14,0, 3,0,1, 5,12,0, 6,1,0, 6,11,1, 6,17,0, 7,6,0, 10,4,0, 10,9,0, 12,1,1, 12,3,0, 12,13,0, 15,12,1,
1352 // Length and number of words of that length
1353 6, 6,
1354 // Coordinates where words start and direction (0 = horizontal)
1355 0,10,0, 3,4,0, 3,13,1, 10,14,0, 13,8,0, 15,0,1,
1356 // Length and number of words of that length
1357 5, 30,
1358 // Coordinates where words start and direction (0 = horizontal)
1359 0,0,0, 0,1,0, 0,6,0, 0,11,0, 0,16,0, 0,17,0, 0,18,0, 4,14,1, 5,3,0, 5,8,0, 5,13,0, 6,1,1, 7,0,0, 7,0,1, 7,18,0, 8,0,1, 9,5,0, 9,10,0, 9,15,0, 10,14,1, 11,14,1, 12,13,1, 14,0,0, 14,0,1, 14,1,0, 14,2,0, 14,7,0, 14,12,0, 14,17,0, 14,18,0,
1360 // Length and number of words of that length
1361 4, 44,
1362 // Coordinates where words start and direction (0 = horizontal)
1363 0,0,1, 0,3,0, 0,5,1, 0,8,0, 0,10,1, 0,13,0, 0,15,1, 1,0,1, 1,5,1, 1,10,1, 1,15,1, 2,0,1, 3,8,1, 5,2,1, 5,7,1, 5,12,1, 7,6,1, 7,11,1, 8,6,1, 8,11,1, 9,0,1, 9,5,1, 9,10,1, 9,15,1, 10,4,1, 10,9,1, 11,4,1, 11,9,1, 13,3,1, 13,8,1, 13,13,1, 15,5,0, 15,7,1, 15,10,0, 15,15,0, 16,15,1, 17,0,1, 17,5,1, 17,10,1, 17,15,1, 18,0,1, 18,5,1, 18,10,1, 18,15,1,
1364 // Length and number of words of that length
1365 3, 16,
1366 // Coordinates where words start and direction (0 = horizontal)
1367 0,7,0, 0,12,0, 4,0,1, 4,4,1, 4,9,1, 6,7,1, 7,16,1, 8,16,1, 10,0,1, 11,0,1, 12,9,1, 14,7,1, 14,12,1, 14,16,1, 16,6,0, 16,11,0,
1368 // End marker
1369 0
1370 };
1371
1372
1373 /*
1374 * Name: 19.03, 19 x 19
1375 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
1376 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
1377 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
1378 * (_ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _)
1379 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1380 * (_ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _)
1381 * (* * * _ _ _ _ _ * _ _ _ _ _ _ _ * * *)
1382 * (_ _ _ _ _ _ _ * _ _ _ * _ _ _ _ _ _ _)
1383 * (_ _ _ _ _ _ * _ _ _ * _ _ _ _ _ _ _ _)
1384 * (_ _ _ * * _ _ _ _ _ _ _ _ _ * * _ _ _)
1385 * (_ _ _ _ _ _ _ _ * _ _ _ * _ _ _ _ _ _)
1386 * (_ _ _ _ _ _ _ * _ _ _ * _ _ _ _ _ _ _)
1387 * (* * * _ _ _ _ _ _ _ * _ _ _ _ _ * * *)
1388 * (_ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _)
1389 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1390 * (_ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _)
1391 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
1392 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
1393 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
1394 */
1395 const int g22[] = {
1396 // Width and height of crossword grid
1397 19, 19,
1398 // Number of black fields
1399 54,
1400 // Black field coordinates
1401 0,6, 0,12, 1,6, 1,12, 2,6, 2,12, 3,3, 3,9, 3,15, 4,4, 4,9, 4,14, 5,5, 5,13, 6,0, 6,1, 6,2, 6,8, 6,16, 6,17, 6,18, 7,7, 7,11, 8,6, 8,10, 9,3, 9,4, 9,14, 9,15, 10,8, 10,12, 11,7, 11,11, 12,0, 12,1, 12,2, 12,10, 12,16, 12,17, 12,18, 13,5, 13,13, 14,4, 14,9, 14,14, 15,3, 15,9, 15,15, 16,6, 16,12, 17,6, 17,12, 18,6, 18,12,
1402 // Length and number of words of that length
1403 9, 2,
1404 // Coordinates where words start and direction (0 = horizontal)
1405 5,9,0, 9,5,1,
1406 // Length and number of words of that length
1407 8, 4,
1408 // Coordinates where words start and direction (0 = horizontal)
1409 0,10,0, 8,11,1, 10,0,1, 11,8,0,
1410 // Length and number of words of that length
1411 7, 16,
1412 // Coordinates where words start and direction (0 = horizontal)
1413 0,7,0, 0,11,0, 3,12,0, 5,6,1, 6,5,0, 6,9,1, 6,13,0, 7,0,1, 7,12,1, 9,6,0, 11,0,1, 11,12,1, 12,3,1, 12,7,0, 12,11,0, 13,6,1,
1414 // Length and number of words of that length
1415 6, 28,
1416 // Coordinates where words start and direction (0 = horizontal)
1417 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,8,0, 0,13,1, 0,16,0, 0,17,0, 0,18,0, 1,0,1, 1,13,1, 2,0,1, 2,13,1, 8,0,1, 10,13,1, 13,0,0, 13,1,0, 13,2,0, 13,10,0, 13,16,0, 13,17,0, 13,18,0, 16,0,1, 16,13,1, 17,0,1, 17,13,1, 18,0,1, 18,13,1,
1418 // Length and number of words of that length
1419 5, 32,
1420 // Coordinates where words start and direction (0 = horizontal)
1421 0,5,0, 0,7,1, 0,13,0, 1,7,1, 2,7,1, 3,4,1, 3,6,0, 3,10,1, 4,3,0, 4,15,0, 5,0,1, 5,14,1, 6,3,1, 7,0,0, 7,1,0, 7,2,0, 7,16,0, 7,17,0, 7,18,0, 10,3,0, 10,15,0, 11,12,0, 12,11,1, 13,0,1, 13,14,1, 14,5,0, 14,13,0, 15,4,1, 15,10,1, 16,7,1, 17,7,1, 18,7,1,
1422 // Length and number of words of that length
1423 4, 16,
1424 // Coordinates where words start and direction (0 = horizontal)
1425 0,4,0, 0,14,0, 4,0,1, 4,5,1, 4,10,1, 4,15,1, 5,4,0, 5,14,0, 10,4,0, 10,14,0, 14,0,1, 14,5,1, 14,10,1, 14,15,1, 15,4,0, 15,14,0,
1426 // Length and number of words of that length
1427 3, 20,
1428 // Coordinates where words start and direction (0 = horizontal)
1429 0,3,0, 0,9,0, 0,15,0, 3,0,1, 3,16,1, 7,8,0, 7,8,1, 8,7,0, 8,7,1, 8,11,0, 9,0,1, 9,10,0, 9,16,1, 10,9,1, 11,8,1, 15,0,1, 15,16,1, 16,3,0, 16,9,0, 16,15,0,
1430 // End marker
1431 0
1432 };
1433
1434
1435 /*
1436 * Name: 19.04, 19 x 19
1437 * (_ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _)
1438 * (_ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _)
1439 * (_ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _)
1440 * (_ _ _ * _ _ _ * _ _ _ * _ _ _ * _ _ _)
1441 * (_ _ _ _ * _ _ _ * * * _ _ _ * _ _ _ _)
1442 * (* * * _ _ _ _ _ _ _ _ _ _ _ _ _ * * *)
1443 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
1444 * (_ _ _ * _ _ _ * _ _ _ * _ _ _ * _ _ _)
1445 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1446 * (_ _ _ _ * _ _ _ * * * _ _ _ * _ _ _ _)
1447 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1448 * (_ _ _ * _ _ _ * _ _ _ * _ _ _ * _ _ _)
1449 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
1450 * (* * * _ _ _ _ _ _ _ _ _ _ _ _ _ * * *)
1451 * (_ _ _ _ * _ _ _ * * * _ _ _ * _ _ _ _)
1452 * (_ _ _ * _ _ _ * _ _ _ * _ _ _ * _ _ _)
1453 * (_ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _)
1454 * (_ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _)
1455 * (_ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _)
1456 */
1457 const int g23[] = {
1458 // Width and height of crossword grid
1459 19, 19,
1460 // Number of black fields
1461 65,
1462 // Black field coordinates
1463 0,5, 0,13, 1,5, 1,13, 2,5, 2,13, 3,3, 3,7, 3,11, 3,15, 4,4, 4,8, 4,9, 4,10, 4,14, 5,0, 5,1, 5,2, 5,16, 5,17, 5,18, 6,6, 6,12, 7,3, 7,7, 7,11, 7,15, 8,4, 8,9, 8,14, 9,4, 9,8, 9,9, 9,10, 9,14, 10,4, 10,9, 10,14, 11,3, 11,7, 11,11, 11,15, 12,6, 12,12, 13,0, 13,1, 13,2, 13,16, 13,17, 13,18, 14,4, 14,8, 14,9, 14,10, 14,14, 15,3, 15,7, 15,11, 15,15, 16,5, 16,13, 17,5, 17,13, 18,5, 18,13,
1464 // Length and number of words of that length
1465 13, 4,
1466 // Coordinates where words start and direction (0 = horizontal)
1467 3,5,0, 3,13,0, 5,3,1, 13,3,1,
1468 // Length and number of words of that length
1469 7, 12,
1470 // Coordinates where words start and direction (0 = horizontal)
1471 0,6,1, 1,6,1, 2,6,1, 6,0,0, 6,1,0, 6,2,0, 6,16,0, 6,17,0, 6,18,0, 16,6,1, 17,6,1, 18,6,1,
1472 // Length and number of words of that length
1473 6, 8,
1474 // Coordinates where words start and direction (0 = horizontal)
1475 0,6,0, 0,12,0, 6,0,1, 6,13,1, 12,0,1, 12,13,1, 13,6,0, 13,12,0,
1476 // Length and number of words of that length
1477 5, 28,
1478 // Coordinates where words start and direction (0 = horizontal)
1479 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,14,1, 0,16,0, 0,17,0, 0,18,0, 1,0,1, 1,14,1, 2,0,1, 2,14,1, 6,7,1, 7,6,0, 7,12,0, 12,7,1, 14,0,0, 14,1,0, 14,2,0, 14,16,0, 14,17,0, 14,18,0, 16,0,1, 16,14,1, 17,0,1, 17,14,1, 18,0,1, 18,14,1,
1480 // Length and number of words of that length
1481 4, 28,
1482 // Coordinates where words start and direction (0 = horizontal)
1483 0,4,0, 0,8,0, 0,9,0, 0,10,0, 0,14,0, 4,0,1, 4,15,1, 5,8,0, 5,10,0, 8,0,1, 8,5,1, 8,10,1, 8,15,1, 9,0,1, 9,15,1, 10,0,1, 10,5,1, 10,8,0, 10,10,0, 10,10,1, 10,15,1, 14,0,1, 14,15,1, 15,4,0, 15,8,0, 15,9,0, 15,10,0, 15,14,0,
1484 // Length and number of words of that length
1485 3, 52,
1486 // Coordinates where words start and direction (0 = horizontal)
1487 0,3,0, 0,7,0, 0,11,0, 0,15,0, 3,0,1, 3,4,1, 3,8,1, 3,12,1, 3,16,1, 4,3,0, 4,5,1, 4,7,0, 4,11,0, 4,11,1, 4,15,0, 5,4,0, 5,9,0, 5,14,0, 7,0,1, 7,4,1, 7,8,1, 7,12,1, 7,16,1, 8,3,0, 8,7,0, 8,11,0, 8,15,0, 9,5,1, 9,11,1, 11,0,1, 11,4,0, 11,4,1, 11,8,1, 11,9,0, 11,12,1, 11,14,0, 11,16,1, 12,3,0, 12,7,0, 12,11,0, 12,15,0, 14,5,1, 14,11,1, 15,0,1, 15,4,1, 15,8,1, 15,12,1, 15,16,1, 16,3,0, 16,7,0, 16,11,0, 16,15,0,
1488 // End marker
1489 0
1490 };
1491
1492
1493 /*
1494 * Name: 19.05, 19 x 19
1495 * (_ _ _ _ * * _ _ _ * _ _ _ _ * _ _ _ _)
1496 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1497 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1498 * (_ _ _ _ _ _ _ * _ _ _ * _ _ _ _ * * *)
1499 * (* * * _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _)
1500 * (_ _ _ _ _ _ * _ _ _ _ _ * * _ _ _ _ _)
1501 * (_ _ _ * _ _ _ _ * _ _ _ _ * * _ _ _ _)
1502 * (_ _ _ _ * _ _ _ _ * * _ _ _ _ * _ _ _)
1503 * (_ _ _ _ * * _ _ _ _ _ * _ _ _ _ * * *)
1504 * (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _)
1505 * (* * * _ _ _ _ * _ _ _ _ _ * * _ _ _ _)
1506 * (_ _ _ * _ _ _ _ * * _ _ _ _ * _ _ _ _)
1507 * (_ _ _ _ * * _ _ _ _ * _ _ _ _ * _ _ _)
1508 * (_ _ _ _ _ * * _ _ _ _ _ * _ _ _ _ _ _)
1509 * (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ * * *)
1510 * (* * * _ _ _ _ * _ _ _ * _ _ _ _ _ _ _)
1511 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1512 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1513 * (_ _ _ _ * _ _ _ _ * _ _ _ * * _ _ _ _)
1514 */
1515 const int g24[] = {
1516 // Width and height of crossword grid
1517 19, 19,
1518 // Number of black fields
1519 70,
1520 // Black field coordinates
1521 0,4, 0,10, 0,15, 1,4, 1,10, 1,15, 2,4, 2,10, 2,15, 3,6, 3,11, 4,0, 4,1, 4,2, 4,7, 4,8, 4,12, 4,16, 4,17, 4,18, 5,0, 5,8, 5,12, 5,13, 6,5, 6,13, 7,3, 7,10, 7,15, 8,6, 8,11, 9,0, 9,1, 9,2, 9,7, 9,11, 9,16, 9,17, 9,18, 10,7, 10,12, 11,3, 11,8, 11,15, 12,5, 12,13, 13,5, 13,6, 13,10, 13,18, 14,0, 14,1, 14,2, 14,6, 14,10, 14,11, 14,16, 14,17, 14,18, 15,7, 15,12, 16,3, 16,8, 16,14, 17,3, 17,8, 17,14, 18,3, 18,8, 18,14,
1522 // Length and number of words of that length
1523 19, 1,
1524 // Coordinates where words start and direction (0 = horizontal)
1525 0,9,0,
1526 // Length and number of words of that length
1527 16, 2,
1528 // Coordinates where words start and direction (0 = horizontal)
1529 0,14,0, 3,4,0,
1530 // Length and number of words of that length
1531 7, 10,
1532 // Coordinates where words start and direction (0 = horizontal)
1533 0,3,0, 3,12,1, 5,1,1, 6,6,1, 8,12,1, 10,0,1, 12,6,1, 12,15,0, 13,11,1, 15,0,1,
1534 // Length and number of words of that length
1535 6, 8,
1536 // Coordinates where words start and direction (0 = horizontal)
1537 0,5,0, 3,0,1, 7,4,1, 8,0,1, 10,13,1, 11,9,1, 13,13,0, 15,13,1,
1538 // Length and number of words of that length
1539 5, 18,
1540 // Coordinates where words start and direction (0 = horizontal)
1541 0,5,1, 0,13,0, 1,5,1, 2,5,1, 5,14,1, 6,0,1, 6,8,0, 6,14,1, 7,5,0, 7,13,0, 8,10,0, 12,0,1, 12,14,1, 13,0,1, 14,5,0, 16,9,1, 17,9,1, 18,9,1,
1542 // Length and number of words of that length
1543 4, 62,
1544 // Coordinates where words start and direction (0 = horizontal)
1545 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,7,0, 0,8,0, 0,11,1, 0,12,0, 0,16,0, 0,17,0, 0,18,0, 1,0,1, 1,11,1, 2,0,1, 2,11,1, 3,7,1, 3,10,0, 3,15,0, 4,3,1, 4,6,0, 4,11,0, 5,1,0, 5,2,0, 5,7,0, 5,16,0, 5,17,0, 5,18,0, 6,12,0, 7,11,1, 8,7,1, 9,3,1, 9,6,0, 9,12,1, 10,0,0, 10,1,0, 10,2,0, 10,8,1, 10,11,0, 10,16,0, 10,17,0, 11,4,1, 11,7,0, 11,12,0, 12,3,0, 12,8,0, 14,12,1, 15,0,0, 15,1,0, 15,2,0, 15,6,0, 15,8,1, 15,10,0, 15,11,0, 15,16,0, 15,17,0, 15,18,0, 16,4,1, 16,15,1, 17,4,1, 17,15,1, 18,4,1, 18,15,1,
1546 // Length and number of words of that length
1547 3, 25,
1548 // Coordinates where words start and direction (0 = horizontal)
1549 0,6,0, 0,11,0, 0,16,1, 1,16,1, 2,16,1, 4,9,1, 4,13,1, 5,9,1, 6,0,0, 7,0,1, 7,16,1, 8,3,0, 8,15,0, 9,8,1, 10,18,0, 11,0,1, 11,16,1, 13,7,1, 14,3,1, 14,7,1, 16,0,1, 16,7,0, 16,12,0, 17,0,1, 18,0,1,
1550 // End marker
1551 0
1552 };
1553
1554
1555 /*
1556 * Name: 19.06, 19 x 19
1557 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1558 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1559 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1560 * (* _ _ _ * _ _ _ _ _ _ _ _ _ _ _ * * *)
1561 * (* * * _ _ _ * * _ _ _ * * _ _ _ _ * *)
1562 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ _ _ _ _)
1563 * (_ _ _ _ _ * _ _ _ * _ _ _ _ _ * _ _ _)
1564 * (_ _ _ _ * _ _ _ * _ _ _ _ _ * * _ _ _)
1565 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
1566 * (* * _ _ _ _ * _ _ _ _ _ * _ _ _ _ * *)
1567 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
1568 * (_ _ _ * * _ _ _ _ _ * _ _ _ * _ _ _ _)
1569 * (_ _ _ * _ _ _ _ _ * _ _ _ * _ _ _ _ _)
1570 * (_ _ _ _ _ _ _ _ * _ _ _ _ * _ _ _ _ _)
1571 * (* * _ _ _ _ * * _ _ _ * * _ _ _ * * *)
1572 * (* * * _ _ _ _ _ _ _ _ _ _ _ * _ _ _ *)
1573 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1574 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1575 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1576 */
1577 const int g25[] = {
1578 // Width and height of crossword grid
1579 19, 19,
1580 // Number of black fields
1581 74,
1582 // Black field coordinates
1583 0,3, 0,4, 0,9, 0,14, 0,15, 1,4, 1,9, 1,14, 1,15, 2,4, 2,15, 3,11, 3,12, 4,0, 4,1, 4,2, 4,3, 4,7, 4,11, 4,16, 4,17, 4,18, 5,5, 5,6, 5,10, 6,4, 6,9, 6,14, 7,4, 7,8, 7,14, 8,7, 8,13, 9,0, 9,1, 9,2, 9,6, 9,12, 9,16, 9,17, 9,18, 10,5, 10,11, 11,4, 11,10, 11,14, 12,4, 12,9, 12,14, 13,8, 13,12, 13,13, 14,0, 14,1, 14,2, 14,7, 14,11, 14,15, 14,16, 14,17, 14,18, 15,6, 15,7, 16,3, 16,14, 17,3, 17,4, 17,9, 17,14, 18,3, 18,4, 18,9, 18,14, 18,15,
1584 // Length and number of words of that length
1585 11, 4,
1586 // Coordinates where words start and direction (0 = horizontal)
1587 3,0,1, 3,15,0, 5,3,0, 15,8,1,
1588 // Length and number of words of that length
1589 10, 2,
1590 // Coordinates where words start and direction (0 = horizontal)
1591 2,5,1, 16,4,1,
1592 // Length and number of words of that length
1593 8, 4,
1594 // Coordinates where words start and direction (0 = horizontal)
1595 0,13,0, 5,11,1, 11,5,0, 13,0,1,
1596 // Length and number of words of that length
1597 7, 4,
1598 // Coordinates where words start and direction (0 = horizontal)
1599 0,8,0, 8,0,1, 10,12,1, 12,10,0,
1600 // Length and number of words of that length
1601 6, 2,
1602 // Coordinates where words start and direction (0 = horizontal)
1603 3,13,1, 15,0,1,
1604 // Length and number of words of that length
1605 5, 22,
1606 // Coordinates where words start and direction (0 = horizontal)
1607 0,5,0, 0,6,0, 0,10,0, 4,12,0, 5,0,1, 5,11,0, 6,10,0, 7,9,0, 7,9,1, 8,8,0, 8,8,1, 8,14,1, 9,7,0, 9,7,1, 10,0,1, 10,6,0, 10,6,1, 11,5,1, 13,14,1, 14,8,0, 14,12,0, 14,13,0,
1608 // Length and number of words of that length
1609 4, 58,
1610 // Coordinates where words start and direction (0 = horizontal)
1611 0,0,0, 0,1,0, 0,2,0, 0,5,1, 0,7,0, 0,10,1, 0,16,0, 0,17,0, 0,18,0, 1,0,1, 1,5,1, 1,10,1, 2,0,1, 2,9,0, 2,14,0, 4,12,1, 5,0,0, 5,1,0, 5,2,0, 5,16,0, 5,17,0, 5,18,0, 6,0,1, 6,5,0, 6,5,1, 6,10,1, 6,15,1, 7,0,1, 7,15,1, 9,13,0, 10,0,0, 10,1,0, 10,2,0, 10,16,0, 10,17,0, 10,18,0, 11,0,1, 11,15,1, 12,0,1, 12,5,1, 12,10,1, 12,15,1, 13,4,0, 13,9,0, 14,3,1, 15,0,0, 15,1,0, 15,2,0, 15,11,0, 15,16,0, 15,17,0, 15,18,0, 16,15,1, 17,5,1, 17,10,1, 17,15,1, 18,5,1, 18,10,1,
1612 // Length and number of words of that length
1613 3, 32,
1614 // Coordinates where words start and direction (0 = horizontal)
1615 0,0,1, 0,11,0, 0,12,0, 0,16,1, 1,3,0, 1,16,1, 2,16,1, 3,4,0, 4,4,1, 4,8,1, 5,7,0, 5,7,1, 6,6,0, 7,5,1, 8,4,0, 8,14,0, 9,3,1, 9,13,1, 10,12,0, 11,11,0, 11,11,1, 13,9,1, 13,14,0, 14,8,1, 14,12,1, 15,15,0, 16,0,1, 16,6,0, 16,7,0, 17,0,1, 18,0,1, 18,16,1,
1616 // End marker
1617 0
1618 };
1619
1620
1621 /*
1622 * Name: 19.07, 19 x 19
1623 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _)
1624 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _)
1625 * (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ * _ _ _)
1626 * (_ _ _ * _ _ _ _ * _ _ _ _ * * _ _ _ _)
1627 * (* * * * _ _ _ * _ _ _ _ * _ _ _ * * *)
1628 * (_ _ _ _ _ _ * _ _ _ _ * _ _ _ _ _ _ _)
1629 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ _ _ _ _)
1630 * (_ _ _ _ * _ _ _ * * _ _ _ * * _ _ _ _)
1631 * (_ _ _ _ _ _ _ * _ _ _ _ * _ _ _ _ _ _)
1632 * (* * * _ _ _ _ * _ _ _ * _ _ _ _ * * *)
1633 * (_ _ _ _ _ _ * _ _ _ _ * _ _ _ _ _ _ _)
1634 * (_ _ _ _ * * _ _ _ * * _ _ _ * _ _ _ _)
1635 * (_ _ _ _ _ _ _ _ * _ _ _ _ * _ _ _ _ _)
1636 * (_ _ _ _ _ _ _ * _ _ _ _ * _ _ _ _ _ _)
1637 * (* * * _ _ _ * _ _ _ _ * _ _ _ * * * *)
1638 * (_ _ _ _ * * _ _ _ _ * _ _ _ _ * _ _ _)
1639 * (_ _ _ * _ _ _ _ _ _ _ _ _ _ _ _ _ _ _)
1640 * (_ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _ _)
1641 * (_ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _ _)
1642 */
1643 const int g26[] = {
1644 // Width and height of crossword grid
1645 19, 19,
1646 // Number of black fields
1647 70,
1648 // Black field coordinates
1649 0,4, 0,9, 0,14, 1,4, 1,9, 1,14, 2,4, 2,9, 2,14, 3,3, 3,4, 3,16, 3,17, 3,18, 4,7, 4,11, 4,15, 5,0, 5,1, 5,6, 5,11, 5,15, 6,5, 6,10, 6,14, 7,4, 7,8, 7,9, 7,13, 8,3, 8,7, 8,12, 8,17, 8,18, 9,7, 9,11, 10,0, 10,1, 10,6, 10,11, 10,15, 11,5, 11,9, 11,10, 11,14, 12,4, 12,8, 12,13, 13,3, 13,7, 13,12, 13,17, 13,18, 14,3, 14,7, 14,11, 15,0, 15,1, 15,2, 15,14, 15,15, 16,4, 16,9, 16,14, 17,4, 17,9, 17,14, 18,4, 18,9, 18,14,
1650 // Length and number of words of that length
1651 15, 2,
1652 // Coordinates where words start and direction (0 = horizontal)
1653 0,2,0, 4,16,0,
1654 // Length and number of words of that length
1655 11, 2,
1656 // Coordinates where words start and direction (0 = horizontal)
1657 3,5,1, 15,3,1,
1658 // Length and number of words of that length
1659 8, 2,
1660 // Coordinates where words start and direction (0 = horizontal)
1661 0,12,0, 11,6,0,
1662 // Length and number of words of that length
1663 7, 8,
1664 // Coordinates where words start and direction (0 = horizontal)
1665 0,8,0, 0,13,0, 4,0,1, 9,0,1, 9,12,1, 12,5,0, 12,10,0, 14,12,1,
1666 // Length and number of words of that length
1667 6, 4,
1668 // Coordinates where words start and direction (0 = horizontal)
1669 0,5,0, 0,10,0, 13,8,0, 13,13,0,
1670 // Length and number of words of that length
1671 5, 10,
1672 // Coordinates where words start and direction (0 = horizontal)
1673 0,0,0, 0,1,0, 0,6,0, 6,0,1, 7,14,1, 11,0,1, 12,14,1, 14,12,0, 14,17,0, 14,18,0,
1674 // Length and number of words of that length
1675 4, 66,
1676 // Coordinates where words start and direction (0 = horizontal)
1677 0,0,1, 0,5,1, 0,7,0, 0,10,1, 0,11,0, 0,15,0, 0,15,1, 1,0,1, 1,5,1, 1,10,1, 1,15,1, 2,0,1, 2,5,1, 2,10,1, 2,15,1, 3,9,0, 4,3,0, 4,17,0, 4,18,0, 5,2,1, 5,7,1, 6,0,0, 6,1,0, 6,6,0, 6,6,1, 6,15,0, 6,15,1, 7,0,1, 7,5,0, 7,10,0, 7,14,0, 8,4,0, 8,8,0, 8,8,1, 8,13,0, 8,13,1, 9,3,0, 9,12,0, 9,17,0, 9,18,0, 10,2,1, 10,7,1, 11,0,0, 11,1,0, 11,15,0, 11,15,1, 12,0,1, 12,9,0, 12,9,1, 13,8,1, 13,13,1, 15,3,0, 15,7,0, 15,11,0, 16,0,1, 16,5,1, 16,10,1, 16,15,1, 17,0,1, 17,5,1, 17,10,1, 17,15,1, 18,0,1, 18,5,1, 18,10,1, 18,15,1,
1678 // Length and number of words of that length
1679 3, 40,
1680 // Coordinates where words start and direction (0 = horizontal)
1681 0,3,0, 0,16,0, 0,17,0, 0,18,0, 3,0,1, 3,14,0, 4,4,0, 4,8,1, 4,12,1, 4,16,1, 5,7,0, 5,12,1, 5,16,1, 6,11,0, 6,11,1, 7,5,1, 7,10,1, 8,0,1, 8,4,1, 8,9,0, 9,8,1, 10,7,0, 10,12,1, 10,16,1, 11,6,1, 11,11,0, 11,11,1, 12,5,1, 12,14,0, 13,0,1, 13,4,0, 13,4,1, 14,0,1, 14,4,1, 14,8,1, 15,16,1, 16,0,0, 16,1,0, 16,2,0, 16,15,0,
1682 // End marker
1683 0
1684 };
1685
1686
1687 /*
1688 * Name: 19.08, 19 x 19
1689 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1690 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1691 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1692 * (_ _ _ _ _ _ _ _ _ _ * _ _ _ _ _ _ _ _)
1693 * (* * * _ _ _ * * _ _ _ _ * _ _ _ * * *)
1694 * (_ _ _ _ _ _ _ _ * _ _ _ _ * _ _ _ _ _)
1695 * (_ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _ _)
1696 * (_ _ _ _ * _ _ _ _ _ * _ _ _ * _ _ _ _)
1697 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
1698 * (* * * _ _ _ * _ _ _ _ _ * _ _ _ * * *)
1699 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
1700 * (_ _ _ _ * _ _ _ * _ _ _ _ _ * _ _ _ _)
1701 * (_ _ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _)
1702 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ _ _ _ _)
1703 * (* * * _ _ _ * _ _ _ _ * * _ _ _ * * *)
1704 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ _ _ _ _ _)
1705 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1706 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1707 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1708 */
1709 const int g27[] = {
1710 // Width and height of crossword grid
1711 19, 19,
1712 // Number of black fields
1713 66,
1714 // Black field coordinates
1715 0,4, 0,9, 0,14, 1,4, 1,9, 1,14, 2,4, 2,9, 2,14, 3,6, 4,0, 4,1, 4,2, 4,7, 4,11, 4,12, 4,16, 4,17, 4,18, 5,8, 5,13, 6,4, 6,9, 6,14, 7,4, 7,10, 8,5, 8,11, 8,15, 9,0, 9,1, 9,2, 9,6, 9,12, 9,16, 9,17, 9,18, 10,3, 10,7, 10,13, 11,8, 11,14, 12,4, 12,9, 12,14, 13,5, 13,10, 14,0, 14,1, 14,2, 14,6, 14,7, 14,11, 14,16, 14,17, 14,18, 15,12, 16,4, 16,9, 16,14, 17,4, 17,9, 17,14, 18,4, 18,9, 18,14,
1716 // Length and number of words of that length
1717 12, 2,
1718 // Coordinates where words start and direction (0 = horizontal)
1719 3,7,1, 15,0,1,
1720 // Length and number of words of that length
1721 10, 2,
1722 // Coordinates where words start and direction (0 = horizontal)
1723 0,3,0, 9,15,0,
1724 // Length and number of words of that length
1725 8, 8,
1726 // Coordinates where words start and direction (0 = horizontal)
1727 0,5,0, 0,15,0, 5,0,1, 7,11,1, 11,0,1, 11,3,0, 11,13,0, 13,11,1,
1728 // Length and number of words of that length
1729 7, 2,
1730 // Coordinates where words start and direction (0 = horizontal)
1731 0,10,0, 12,8,0,
1732 // Length and number of words of that length
1733 6, 2,
1734 // Coordinates where words start and direction (0 = horizontal)
1735 3,0,1, 15,13,1,
1736 // Length and number of words of that length
1737 5, 20,
1738 // Coordinates where words start and direction (0 = horizontal)
1739 0,8,0, 0,13,0, 4,6,0, 5,7,0, 5,14,1, 6,8,0, 7,5,1, 7,9,0, 8,0,1, 8,6,1, 8,10,0, 9,7,1, 9,11,0, 10,8,1, 10,12,0, 10,14,1, 11,9,1, 13,0,1, 14,5,0, 14,10,0,
1740 // Length and number of words of that length
1741 4, 74,
1742 // Coordinates where words start and direction (0 = horizontal)
1743 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,5,1, 0,7,0, 0,10,1, 0,11,0, 0,12,0, 0,15,1, 0,16,0, 0,17,0, 0,18,0, 1,0,1, 1,5,1, 1,10,1, 1,15,1, 2,0,1, 2,5,1, 2,10,1, 2,15,1, 4,3,1, 5,0,0, 5,1,0, 5,2,0, 5,9,1, 5,12,0, 5,16,0, 5,17,0, 5,18,0, 6,0,1, 6,5,1, 6,10,1, 6,13,0, 6,15,1, 7,0,1, 7,14,0, 8,4,0, 9,5,0, 10,0,0, 10,1,0, 10,2,0, 10,6,0, 10,16,0, 10,17,0, 10,18,0, 11,15,1, 12,0,1, 12,5,1, 12,10,1, 12,15,1, 13,6,1, 14,12,1, 15,0,0, 15,1,0, 15,2,0, 15,6,0, 15,7,0, 15,11,0, 15,16,0, 15,17,0, 15,18,0, 16,0,1, 16,5,1, 16,10,1, 16,15,1, 17,0,1, 17,5,1, 17,10,1, 17,15,1, 18,0,1, 18,5,1, 18,10,1, 18,15,1,
1744 // Length and number of words of that length
1745 3, 20,
1746 // Coordinates where words start and direction (0 = horizontal)
1747 0,6,0, 3,4,0, 3,9,0, 3,14,0, 4,8,1, 4,13,1, 5,11,0, 8,12,1, 8,16,1, 9,3,1, 9,13,1, 10,0,1, 10,4,1, 11,7,0, 13,4,0, 13,9,0, 13,14,0, 14,3,1, 14,8,1, 16,12,0,
1748 // End marker
1749 0
1750 };
1751
1752
1753 /*
1754 * Name: 19.09, 19 x 19
1755 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1756 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1757 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1758 * (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ * _ _ _)
1759 * (* * * _ _ _ _ * _ _ _ * * _ _ _ _ * *)
1760 * (_ _ _ _ _ _ * _ _ _ * _ _ _ _ _ _ _ _)
1761 * (_ _ _ _ _ * _ _ _ * _ _ _ _ * _ _ _ _)
1762 * (_ _ _ * * _ _ _ * _ _ _ _ _ * * _ _ _)
1763 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
1764 * (* * _ _ _ _ * _ _ _ _ _ * _ _ _ _ * *)
1765 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
1766 * (_ _ _ * * _ _ _ _ _ * _ _ _ * * _ _ _)
1767 * (_ _ _ _ * _ _ _ _ * _ _ _ * _ _ _ _ _)
1768 * (_ _ _ _ _ _ _ _ * _ _ _ * _ _ _ _ _ _)
1769 * (* * _ _ _ _ * * _ _ _ * _ _ _ _ * * *)
1770 * (_ _ _ * _ _ _ _ _ _ _ _ _ _ _ _ _ _ _)
1771 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1772 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1773 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1774 */
1775 const int g28[] = {
1776 // Width and height of crossword grid
1777 19, 19,
1778 // Number of black fields
1779 66,
1780 // Black field coordinates
1781 0,4, 0,9, 0,14, 1,4, 1,9, 1,14, 2,4, 3,7, 3,11, 3,15, 4,0, 4,1, 4,2, 4,7, 4,11, 4,12, 4,16, 4,17, 4,18, 5,6, 5,10, 6,5, 6,9, 6,14, 7,4, 7,8, 7,14, 8,7, 8,13, 9,0, 9,1, 9,2, 9,6, 9,12, 9,16, 9,17, 9,18, 10,5, 10,11, 11,4, 11,10, 11,14, 12,4, 12,9, 12,13, 13,8, 13,12, 14,0, 14,1, 14,2, 14,6, 14,7, 14,11, 14,16, 14,17, 14,18, 15,3, 15,7, 15,11, 16,14, 17,4, 17,9, 17,14, 18,4, 18,9, 18,14,
1782 // Length and number of words of that length
1783 15, 2,
1784 // Coordinates where words start and direction (0 = horizontal)
1785 0,3,0, 4,15,0,
1786 // Length and number of words of that length
1787 14, 2,
1788 // Coordinates where words start and direction (0 = horizontal)
1789 2,5,1, 16,0,1,
1790 // Length and number of words of that length
1791 8, 4,
1792 // Coordinates where words start and direction (0 = horizontal)
1793 0,13,0, 5,11,1, 11,5,0, 13,0,1,
1794 // Length and number of words of that length
1795 7, 6,
1796 // Coordinates where words start and direction (0 = horizontal)
1797 0,8,0, 3,0,1, 8,0,1, 10,12,1, 12,10,0, 15,12,1,
1798 // Length and number of words of that length
1799 6, 4,
1800 // Coordinates where words start and direction (0 = horizontal)
1801 0,5,0, 5,0,1, 13,13,0, 13,13,1,
1802 // Length and number of words of that length
1803 5, 18,
1804 // Coordinates where words start and direction (0 = horizontal)
1805 0,6,0, 0,10,0, 5,11,0, 6,0,1, 6,10,0, 7,9,0, 7,9,1, 8,8,0, 8,8,1, 8,14,1, 9,7,0, 9,7,1, 10,0,1, 10,6,1, 11,5,1, 12,14,1, 14,8,0, 14,12,0,
1806 // Length and number of words of that length
1807 4, 62,
1808 // Coordinates where words start and direction (0 = horizontal)
1809 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,5,1, 0,10,1, 0,12,0, 0,15,1, 0,16,0, 0,17,0, 0,18,0, 1,0,1, 1,5,1, 1,10,1, 1,15,1, 2,0,1, 2,9,0, 2,14,0, 3,4,0, 4,3,1, 5,0,0, 5,1,0, 5,2,0, 5,12,0, 5,16,0, 5,17,0, 5,18,0, 6,10,1, 6,15,1, 7,0,1, 7,15,1, 10,0,0, 10,1,0, 10,2,0, 10,6,0, 10,16,0, 10,17,0, 10,18,0, 11,0,1, 11,15,1, 12,0,1, 12,5,1, 12,14,0, 13,4,0, 13,9,0, 14,12,1, 15,0,0, 15,1,0, 15,2,0, 15,6,0, 15,16,0, 15,17,0, 15,18,0, 16,15,1, 17,0,1, 17,5,1, 17,10,1, 17,15,1, 18,0,1, 18,5,1, 18,10,1, 18,15,1,
1810 // Length and number of words of that length
1811 3, 32,
1812 // Coordinates where words start and direction (0 = horizontal)
1813 0,7,0, 0,11,0, 0,15,0, 3,8,1, 3,12,1, 3,16,1, 4,8,1, 4,13,1, 5,7,0, 5,7,1, 6,6,0, 6,6,1, 7,5,0, 7,5,1, 8,4,0, 8,14,0, 9,3,1, 9,13,0, 9,13,1, 10,12,0, 11,11,0, 11,11,1, 12,10,1, 13,9,1, 14,3,1, 14,8,1, 15,0,1, 15,4,1, 15,8,1, 16,3,0, 16,7,0, 16,11,0,
1814 // End marker
1815 0
1816 };
1817
1818
1819 /*
1820 * Name: 19.10, 19 x 19
1821 * (_ _ _ * * _ _ _ _ * _ _ _ _ * _ _ _ _)
1822 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1823 * (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _)
1824 * (_ _ _ _ _ _ _ * _ _ _ _ * * _ _ _ _ *)
1825 * (* * * _ _ _ * _ _ _ _ * _ _ _ _ * * *)
1826 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ _ _ _ _)
1827 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * * _ _ _)
1828 * (_ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _ _)
1829 * (* _ _ _ _ _ _ * _ _ _ _ * * _ _ _ _ _)
1830 * (* * * _ _ _ _ _ _ _ _ _ _ _ _ _ * * *)
1831 * (_ _ _ _ _ * * _ _ _ _ * _ _ _ _ _ _ *)
1832 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _)
1833 * (_ _ _ * * _ _ _ _ * _ _ _ _ * _ _ _ _)
1834 * (_ _ _ _ _ _ _ _ * _ _ _ _ * _ _ _ _ _)
1835 * (* * * _ _ _ _ * _ _ _ _ * _ _ _ * * *)
1836 * (* _ _ _ _ * * _ _ _ _ * _ _ _ _ _ _ _)
1837 * (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _)
1838 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
1839 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * * _ _ _)
1840 */
1841 const int g29[] = {
1842 // Width and height of crossword grid
1843 19, 19,
1844 // Number of black fields
1845 70,
1846 // Black field coordinates
1847 0,4, 0,8, 0,9, 0,14, 0,15, 1,4, 1,9, 1,14, 2,4, 2,9, 2,14, 3,0, 3,7, 3,12, 4,0, 4,1, 4,6, 4,11, 4,12, 4,17, 4,18, 5,5, 5,10, 5,15, 6,4, 6,10, 6,15, 7,3, 7,8, 7,14, 8,7, 8,13, 9,0, 9,1, 9,6, 9,12, 9,17, 9,18, 10,5, 10,11, 11,4, 11,10, 11,15, 12,3, 12,8, 12,14, 13,3, 13,8, 13,13, 14,0, 14,1, 14,6, 14,7, 14,12, 14,17, 14,18, 15,6, 15,11, 15,18, 16,4, 16,9, 16,14, 17,4, 17,9, 17,14, 18,3, 18,4, 18,9, 18,10, 18,14,
1848 // Length and number of words of that length
1849 19, 2,
1850 // Coordinates where words start and direction (0 = horizontal)
1851 0,2,0, 0,16,0,
1852 // Length and number of words of that length
1853 13, 1,
1854 // Coordinates where words start and direction (0 = horizontal)
1855 3,9,0,
1856 // Length and number of words of that length
1857 8, 2,
1858 // Coordinates where words start and direction (0 = horizontal)
1859 0,13,0, 11,5,0,
1860 // Length and number of words of that length
1861 7, 4,
1862 // Coordinates where words start and direction (0 = horizontal)
1863 0,3,0, 8,0,1, 10,12,1, 12,15,0,
1864 // Length and number of words of that length
1865 6, 6,
1866 // Coordinates where words start and direction (0 = horizontal)
1867 1,8,0, 3,1,1, 3,13,1, 12,10,0, 15,0,1, 15,12,1,
1868 // Length and number of words of that length
1869 5, 17,
1870 // Coordinates where words start and direction (0 = horizontal)
1871 0,5,0, 0,10,0, 5,0,1, 5,11,0, 6,5,1, 7,9,1, 8,8,1, 8,14,1, 9,7,0, 9,7,1, 10,0,1, 10,6,1, 11,5,1, 12,9,1, 13,14,1, 14,8,0, 14,13,0,
1872 // Length and number of words of that length
1873 4, 78,
1874 // Coordinates where words start and direction (0 = horizontal)
1875 0,0,1, 0,1,0, 0,6,0, 0,10,1, 0,11,0, 0,17,0, 0,18,0, 1,0,1, 1,5,1, 1,10,1, 1,15,0, 1,15,1, 2,0,1, 2,5,1, 2,10,1, 2,15,1, 3,8,1, 3,14,0, 4,2,1, 4,7,0, 4,7,1, 4,13,1, 5,0,0, 5,1,0, 5,6,0, 5,6,1, 5,11,1, 5,12,0, 5,17,0, 5,18,0, 6,0,1, 6,5,0, 6,11,1, 7,4,0, 7,4,1, 7,10,0, 7,15,0, 7,15,1, 8,3,0, 8,8,0, 8,14,0, 9,2,1, 9,13,0, 9,13,1, 10,0,0, 10,1,0, 10,6,0, 10,12,0, 10,17,0, 10,18,0, 11,0,1, 11,11,0, 11,11,1, 12,4,0, 12,4,1, 12,15,1, 13,4,1, 13,9,1, 14,2,1, 14,3,0, 14,8,1, 14,13,1, 15,0,0, 15,1,0, 15,7,0, 15,7,1, 15,12,0, 15,17,0, 16,0,1, 16,5,1, 16,10,1, 16,15,1, 17,0,1, 17,5,1, 17,10,1, 17,15,1, 18,5,1, 18,15,1,
1876 // Length and number of words of that length
1877 3, 18,
1878 // Coordinates where words start and direction (0 = horizontal)
1879 0,0,0, 0,5,1, 0,7,0, 0,12,0, 0,16,1, 3,4,0, 5,16,1, 6,16,1, 7,0,1, 11,16,1, 12,0,1, 13,0,1, 13,14,0, 16,6,0, 16,11,0, 16,18,0, 18,0,1, 18,11,1,
1880 // End marker
1881 0
1882 };
1883
1884
1885 /*
1886 * Name: 21.01, 21 x 21
1887 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _ _ _)
1888 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _ _ _)
1889 * (_ _ _ _ _ _ _ _ _ _ * _ _ _ _ _ _ _ _ _ _)
1890 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
1891 * (* * * _ _ _ _ * _ _ _ _ _ * _ _ _ _ * * *)
1892 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ _)
1893 * (_ _ _ _ _ * _ _ _ _ _ _ _ _ _ _ _ * _ _ _)
1894 * (_ _ _ _ * _ _ _ _ * * * _ _ _ _ * _ _ _ _)
1895 * (_ _ _ * _ _ _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
1896 * (_ _ _ _ _ _ _ _ * _ _ _ _ * * _ _ _ _ _ _)
1897 * (* * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * *)
1898 * (_ _ _ _ _ _ * * _ _ _ _ * _ _ _ _ _ _ _ _)
1899 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ _ _ * _ _ _)
1900 * (_ _ _ _ * _ _ _ _ * * * _ _ _ _ * _ _ _ _)
1901 * (_ _ _ * _ _ _ _ _ _ _ _ _ _ _ * _ _ _ _ _)
1902 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
1903 * (* * * _ _ _ _ * _ _ _ _ _ * _ _ _ _ * * *)
1904 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ _)
1905 * (_ _ _ _ _ _ _ _ _ _ * _ _ _ _ _ _ _ _ _ _)
1906 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _ _)
1907 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _ _)
1908 */
1909 const int g30[] = {
1910 // Width and height of crossword grid
1911 21, 21,
1912 // Number of black fields
1913 68,
1914 // Black field coordinates
1915 0,4, 0,10, 0,16, 1,4, 1,10, 1,16, 2,4, 2,16, 3,8, 3,14, 4,0, 4,1, 4,7, 4,13, 5,6, 5,19, 5,20, 6,5, 6,11, 6,17, 7,4, 7,10, 7,11, 7,12, 7,16, 8,3, 8,9, 8,15, 9,7, 9,13, 10,0, 10,1, 10,2, 10,7, 10,13, 10,18, 10,19, 10,20, 11,7, 11,13, 12,5, 12,11, 12,17, 13,4, 13,8, 13,9, 13,10, 13,16, 14,3, 14,9, 14,15, 15,0, 15,1, 15,14, 16,7, 16,13, 16,19, 16,20, 17,6, 17,12, 18,4, 18,16, 19,4, 19,10, 19,16, 20,4, 20,10, 20,16,
1916 // Length and number of words of that length
1917 12, 2,
1918 // Coordinates where words start and direction (0 = horizontal)
1919 5,7,1, 15,2,1,
1920 // Length and number of words of that length
1921 11, 4,
1922 // Coordinates where words start and direction (0 = horizontal)
1923 2,5,1, 4,14,0, 6,6,0, 18,5,1,
1924 // Length and number of words of that length
1925 10, 4,
1926 // Coordinates where words start and direction (0 = horizontal)
1927 0,2,0, 0,18,0, 11,2,0, 11,18,0,
1928 // Length and number of words of that length
1929 9, 2,
1930 // Coordinates where words start and direction (0 = horizontal)
1931 4,8,0, 8,12,0,
1932 // Length and number of words of that length
1933 8, 8,
1934 // Coordinates where words start and direction (0 = horizontal)
1935 0,3,0, 0,9,0, 0,15,0, 3,0,1, 13,5,0, 13,11,0, 13,17,0, 17,13,1,
1936 // Length and number of words of that length
1937 7, 8,
1938 // Coordinates where words start and direction (0 = horizontal)
1939 0,12,0, 4,14,1, 9,0,1, 9,14,1, 11,0,1, 11,14,1, 14,8,0, 16,0,1,
1940 // Length and number of words of that length
1941 6, 10,
1942 // Coordinates where words start and direction (0 = horizontal)
1943 0,5,0, 0,11,0, 0,17,0, 3,15,1, 5,0,1, 15,3,0, 15,9,0, 15,15,0, 15,15,1, 17,0,1,
1944 // Length and number of words of that length
1945 5, 50,
1946 // Coordinates where words start and direction (0 = horizontal)
1947 0,5,1, 0,6,0, 0,11,1, 0,19,0, 0,20,0, 1,5,1, 1,11,1, 2,10,0, 3,9,1, 4,2,1, 4,8,1, 5,0,0, 5,1,0, 6,0,1, 6,6,1, 6,12,1, 7,5,0, 7,5,1, 7,17,0, 8,4,0, 8,4,1, 8,10,0, 8,10,1, 8,16,0, 8,16,1, 9,3,0, 9,8,1, 9,15,0, 10,8,1, 11,8,1, 11,19,0, 11,20,0, 12,0,1, 12,6,1, 12,12,1, 13,11,1, 14,4,1, 14,10,0, 14,10,1, 14,16,1, 16,0,0, 16,1,0, 16,8,1, 16,14,0, 16,14,1, 17,7,1, 19,5,1, 19,11,1, 20,5,1, 20,11,1,
1948 // Length and number of words of that length
1949 4, 40,
1950 // Coordinates where words start and direction (0 = horizontal)
1951 0,0,0, 0,0,1, 0,1,0, 0,7,0, 0,13,0, 0,17,1, 1,0,1, 1,17,1, 2,0,1, 2,17,1, 3,4,0, 3,16,0, 5,7,0, 5,13,0, 6,19,0, 6,20,0, 7,0,1, 7,17,1, 8,11,0, 9,9,0, 10,3,1, 10,14,1, 11,0,0, 11,1,0, 12,7,0, 12,13,0, 13,0,1, 13,17,1, 14,4,0, 14,16,0, 17,7,0, 17,13,0, 17,19,0, 17,20,0, 18,0,1, 18,17,1, 19,0,1, 19,17,1, 20,0,1, 20,17,1,
1952 // Length and number of words of that length
1953 3, 10,
1954 // Coordinates where words start and direction (0 = horizontal)
1955 0,8,0, 0,14,0, 6,18,1, 7,13,1, 8,0,1, 12,18,1, 13,5,1, 14,0,1, 18,6,0, 18,12,0,
1956 // End marker
1957 0
1958 };
1959
1960
1961 /*
1962 * Name: 21.02, 21 x 21
1963 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
1964 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
1965 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
1966 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ _ _)
1967 * (* * * _ _ _ _ _ * _ _ _ * _ _ _ _ _ * * *)
1968 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ * _ _ _)
1969 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _)
1970 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _ _)
1971 * (_ _ _ _ * _ _ _ _ * _ _ _ _ _ _ * _ _ _ _)
1972 * (_ _ _ * _ _ _ _ * _ _ _ _ _ _ _ _ _ _ _ _)
1973 * (* * * _ _ _ _ * _ _ _ _ _ * _ _ _ _ * * *)
1974 * (_ _ _ _ _ _ _ _ _ _ _ _ * _ _ _ _ * _ _ _)
1975 * (_ _ _ _ * _ _ _ _ _ _ * _ _ _ _ * _ _ _ _)
1976 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _ _)
1977 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _)
1978 * (_ _ _ * _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
1979 * (* * * _ _ _ _ _ * _ _ _ * _ _ _ _ _ * * *)
1980 * (_ _ _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
1981 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
1982 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
1983 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
1984 */
1985 const int g31[] = {
1986 // Width and height of crossword grid
1987 21, 21,
1988 // Number of black fields
1989 72,
1990 // Black field coordinates
1991 0,4, 0,10, 0,16, 1,4, 1,10, 1,16, 2,4, 2,10, 2,16, 3,9, 3,15, 4,0, 4,1, 4,2, 4,8, 4,12, 4,18, 4,19, 4,20, 5,3, 5,7, 5,13, 6,6, 6,14, 7,5, 7,10, 7,15, 8,4, 8,9, 8,16, 9,8, 9,17, 10,0, 10,1, 10,2, 10,7, 10,13, 10,18, 10,19, 10,20, 11,3, 11,12, 12,4, 12,11, 12,16, 13,5, 13,10, 13,15, 14,6, 14,14, 15,7, 15,13, 15,17, 16,0, 16,1, 16,2, 16,8, 16,12, 16,18, 16,19, 16,20, 17,5, 17,11, 18,4, 18,10, 18,16, 19,4, 19,10, 19,16, 20,4, 20,10, 20,16,
1992 // Length and number of words of that length
1993 12, 2,
1994 // Coordinates where words start and direction (0 = horizontal)
1995 0,11,0, 9,9,0,
1996 // Length and number of words of that length
1997 9, 4,
1998 // Coordinates where words start and direction (0 = horizontal)
1999 0,17,0, 3,0,1, 12,3,0, 17,12,1,
2000 // Length and number of words of that length
2001 8, 4,
2002 // Coordinates where words start and direction (0 = horizontal)
2003 9,0,1, 9,9,1, 11,4,1, 11,13,1,
2004 // Length and number of words of that length
2005 7, 8,
2006 // Coordinates where words start and direction (0 = horizontal)
2007 0,5,0, 5,14,1, 6,7,1, 7,6,0, 7,14,0, 14,7,1, 14,15,0, 15,0,1,
2008 // Length and number of words of that length
2009 6, 12,
2010 // Coordinates where words start and direction (0 = horizontal)
2011 0,6,0, 0,14,0, 5,12,0, 6,0,1, 6,15,1, 8,10,1, 10,8,0, 12,5,1, 14,0,1, 14,15,1, 15,6,0, 15,14,0,
2012 // Length and number of words of that length
2013 5, 54,
2014 // Coordinates where words start and direction (0 = horizontal)
2015 0,3,0, 0,5,1, 0,7,0, 0,11,1, 0,13,0, 1,5,1, 1,11,1, 2,5,1, 2,11,1, 3,4,0, 3,10,1, 3,16,0, 3,16,1, 4,3,1, 4,13,1, 5,0,0, 5,1,0, 5,2,0, 5,8,1, 5,18,0, 5,19,0, 5,20,0, 6,3,0, 7,0,1, 7,16,1, 8,5,0, 8,10,0, 8,15,0, 10,8,1, 10,17,0, 11,0,0, 11,1,0, 11,2,0, 11,18,0, 11,19,0, 11,20,0, 13,0,1, 13,4,0, 13,16,0, 13,16,1, 15,8,1, 16,3,1, 16,7,0, 16,13,0, 16,13,1, 16,17,0, 17,0,1, 17,6,1, 18,5,1, 18,11,1, 19,5,1, 19,11,1, 20,5,1, 20,11,1,
2016 // Length and number of words of that length
2017 4, 50,
2018 // Coordinates where words start and direction (0 = horizontal)
2019 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,8,0, 0,12,0, 0,17,1, 0,18,0, 0,19,0, 0,20,0, 1,0,1, 1,17,1, 2,0,1, 2,17,1, 3,10,0, 4,9,0, 5,8,0, 6,7,0, 6,13,0, 7,6,1, 7,11,1, 8,0,1, 8,5,1, 8,17,1, 10,3,1, 10,14,1, 11,7,0, 11,13,0, 12,0,1, 12,12,0, 12,12,1, 12,17,1, 13,6,1, 13,11,0, 13,11,1, 14,10,0, 17,0,0, 17,1,0, 17,2,0, 17,8,0, 17,12,0, 17,18,0, 17,19,0, 17,20,0, 18,0,1, 18,17,1, 19,0,1, 19,17,1, 20,0,1, 20,17,1,
2020 // Length and number of words of that length
2021 3, 16,
2022 // Coordinates where words start and direction (0 = horizontal)
2023 0,9,0, 0,15,0, 4,9,1, 4,15,0, 5,0,1, 5,4,1, 9,4,0, 9,16,0, 9,18,1, 11,0,1, 14,5,0, 15,14,1, 15,18,1, 16,9,1, 18,5,0, 18,11,0,
2024 // End marker
2025 0
2026 };
2027
2028
2029 /*
2030 * Name: 21.03, 21 x 21
2031 * (_ _ _ _ * * _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2032 * (_ _ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2033 * (_ _ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2034 * (_ _ _ * _ _ _ _ _ * * _ _ _ _ _ _ _ _ * *)
2035 * (_ _ _ _ _ * _ _ _ _ _ * * _ _ _ _ * _ _ _)
2036 * (* * _ _ _ * _ _ _ _ _ * _ _ _ _ * * _ _ _)
2037 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ _ * _ _ _ _ _)
2038 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ * _ _ _ _ _ _)
2039 * (_ _ _ _ * _ _ _ * _ _ _ _ * _ _ _ _ _ _ *)
2040 * (_ _ _ _ * _ _ _ _ * _ _ _ _ _ _ _ _ * * *)
2041 * (_ _ _ * _ _ _ _ _ _ * _ _ _ _ _ _ * _ _ _)
2042 * (* * * _ _ _ _ _ _ _ _ * _ _ _ _ * _ _ _ _)
2043 * (* _ _ _ _ _ _ * _ _ _ _ * _ _ _ * _ _ _ _)
2044 * (_ _ _ _ _ _ * _ _ _ _ _ _ * _ _ _ _ _ _ _)
2045 * (_ _ _ _ _ * _ _ _ _ _ _ _ _ * _ _ _ _ _ _)
2046 * (_ _ _ * * _ _ _ _ * _ _ _ _ _ * _ _ _ * *)
2047 * (_ _ _ * _ _ _ _ * * _ _ _ _ _ * _ _ _ _ _)
2048 * (* * _ _ _ _ _ _ _ _ * * _ _ _ _ _ * _ _ _)
2049 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _ _)
2050 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _ _)
2051 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ * * _ _ _ _)
2052 */
2053 const int g32[] = {
2054 // Width and height of crossword grid
2055 21, 21,
2056 // Number of black fields
2057 79,
2058 // Black field coordinates
2059 0,5, 0,11, 0,12, 0,17, 1,5, 1,11, 1,17, 2,11, 3,3, 3,10, 3,15, 3,16, 4,0, 4,1, 4,2, 4,8, 4,9, 4,15, 5,0, 5,4, 5,5, 5,14, 5,18, 5,19, 5,20, 6,6, 6,13, 7,7, 7,12, 8,8, 8,16, 9,0, 9,1, 9,2, 9,3, 9,9, 9,15, 9,16, 10,3, 10,10, 10,17, 11,4, 11,5, 11,11, 11,17, 11,18, 11,19, 11,20, 12,4, 12,12, 13,8, 13,13, 14,7, 14,14, 15,0, 15,1, 15,2, 15,6, 15,15, 15,16, 15,20, 16,5, 16,11, 16,12, 16,18, 16,19, 16,20, 17,4, 17,5, 17,10, 17,17, 18,9, 19,3, 19,9, 19,15, 20,3, 20,8, 20,9, 20,15,
2060 // Length and number of words of that length
2061 11, 2,
2062 // Coordinates where words start and direction (0 = horizontal)
2063 2,0,1, 18,10,1,
2064 // Length and number of words of that length
2065 9, 2,
2066 // Coordinates where words start and direction (0 = horizontal)
2067 2,12,1, 18,0,1,
2068 // Length and number of words of that length
2069 8, 12,
2070 // Coordinates where words start and direction (0 = horizontal)
2071 2,17,0, 3,11,0, 5,6,1, 6,14,0, 7,6,0, 7,13,1, 8,0,1, 10,9,0, 11,3,0, 12,13,1, 13,0,1, 15,7,1,
2072 // Length and number of words of that length
2073 7, 8,
2074 // Coordinates where words start and direction (0 = horizontal)
2075 0,7,0, 6,14,1, 7,0,1, 8,9,1, 12,5,1, 13,14,1, 14,0,1, 14,13,0,
2076 // Length and number of words of that length
2077 6, 18,
2078 // Coordinates where words start and direction (0 = horizontal)
2079 0,6,0, 0,13,0, 1,12,0, 3,4,1, 4,10,0, 6,0,1, 6,7,1, 7,13,0, 8,7,0, 10,4,1, 10,11,1, 11,10,0, 14,8,0, 14,8,1, 14,15,1, 15,7,0, 15,14,0, 17,11,1,
2080 // Length and number of words of that length
2081 5, 42,
2082 // Coordinates where words start and direction (0 = horizontal)
2083 0,0,1, 0,4,0, 0,6,1, 0,14,0, 0,18,0, 0,19,0, 0,20,0, 1,0,1, 1,6,1, 1,12,1, 4,3,0, 4,3,1, 4,10,1, 4,16,1, 6,4,0, 6,5,0, 6,18,0, 6,19,0, 6,20,0, 9,4,1, 9,10,1, 10,0,0, 10,1,0, 10,2,0, 10,15,0, 10,16,0, 11,6,1, 11,12,1, 12,17,0, 16,0,0, 16,0,1, 16,1,0, 16,2,0, 16,6,0, 16,6,1, 16,13,1, 16,16,0, 19,4,1, 19,10,1, 19,16,1, 20,10,1, 20,16,1,
2084 // Length and number of words of that length
2085 4, 34,
2086 // Coordinates where words start and direction (0 = horizontal)
2087 0,0,0, 0,1,0, 0,2,0, 0,8,0, 0,9,0, 0,13,1, 3,11,1, 3,17,1, 4,16,0, 5,1,0, 5,2,0, 5,9,0, 5,15,0, 7,8,1, 8,12,0, 8,17,1, 9,8,0, 9,17,1, 11,0,1, 12,0,1, 12,5,0, 12,11,0, 12,18,0, 12,19,0, 13,4,0, 13,9,1, 17,0,1, 17,6,1, 17,11,0, 17,12,0, 17,18,0, 17,19,0, 17,20,0, 20,4,1,
2088 // Length and number of words of that length
2089 3, 26,
2090 // Coordinates where words start and direction (0 = horizontal)
2091 0,3,0, 0,10,0, 0,15,0, 0,16,0, 0,18,1, 1,18,1, 2,5,0, 3,0,1, 5,1,1, 5,8,0, 5,15,1, 6,0,0, 10,0,1, 10,18,1, 12,20,0, 13,12,0, 15,3,1, 15,17,1, 16,15,0, 17,18,1, 18,4,0, 18,5,0, 18,10,0, 18,17,0, 19,0,1, 20,0,1,
2092 // End marker
2093 0
2094 };
2095
2096
2097 /*
2098 * Name: 21.04, 21 x 21
2099 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
2100 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
2101 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
2102 * (_ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _)
2103 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2104 * (_ _ _ _ _ * _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2105 * (_ _ _ _ _ _ _ _ * _ _ _ * _ _ _ _ _ _ _ _)
2106 * (* * * _ _ _ _ * _ _ _ _ _ * _ _ _ _ * * *)
2107 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _)
2108 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _)
2109 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2110 * (_ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2111 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _)
2112 * (* * * _ _ _ _ * _ _ _ _ _ * _ _ _ _ * * *)
2113 * (_ _ _ _ _ _ _ _ * _ _ _ * _ _ _ _ _ _ _ _)
2114 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ * _ _ _ _ _)
2115 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2116 * (_ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _)
2117 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
2118 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
2119 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
2120 */
2121 const int g33[] = {
2122 // Width and height of crossword grid
2123 21, 21,
2124 // Number of black fields
2125 63,
2126 // Black field coordinates
2127 0,7, 0,13, 1,7, 1,13, 2,7, 2,13, 3,3, 3,11, 3,17, 4,4, 4,10, 4,16, 5,5, 5,9, 5,15, 6,8, 6,12, 7,0, 7,1, 7,2, 7,7, 7,13, 7,18, 7,19, 7,20, 8,6, 8,14, 9,5, 9,11, 9,17, 10,4, 10,10, 10,16, 11,3, 11,9, 11,15, 12,6, 12,14, 13,0, 13,1, 13,2, 13,7, 13,13, 13,18, 13,19, 13,20, 14,8, 14,12, 15,5, 15,11, 15,15, 16,4, 16,10, 16,16, 17,3, 17,9, 17,17, 18,7, 18,13, 19,7, 19,13, 20,7, 20,13,
2128 // Length and number of words of that length
2129 8, 8,
2130 // Coordinates where words start and direction (0 = horizontal)
2131 0,6,0, 0,14,0, 6,0,1, 6,13,1, 13,6,0, 13,14,0, 14,0,1, 14,13,1,
2132 // Length and number of words of that length
2133 7, 32,
2134 // Coordinates where words start and direction (0 = horizontal)
2135 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,14,1, 0,18,0, 0,19,0, 0,20,0, 1,0,1, 1,14,1, 2,0,1, 2,14,1, 3,4,1, 4,3,0, 7,8,0, 7,12,0, 8,7,1, 10,17,0, 12,7,1, 14,0,0, 14,1,0, 14,2,0, 14,18,0, 14,19,0, 14,20,0, 17,10,1, 18,0,1, 18,14,1, 19,0,1, 19,14,1, 20,0,1, 20,14,1,
2136 // Length and number of words of that length
2137 6, 8,
2138 // Coordinates where words start and direction (0 = horizontal)
2139 0,8,0, 0,12,0, 8,0,1, 8,15,1, 12,0,1, 12,15,1, 15,8,0, 15,12,0,
2140 // Length and number of words of that length
2141 5, 56,
2142 // Coordinates where words start and direction (0 = horizontal)
2143 0,5,0, 0,8,1, 0,9,0, 0,15,0, 1,8,1, 2,8,1, 3,12,1, 4,5,1, 4,11,0, 4,11,1, 4,17,0, 5,0,1, 5,4,0, 5,10,0, 5,10,1, 5,16,0, 5,16,1, 6,9,0, 6,15,0, 7,8,1, 8,0,0, 8,1,0, 8,2,0, 8,7,0, 8,13,0, 8,18,0, 8,19,0, 8,20,0, 9,0,1, 9,6,1, 9,12,1, 10,5,0, 10,5,1, 10,11,0, 10,11,1, 11,4,0, 11,4,1, 11,10,0, 11,10,1, 11,16,0, 11,16,1, 12,3,0, 12,9,0, 13,8,1, 15,0,1, 15,6,1, 15,16,1, 16,5,0, 16,5,1, 16,11,0, 16,11,1, 16,15,0, 17,4,1, 18,8,1, 19,8,1, 20,8,1,
2144 // Length and number of words of that length
2145 4, 20,
2146 // Coordinates where words start and direction (0 = horizontal)
2147 0,4,0, 0,10,0, 0,16,0, 3,7,0, 3,13,0, 4,0,1, 4,17,1, 7,3,1, 7,14,1, 10,0,1, 10,17,1, 13,3,1, 13,14,1, 14,7,0, 14,13,0, 16,0,1, 16,17,1, 17,4,0, 17,10,0, 17,16,0,
2148 // Length and number of words of that length
2149 3, 20,
2150 // Coordinates where words start and direction (0 = horizontal)
2151 0,3,0, 0,11,0, 0,17,0, 3,0,1, 3,18,1, 5,6,1, 6,5,0, 6,9,1, 9,6,0, 9,14,0, 9,18,1, 11,0,1, 12,15,0, 14,9,1, 15,12,1, 17,0,1, 17,18,1, 18,3,0, 18,9,0, 18,17,0,
2152 // End marker
2153 0
2154 };
2155
2156
2157 /*
2158 * Name: 21.05, 21 x 21
2159 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _)
2160 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _)
2161 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _)
2162 * (_ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _)
2163 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2164 * (_ _ _ _ _ * _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2165 * (* * * _ _ _ * * * _ _ _ * * * _ _ _ * * *)
2166 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _)
2167 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _)
2168 * (_ _ _ * _ _ _ _ _ _ * _ _ _ _ * _ _ _ _ _)
2169 * (_ _ _ _ * _ _ _ _ * * * _ _ _ _ * _ _ _ _)
2170 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ _ _ * _ _ _)
2171 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _)
2172 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _)
2173 * (* * * _ _ _ * * * _ _ _ * * * _ _ _ * * *)
2174 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ * _ _ _ _ _)
2175 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2176 * (_ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _)
2177 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _)
2178 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _)
2179 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _)
2180 */
2181 const int g34[] = {
2182 // Width and height of crossword grid
2183 21, 21,
2184 // Number of black fields
2185 73,
2186 // Black field coordinates
2187 0,6, 0,14, 1,6, 1,14, 2,6, 2,14, 3,3, 3,9, 3,17, 4,4, 4,10, 4,16, 5,5, 5,11, 5,15, 6,0, 6,1, 6,2, 6,6, 6,7, 6,8, 6,12, 6,13, 6,14, 6,18, 6,19, 6,20, 7,6, 7,14, 8,6, 8,14, 9,5, 9,10, 9,17, 10,4, 10,9, 10,10, 10,11, 10,16, 11,3, 11,10, 11,15, 12,6, 12,14, 13,6, 13,14, 14,0, 14,1, 14,2, 14,6, 14,7, 14,8, 14,12, 14,13, 14,14, 14,18, 14,19, 14,20, 15,5, 15,9, 15,15, 16,4, 16,10, 16,16, 17,3, 17,11, 17,17, 18,6, 18,14, 19,6, 19,14, 20,6, 20,14,
2188 // Length and number of words of that length
2189 7, 24,
2190 // Coordinates where words start and direction (0 = horizontal)
2191 0,7,1, 1,7,1, 2,7,1, 3,10,1, 4,3,0, 7,0,0, 7,1,0, 7,2,0, 7,7,0, 7,7,1, 7,8,0, 7,12,0, 7,13,0, 7,18,0, 7,19,0, 7,20,0, 8,7,1, 10,17,0, 12,7,1, 13,7,1, 17,4,1, 18,7,1, 19,7,1, 20,7,1,
2192 // Length and number of words of that length
2193 6, 44,
2194 // Coordinates where words start and direction (0 = horizontal)
2195 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,7,0, 0,8,0, 0,12,0, 0,13,0, 0,15,1, 0,18,0, 0,19,0, 0,20,0, 1,0,1, 1,15,1, 2,0,1, 2,15,1, 4,9,0, 7,0,1, 7,15,1, 8,0,1, 8,15,1, 9,11,1, 11,4,1, 11,11,0, 12,0,1, 12,15,1, 13,0,1, 13,15,1, 15,0,0, 15,1,0, 15,2,0, 15,7,0, 15,8,0, 15,12,0, 15,13,0, 15,18,0, 15,19,0, 15,20,0, 18,0,1, 18,15,1, 19,0,1, 19,15,1, 20,0,1, 20,15,1,
2196 // Length and number of words of that length
2197 5, 28,
2198 // Coordinates where words start and direction (0 = horizontal)
2199 0,5,0, 0,11,0, 0,15,0, 3,4,1, 4,5,1, 4,11,1, 4,17,0, 5,0,1, 5,4,0, 5,6,1, 5,16,0, 5,16,1, 6,15,0, 9,0,1, 10,5,0, 11,4,0, 11,16,0, 11,16,1, 12,3,0, 15,0,1, 15,10,1, 15,16,1, 16,5,0, 16,5,1, 16,9,0, 16,11,1, 16,15,0, 17,12,1,
2200 // Length and number of words of that length
2201 4, 20,
2202 // Coordinates where words start and direction (0 = horizontal)
2203 0,4,0, 0,10,0, 0,16,0, 4,0,1, 4,17,1, 5,10,0, 6,11,0, 9,6,1, 10,0,1, 10,5,1, 10,12,1, 10,17,1, 11,9,0, 11,11,1, 12,10,0, 16,0,1, 16,17,1, 17,4,0, 17,10,0, 17,16,0,
2204 // Length and number of words of that length
2205 3, 28,
2206 // Coordinates where words start and direction (0 = horizontal)
2207 0,3,0, 0,9,0, 0,17,0, 3,0,1, 3,6,0, 3,14,0, 3,18,1, 5,12,1, 6,3,1, 6,5,0, 6,9,1, 6,15,1, 9,6,0, 9,14,0, 9,18,1, 11,0,1, 12,15,0, 14,3,1, 14,9,1, 14,15,1, 15,6,0, 15,6,1, 15,14,0, 17,0,1, 17,18,1, 18,3,0, 18,11,0, 18,17,0,
2208 // End marker
2209 0
2210 };
2211
2212
2213 /*
2214 * Name: 21.06, 21 x 21
2215 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2216 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2217 * (_ _ _ _ * _ _ _ _ _ _ _ _ _ _ _ * _ _ _ _)
2218 * (_ _ _ _ _ _ _ _ * _ _ _ * _ _ _ _ _ _ _ _)
2219 * (* * * _ _ _ _ * _ _ _ _ _ * _ _ _ _ * * *)
2220 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _)
2221 * (_ _ _ _ _ * _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2222 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2223 * (_ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _)
2224 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
2225 * (* * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * *)
2226 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ _)
2227 * (_ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _)
2228 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2229 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ * _ _ _ _ _)
2230 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _)
2231 * (* * * _ _ _ _ * _ _ _ _ _ * _ _ _ _ * * *)
2232 * (_ _ _ _ _ _ _ _ * _ _ _ * _ _ _ _ _ _ _ _)
2233 * (_ _ _ _ * _ _ _ _ _ _ _ _ _ _ _ * _ _ _ _)
2234 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2235 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2236 */
2237 const int g35[] = {
2238 // Width and height of crossword grid
2239 21, 21,
2240 // Number of black fields
2241 68,
2242 // Black field coordinates
2243 0,4, 0,10, 0,16, 1,4, 1,10, 1,16, 2,4, 2,16, 3,8, 3,12, 4,0, 4,1, 4,2, 4,7, 4,13, 4,18, 4,19, 4,20, 5,6, 5,14, 6,5, 6,11, 6,15, 7,4, 7,10, 7,16, 8,3, 8,9, 8,17, 9,6, 9,12, 10,0, 10,1, 10,7, 10,13, 10,19, 10,20, 11,8, 11,14, 12,3, 12,11, 12,17, 13,4, 13,10, 13,16, 14,5, 14,9, 14,15, 15,6, 15,14, 16,0, 16,1, 16,2, 16,7, 16,13, 16,18, 16,19, 16,20, 17,8, 17,12, 18,4, 18,16, 19,4, 19,10, 19,16, 20,4, 20,10, 20,16,
2244 // Length and number of words of that length
2245 11, 4,
2246 // Coordinates where words start and direction (0 = horizontal)
2247 2,5,1, 5,2,0, 5,18,0, 18,5,1,
2248 // Length and number of words of that length
2249 8, 12,
2250 // Coordinates where words start and direction (0 = horizontal)
2251 0,3,0, 0,9,0, 0,17,0, 3,0,1, 3,13,1, 9,13,1, 11,0,1, 13,3,0, 13,11,0, 13,17,0, 17,0,1, 17,13,1,
2252 // Length and number of words of that length
2253 7, 8,
2254 // Coordinates where words start and direction (0 = horizontal)
2255 4,8,0, 5,7,1, 7,5,0, 7,15,0, 8,10,1, 10,12,0, 12,4,1, 15,7,1,
2256 // Length and number of words of that length
2257 6, 12,
2258 // Coordinates where words start and direction (0 = horizontal)
2259 0,5,0, 0,11,0, 0,15,0, 5,0,1, 5,15,1, 9,0,1, 11,15,1, 15,0,1, 15,5,0, 15,9,0, 15,15,0, 15,15,1,
2260 // Length and number of words of that length
2261 5, 54,
2262 // Coordinates where words start and direction (0 = horizontal)
2263 0,5,1, 0,6,0, 0,11,1, 0,14,0, 1,5,1, 1,11,1, 2,10,0, 4,8,1, 4,12,0, 5,0,0, 5,1,0, 5,7,0, 5,13,0, 5,19,0, 5,20,0, 6,0,1, 6,6,1, 6,14,0, 6,16,1, 7,5,1, 7,11,0, 7,11,1, 8,4,0, 8,4,1, 8,10,0, 8,16,0, 9,7,1, 9,9,0, 10,2,1, 10,6,0, 10,8,1, 10,14,1, 11,0,0, 11,1,0, 11,7,0, 11,9,1, 11,13,0, 11,19,0, 11,20,0, 12,8,0, 12,12,1, 13,5,1, 13,11,1, 14,0,1, 14,10,0, 14,10,1, 14,16,1, 16,6,0, 16,8,1, 16,14,0, 19,5,1, 19,11,1, 20,5,1, 20,11,1,
2264 // Length and number of words of that length
2265 4, 40,
2266 // Coordinates where words start and direction (0 = horizontal)
2267 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,7,0, 0,13,0, 0,17,1, 0,18,0, 0,19,0, 0,20,0, 1,0,1, 1,17,1, 2,0,1, 2,17,1, 3,4,0, 3,16,0, 4,3,1, 4,14,1, 7,0,1, 7,17,1, 13,0,1, 13,17,1, 14,4,0, 14,16,0, 16,3,1, 16,14,1, 17,0,0, 17,1,0, 17,2,0, 17,7,0, 17,13,0, 17,18,0, 17,19,0, 17,20,0, 18,0,1, 18,17,1, 19,0,1, 19,17,1, 20,0,1, 20,17,1,
2268 // Length and number of words of that length
2269 3, 16,
2270 // Coordinates where words start and direction (0 = horizontal)
2271 0,8,0, 0,12,0, 3,9,1, 6,6,0, 6,12,1, 8,0,1, 8,18,1, 9,3,0, 9,17,0, 12,0,1, 12,14,0, 12,18,1, 14,6,1, 17,9,1, 18,8,0, 18,12,0,
2272 // End marker
2273 0
2274 };
2275
2276
2277 /*
2278 * Name: 21.07, 21 x 21
2279 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2280 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2281 * (_ _ _ _ _ _ _ _ _ _ * _ _ _ _ _ _ _ _ _ _)
2282 * (_ _ _ _ _ * _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2283 * (* * _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ * *)
2284 * (_ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _)
2285 * (_ _ _ _ * _ _ _ * _ _ _ * _ _ _ * _ _ _ _)
2286 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
2287 * (_ _ _ _ _ _ * _ _ _ * _ _ _ * _ _ _ _ _ _)
2288 * (_ _ _ * _ _ _ _ _ _ * _ _ _ _ * _ _ _ _ _)
2289 * (* * * _ _ _ _ _ * * * * * _ _ _ _ _ * * *)
2290 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ _ _ * _ _ _)
2291 * (_ _ _ _ _ _ * _ _ _ * _ _ _ * _ _ _ _ _ _)
2292 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
2293 * (_ _ _ _ * _ _ _ * _ _ _ * _ _ _ * _ _ _ _)
2294 * (_ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _)
2295 * (* * _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ * *)
2296 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ * _ _ _ _ _)
2297 * (_ _ _ _ _ _ _ _ _ _ * _ _ _ _ _ _ _ _ _ _)
2298 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2299 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2300 */
2301 const int g36[] = {
2302 // Width and height of crossword grid
2303 21, 21,
2304 // Number of black fields
2305 73,
2306 // Black field coordinates
2307 0,4, 0,10, 0,16, 1,4, 1,10, 1,16, 2,10, 3,5, 3,9, 3,15, 4,0, 4,1, 4,6, 4,14, 4,19, 4,20, 5,3, 5,11, 5,17, 6,4, 6,8, 6,12, 6,16, 7,7, 7,13, 8,6, 8,10, 8,14, 9,3, 9,10, 9,15, 10,0, 10,1, 10,2, 10,8, 10,9, 10,10, 10,11, 10,12, 10,18, 10,19, 10,20, 11,5, 11,10, 11,17, 12,6, 12,10, 12,14, 13,7, 13,13, 14,4, 14,8, 14,12, 14,16, 15,3, 15,9, 15,17, 16,0, 16,1, 16,6, 16,14, 16,19, 16,20, 17,5, 17,11, 17,15, 18,10, 19,4, 19,10, 19,16, 20,4, 20,10, 20,16,
2308 // Length and number of words of that length
2309 10, 8,
2310 // Coordinates where words start and direction (0 = horizontal)
2311 0,2,0, 0,18,0, 2,0,1, 2,11,1, 11,2,0, 11,18,0, 18,0,1, 18,11,1,
2312 // Length and number of words of that length
2313 7, 16,
2314 // Coordinates where words start and direction (0 = horizontal)
2315 0,7,0, 0,13,0, 4,5,0, 4,7,1, 5,4,1, 7,0,1, 7,4,0, 7,14,1, 7,16,0, 10,15,0, 13,0,1, 13,14,1, 14,7,0, 14,13,0, 15,10,1, 16,7,1,
2316 // Length and number of words of that length
2317 6, 12,
2318 // Coordinates where words start and direction (0 = horizontal)
2319 0,8,0, 0,12,0, 4,9,0, 8,0,1, 8,15,1, 9,4,1, 11,11,0, 11,11,1, 12,0,1, 12,15,1, 15,8,0, 15,12,0,
2320 // Length and number of words of that length
2321 5, 44,
2322 // Coordinates where words start and direction (0 = horizontal)
2323 0,3,0, 0,5,1, 0,11,0, 0,11,1, 0,17,0, 1,5,1, 1,11,1, 3,0,1, 3,10,0, 3,10,1, 3,16,1, 4,15,0, 5,0,0, 5,1,0, 5,12,1, 5,19,0, 5,20,0, 6,17,0, 7,8,1, 8,7,0, 8,13,0, 9,16,1, 10,3,0, 10,3,1, 10,13,1, 11,0,0, 11,0,1, 11,1,0, 11,19,0, 11,20,0, 12,5,0, 13,8,1, 13,10,0, 15,4,1, 16,3,0, 16,9,0, 16,17,0, 17,0,1, 17,6,1, 17,16,1, 19,5,1, 19,11,1, 20,5,1, 20,11,1,
2324 // Length and number of words of that length
2325 4, 36,
2326 // Coordinates where words start and direction (0 = horizontal)
2327 0,0,0, 0,0,1, 0,1,0, 0,6,0, 0,14,0, 0,17,1, 0,19,0, 0,20,0, 1,0,1, 1,17,1, 2,4,0, 2,16,0, 4,2,1, 4,15,1, 6,0,1, 6,11,0, 6,17,1, 9,11,1, 11,6,1, 11,9,0, 14,0,1, 14,17,1, 15,4,0, 15,16,0, 16,2,1, 16,15,1, 17,0,0, 17,1,0, 17,6,0, 17,14,0, 17,19,0, 17,20,0, 19,0,1, 19,17,1, 20,0,1, 20,17,1,
2328 // Length and number of words of that length
2329 3, 36,
2330 // Coordinates where words start and direction (0 = horizontal)
2331 0,5,0, 0,9,0, 0,15,0, 3,6,1, 5,0,1, 5,6,0, 5,14,0, 5,18,1, 6,3,0, 6,5,1, 6,9,1, 6,13,1, 7,8,0, 7,12,0, 8,7,1, 8,11,1, 9,0,1, 9,6,0, 9,14,0, 11,8,0, 11,12,0, 11,18,1, 12,7,1, 12,11,1, 12,17,0, 13,6,0, 13,14,0, 14,5,1, 14,9,1, 14,13,1, 15,0,1, 15,18,1, 17,12,1, 18,5,0, 18,11,0, 18,15,0,
2332 // End marker
2333 0
2334 };
2335
2336
2337 /*
2338 * Name: 21.08, 21 x 21
2339 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2340 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2341 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2342 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
2343 * (* * * _ _ _ _ * _ _ _ _ _ * _ _ _ _ * * *)
2344 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ _)
2345 * (_ _ _ _ _ * * _ _ _ _ * _ _ _ _ _ * _ _ _)
2346 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2347 * (_ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2348 * (_ _ _ _ _ _ _ _ _ * _ _ _ _ * _ _ _ _ _ _)
2349 * (* * * _ _ _ _ * * _ _ _ * * _ _ _ _ * * *)
2350 * (_ _ _ _ _ _ * _ _ _ _ * _ _ _ _ _ _ _ _ _)
2351 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _)
2352 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2353 * (_ _ _ * _ _ _ _ _ * _ _ _ _ * * _ _ _ _ _)
2354 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
2355 * (* * * _ _ _ _ * _ _ _ _ _ * _ _ _ _ * * *)
2356 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ _)
2357 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2358 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2359 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2360 */
2361 const int g37[] = {
2362 // Width and height of crossword grid
2363 21, 21,
2364 // Number of black fields
2365 76,
2366 // Black field coordinates
2367 0,4, 0,10, 0,16, 1,4, 1,10, 1,16, 2,4, 2,10, 2,16, 3,8, 3,14, 4,0, 4,1, 4,2, 4,7, 4,13, 4,18, 4,19, 4,20, 5,6, 5,12, 6,5, 6,6, 6,11, 6,17, 7,4, 7,10, 7,16, 8,3, 8,10, 8,15, 9,8, 9,9, 9,14, 10,0, 10,1, 10,2, 10,7, 10,13, 10,18, 10,19, 10,20, 11,6, 11,11, 11,12, 12,5, 12,10, 12,17, 13,4, 13,10, 13,16, 14,3, 14,9, 14,14, 14,15, 15,8, 15,14, 16,0, 16,1, 16,2, 16,7, 16,13, 16,18, 16,19, 16,20, 17,6, 17,12, 18,4, 18,10, 18,16, 19,4, 19,10, 19,16, 20,4, 20,10, 20,16,
2368 // Length and number of words of that length
2369 9, 2,
2370 // Coordinates where words start and direction (0 = horizontal)
2371 0,9,0, 12,11,0,
2372 // Length and number of words of that length
2373 8, 10,
2374 // Coordinates where words start and direction (0 = horizontal)
2375 0,3,0, 0,15,0, 3,0,1, 5,13,1, 9,0,1, 11,13,1, 13,5,0, 13,17,0, 15,0,1, 17,13,1,
2376 // Length and number of words of that length
2377 6, 14,
2378 // Coordinates where words start and direction (0 = horizontal)
2379 0,5,0, 0,11,0, 0,17,0, 3,15,1, 5,0,1, 8,4,1, 9,15,1, 11,0,1, 12,11,1, 15,3,0, 15,9,0, 15,15,0, 15,15,1, 17,0,1,
2380 // Length and number of words of that length
2381 5, 61,
2382 // Coordinates where words start and direction (0 = horizontal)
2383 0,5,1, 0,6,0, 0,11,1, 0,12,0, 1,5,1, 1,11,1, 2,5,1, 2,11,1, 3,9,1, 4,8,0, 4,8,1, 4,14,0, 5,0,0, 5,1,0, 5,2,0, 5,7,0, 5,7,1, 5,13,0, 5,18,0, 5,19,0, 5,20,0, 6,0,1, 6,12,0, 6,12,1, 7,5,0, 7,5,1, 7,11,1, 7,17,0, 8,4,0, 8,16,0, 8,16,1, 9,3,0, 9,15,0, 10,8,0, 10,8,1, 11,0,0, 11,1,0, 11,2,0, 11,7,0, 11,13,0, 11,18,0, 11,19,0, 11,20,0, 12,0,1, 12,6,0, 12,12,0, 13,5,1, 13,11,1, 14,4,1, 14,16,1, 15,9,1, 16,8,0, 16,8,1, 16,14,0, 17,7,1, 18,5,1, 18,11,1, 19,5,1, 19,11,1, 20,5,1, 20,11,1,
2384 // Length and number of words of that length
2385 4, 54,
2386 // Coordinates where words start and direction (0 = horizontal)
2387 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,7,0, 0,13,0, 0,17,1, 0,18,0, 0,19,0, 0,20,0, 1,0,1, 1,17,1, 2,0,1, 2,17,1, 3,4,0, 3,10,0, 3,16,0, 4,3,1, 4,14,1, 6,7,1, 7,0,1, 7,6,0, 7,11,0, 7,17,1, 8,11,1, 9,10,1, 10,3,1, 10,9,0, 10,14,0, 10,14,1, 11,7,1, 12,6,1, 13,0,1, 13,17,1, 14,4,0, 14,10,0, 14,10,1, 14,16,0, 16,3,1, 16,14,1, 17,0,0, 17,1,0, 17,2,0, 17,7,0, 17,13,0, 17,18,0, 17,19,0, 17,20,0, 18,0,1, 18,17,1, 19,0,1, 19,17,1, 20,0,1, 20,17,1,
2388 // Length and number of words of that length
2389 3, 9,
2390 // Coordinates where words start and direction (0 = horizontal)
2391 0,8,0, 0,14,0, 6,18,1, 8,0,1, 9,10,0, 12,18,1, 14,0,1, 18,6,0, 18,12,0,
2392 // End marker
2393 0
2394 };
2395
2396
2397 /*
2398 * Name: 21.09, 21 x 21
2399 * (* * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * *)
2400 * (* _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ *)
2401 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
2402 * (_ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _)
2403 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2404 * (_ _ _ _ _ * _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2405 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
2406 * (* * * _ _ _ _ * _ _ _ _ _ * _ _ _ _ * * *)
2407 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ _)
2408 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _)
2409 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2410 * (_ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2411 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
2412 * (* * * _ _ _ _ * _ _ _ _ _ * _ _ _ _ * * *)
2413 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ _)
2414 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ * _ _ _ _ _)
2415 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2416 * (_ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _)
2417 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
2418 * (* _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ *)
2419 * (* * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * *)
2420 */
2421 const int g38[] = {
2422 // Width and height of crossword grid
2423 21, 21,
2424 // Number of black fields
2425 75,
2426 // Black field coordinates
2427 0,0, 0,1, 0,7, 0,13, 0,19, 0,20, 1,0, 1,7, 1,13, 1,20, 2,7, 2,13, 3,3, 3,11, 3,17, 4,4, 4,10, 4,16, 5,5, 5,9, 5,15, 6,8, 6,14, 7,0, 7,1, 7,2, 7,7, 7,13, 7,18, 7,19, 7,20, 8,6, 8,12, 9,5, 9,11, 9,17, 10,4, 10,10, 10,16, 11,3, 11,9, 11,15, 12,8, 12,14, 13,0, 13,1, 13,2, 13,7, 13,13, 13,18, 13,19, 13,20, 14,6, 14,12, 15,5, 15,11, 15,15, 16,4, 16,10, 16,16, 17,3, 17,9, 17,17, 18,7, 18,13, 19,0, 19,7, 19,13, 19,20, 20,0, 20,1, 20,7, 20,13, 20,19, 20,20,
2428 // Length and number of words of that length
2429 8, 8,
2430 // Coordinates where words start and direction (0 = horizontal)
2431 0,6,0, 0,12,0, 6,0,1, 8,13,1, 12,0,1, 13,8,0, 13,14,0, 14,13,1,
2432 // Length and number of words of that length
2433 7, 12,
2434 // Coordinates where words start and direction (0 = horizontal)
2435 0,2,0, 0,18,0, 2,0,1, 2,14,1, 3,4,1, 4,3,0, 10,17,0, 14,2,0, 14,18,0, 17,10,1, 18,0,1, 18,14,1,
2436 // Length and number of words of that length
2437 6, 16,
2438 // Coordinates where words start and direction (0 = horizontal)
2439 0,8,0, 0,14,0, 1,1,0, 1,1,1, 1,14,1, 1,19,0, 6,15,1, 8,0,1, 12,15,1, 14,0,1, 14,1,0, 14,19,0, 15,6,0, 15,12,0, 19,1,1, 19,14,1,
2440 // Length and number of words of that length
2441 5, 72,
2442 // Coordinates where words start and direction (0 = horizontal)
2443 0,2,1, 0,5,0, 0,8,1, 0,9,0, 0,14,1, 0,15,0, 1,8,1, 2,0,0, 2,8,1, 2,20,0, 3,12,1, 4,5,1, 4,11,0, 4,11,1, 4,17,0, 5,0,1, 5,4,0, 5,10,0, 5,10,1, 5,16,0, 5,16,1, 6,9,0, 6,9,1, 6,15,0, 7,8,0, 7,8,1, 7,14,0, 8,0,0, 8,1,0, 8,2,0, 8,7,0, 8,7,1, 8,13,0, 8,18,0, 8,19,0, 8,20,0, 9,0,1, 9,6,0, 9,6,1, 9,12,0, 9,12,1, 10,5,0, 10,5,1, 10,11,0, 10,11,1, 11,4,0, 11,4,1, 11,10,0, 11,10,1, 11,16,0, 11,16,1, 12,3,0, 12,9,0, 12,9,1, 13,8,1, 14,0,0, 14,7,1, 14,20,0, 15,0,1, 15,6,1, 15,16,1, 16,5,0, 16,5,1, 16,11,0, 16,11,1, 16,15,0, 17,4,1, 18,8,1, 19,8,1, 20,2,1, 20,8,1, 20,14,1,
2444 // Length and number of words of that length
2445 4, 20,
2446 // Coordinates where words start and direction (0 = horizontal)
2447 0,4,0, 0,10,0, 0,16,0, 3,7,0, 3,13,0, 4,0,1, 4,17,1, 7,3,1, 7,14,1, 10,0,1, 10,17,1, 13,3,1, 13,14,1, 14,7,0, 14,13,0, 16,0,1, 16,17,1, 17,4,0, 17,10,0, 17,16,0,
2448 // Length and number of words of that length
2449 3, 16,
2450 // Coordinates where words start and direction (0 = horizontal)
2451 0,3,0, 0,11,0, 0,17,0, 3,0,1, 3,18,1, 5,6,1, 6,5,0, 9,18,1, 11,0,1, 12,15,0, 15,12,1, 17,0,1, 17,18,1, 18,3,0, 18,9,0, 18,17,0,
2452 // End marker
2453 0
2454 };
2455
2456
2457 /*
2458 * Name: 21.10, 21 x 21
2459 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
2460 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
2461 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
2462 * (_ _ _ * _ _ _ _ _ _ _ _ _ _ _ _ _ * _ _ _)
2463 * (_ _ _ _ * _ _ _ _ _ _ _ * _ _ _ * _ _ _ _)
2464 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ * _ _ _ _ _)
2465 * (_ _ _ _ _ _ * _ _ _ * _ _ _ * _ _ _ _ _ _)
2466 * (* * * _ _ _ _ _ _ * _ _ _ _ _ _ _ _ * * *)
2467 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _)
2468 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _)
2469 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _)
2470 * (_ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
2471 * (_ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _ _)
2472 * (* * * _ _ _ _ _ _ _ _ * _ _ _ _ _ _ * * *)
2473 * (_ _ _ _ _ _ * _ _ _ * _ _ _ * _ _ _ _ _ _)
2474 * (_ _ _ _ _ * _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2475 * (_ _ _ _ * _ _ _ * _ _ _ _ _ _ _ * _ _ _ _)
2476 * (_ _ _ * _ _ _ _ _ _ _ _ _ _ _ _ _ * _ _ _)
2477 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
2478 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
2479 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
2480 */
2481 const int g39[] = {
2482 // Width and height of crossword grid
2483 21, 21,
2484 // Number of black fields
2485 58,
2486 // Black field coordinates
2487 0,7, 0,13, 1,7, 1,13, 2,7, 2,13, 3,3, 3,17, 4,4, 4,12, 4,16, 5,5, 5,11, 5,15, 6,6, 6,10, 6,14, 7,0, 7,1, 7,2, 7,9, 7,18, 7,19, 7,20, 8,8, 8,16, 9,7, 9,15, 10,6, 10,14, 11,5, 11,13, 12,4, 12,12, 13,0, 13,1, 13,2, 13,11, 13,18, 13,19, 13,20, 14,6, 14,10, 14,14, 15,5, 15,9, 15,15, 16,4, 16,8, 16,16, 17,3, 17,17, 18,7, 18,13, 19,7, 19,13, 20,7, 20,13,
2488 // Length and number of words of that length
2489 13, 4,
2490 // Coordinates where words start and direction (0 = horizontal)
2491 3,4,1, 4,3,0, 4,17,0, 17,4,1,
2492 // Length and number of words of that length
2493 8, 8,
2494 // Coordinates where words start and direction (0 = horizontal)
2495 0,8,0, 3,13,0, 7,10,1, 8,0,1, 10,7,0, 12,13,1, 13,3,1, 13,12,0,
2496 // Length and number of words of that length
2497 7, 42,
2498 // Coordinates where words start and direction (0 = horizontal)
2499 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,9,0, 0,14,1, 0,18,0, 0,19,0, 0,20,0, 1,0,1, 1,14,1, 2,0,1, 2,14,1, 4,5,1, 5,4,0, 5,12,0, 6,11,0, 7,10,0, 8,9,0, 8,9,1, 9,0,1, 9,8,0, 9,8,1, 9,16,0, 10,7,1, 11,6,1, 11,14,1, 12,5,1, 14,0,0, 14,1,0, 14,2,0, 14,11,0, 14,18,0, 14,19,0, 14,20,0, 16,9,1, 18,0,1, 18,14,1, 19,0,1, 19,14,1, 20,0,1, 20,14,1,
2500 // Length and number of words of that length
2501 6, 16,
2502 // Coordinates where words start and direction (0 = horizontal)
2503 0,6,0, 0,10,0, 0,14,0, 3,7,0, 6,0,1, 6,15,1, 7,3,1, 10,0,1, 10,15,1, 12,13,0, 13,12,1, 14,0,1, 14,15,1, 15,6,0, 15,10,0, 15,14,0,
2504 // Length and number of words of that length
2505 5, 28,
2506 // Coordinates where words start and direction (0 = horizontal)
2507 0,5,0, 0,8,1, 0,11,0, 0,15,0, 1,8,1, 2,8,1, 5,0,1, 5,6,1, 5,16,1, 6,5,0, 8,0,0, 8,1,0, 8,2,0, 8,18,0, 8,19,0, 8,20,0, 9,16,1, 10,15,0, 11,0,1, 15,0,1, 15,10,1, 15,16,1, 16,5,0, 16,9,0, 16,15,0, 18,8,1, 19,8,1, 20,8,1,
2508 // Length and number of words of that length
2509 4, 12,
2510 // Coordinates where words start and direction (0 = horizontal)
2511 0,4,0, 0,12,0, 0,16,0, 4,0,1, 4,17,1, 8,17,1, 12,0,1, 16,0,1, 16,17,1, 17,4,0, 17,8,0, 17,16,0,
2512 // Length and number of words of that length
2513 3, 24,
2514 // Coordinates where words start and direction (0 = horizontal)
2515 0,3,0, 0,17,0, 3,0,1, 3,18,1, 4,13,1, 5,12,1, 5,16,0, 6,7,1, 6,11,1, 6,15,0, 7,6,0, 7,14,0, 11,6,0, 11,14,0, 12,5,0, 13,4,0, 14,7,1, 14,11,1, 15,6,1, 16,5,1, 17,0,1, 17,18,1, 18,3,0, 18,17,0,
2516 // End marker
2517 0
2518 };
2519
2520
2521 /*
2522 * Name: 23.01, 23 x 23
2523 * (_ _ _ _ _ _ * _ _ _ _ _ _ * _ _ _ _ * _ _ _ _)
2524 * (_ _ _ _ _ _ * _ _ _ _ _ _ * _ _ _ _ * _ _ _ _)
2525 * (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _)
2526 * (_ _ _ _ * _ _ _ * * _ _ _ _ * _ _ _ _ _ _ _ _)
2527 * (_ _ _ * _ _ _ _ _ _ _ _ _ _ _ * * _ _ _ _ _ _)
2528 * (* * * * _ _ _ * _ _ _ * _ _ _ * _ _ _ _ * * *)
2529 * (_ _ _ _ _ _ * _ _ _ * * * _ _ _ _ _ * _ _ _ _)
2530 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2531 * (_ _ _ _ * _ _ _ * * _ _ _ _ _ _ * _ _ _ _ _ _)
2532 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
2533 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ * _ _ _ _)
2534 * (* * * _ _ _ _ _ _ _ * * * _ _ _ _ _ _ _ * * *)
2535 * (_ _ _ _ * _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _)
2536 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
2537 * (_ _ _ _ _ _ * _ _ _ _ _ _ * * _ _ _ * _ _ _ _)
2538 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2539 * (_ _ _ _ * _ _ _ _ _ * * * _ _ _ * _ _ _ _ _ _)
2540 * (* * * _ _ _ _ * _ _ _ * _ _ _ * _ _ _ * * * *)
2541 * (_ _ _ _ _ _ * * _ _ _ _ _ _ _ _ _ _ _ * _ _ _)
2542 * (_ _ _ _ _ _ _ _ * _ _ _ _ * * _ _ _ * _ _ _ _)
2543 * (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _)
2544 * (_ _ _ _ * _ _ _ _ * _ _ _ _ _ _ * _ _ _ _ _ _)
2545 * (_ _ _ _ * _ _ _ _ * _ _ _ _ _ _ * _ _ _ _ _ _)
2546 */
2547 const int g40[] = {
2548 // Width and height of crossword grid
2549 23, 23,
2550 // Number of black fields
2551 89,
2552 // Black field coordinates
2553 0,5, 0,11, 0,17, 1,5, 1,11, 1,17, 2,5, 2,11, 2,17, 3,4, 3,5, 4,3, 4,8, 4,12, 4,16, 4,21, 4,22, 5,7, 5,15, 6,0, 6,1, 6,6, 6,10, 6,14, 6,18, 7,5, 7,9, 7,13, 7,17, 7,18, 8,3, 8,8, 8,12, 8,19, 9,3, 9,8, 9,21, 9,22, 10,6, 10,11, 10,16, 11,5, 11,6, 11,7, 11,11, 11,15, 11,16, 11,17, 12,6, 12,11, 12,16, 13,0, 13,1, 13,14, 13,19, 14,3, 14,10, 14,14, 14,19, 15,4, 15,5, 15,9, 15,13, 15,17, 16,4, 16,8, 16,12, 16,16, 16,21, 16,22, 17,7, 17,15, 18,0, 18,1, 18,6, 18,10, 18,14, 18,19, 19,17, 19,18, 20,5, 20,11, 20,17, 21,5, 21,11, 21,17, 22,5, 22,11, 22,17,
2554 // Length and number of words of that length
2555 23, 2,
2556 // Coordinates where words start and direction (0 = horizontal)
2557 0,2,0, 0,20,0,
2558 // Length and number of words of that length
2559 17, 2,
2560 // Coordinates where words start and direction (0 = horizontal)
2561 3,6,1, 19,0,1,
2562 // Length and number of words of that length
2563 12, 2,
2564 // Coordinates where words start and direction (0 = horizontal)
2565 9,9,1, 13,2,1,
2566 // Length and number of words of that length
2567 11, 2,
2568 // Coordinates where words start and direction (0 = horizontal)
2569 4,4,0, 8,18,0,
2570 // Length and number of words of that length
2571 8, 2,
2572 // Coordinates where words start and direction (0 = horizontal)
2573 0,19,0, 15,3,0,
2574 // Length and number of words of that length
2575 7, 16,
2576 // Coordinates where words start and direction (0 = horizontal)
2577 0,9,0, 0,13,0, 3,11,0, 5,0,1, 5,8,1, 5,16,1, 7,10,0, 8,9,0, 8,13,0, 9,12,0, 13,11,0, 16,9,0, 16,13,0, 17,0,1, 17,8,1, 17,16,1,
2578 // Length and number of words of that length
2579 6, 24,
2580 // Coordinates where words start and direction (0 = horizontal)
2581 0,0,0, 0,1,0, 0,6,0, 0,10,0, 0,14,0, 0,18,0, 7,0,0, 7,1,0, 7,14,0, 8,13,1, 10,0,1, 10,8,0, 10,17,1, 10,21,0, 10,22,0, 12,0,1, 12,17,1, 14,4,1, 17,4,0, 17,8,0, 17,12,0, 17,16,0, 17,21,0, 17,22,0,
2582 // Length and number of words of that length
2583 5, 38,
2584 // Coordinates where words start and direction (0 = horizontal)
2585 0,0,1, 0,6,1, 0,7,0, 0,12,1, 0,15,0, 0,18,1, 1,0,1, 1,6,1, 1,12,1, 1,18,1, 2,0,1, 2,6,1, 2,12,1, 2,18,1, 5,16,0, 6,7,0, 6,15,0, 7,0,1, 11,0,1, 11,18,1, 12,7,0, 12,15,0, 13,6,0, 15,18,1, 18,7,0, 18,15,0, 20,0,1, 20,6,1, 20,12,1, 20,18,1, 21,0,1, 21,6,1, 21,12,1, 21,18,1, 22,0,1, 22,6,1, 22,12,1, 22,18,1,
2586 // Length and number of words of that length
2587 4, 40,
2588 // Coordinates where words start and direction (0 = horizontal)
2589 0,3,0, 0,8,0, 0,12,0, 0,16,0, 0,21,0, 0,22,0, 3,0,1, 3,17,0, 4,4,1, 4,17,1, 5,21,0, 5,22,0, 6,2,1, 6,19,1, 7,19,1, 8,4,1, 9,4,1, 9,19,0, 10,3,0, 10,7,1, 10,12,1, 12,7,1, 12,12,1, 13,15,1, 14,0,0, 14,1,0, 14,15,1, 15,0,1, 16,0,1, 16,5,0, 16,17,1, 18,2,1, 18,15,1, 19,0,0, 19,1,0, 19,6,0, 19,10,0, 19,14,0, 19,19,0, 19,19,1,
2590 // Length and number of words of that length
2591 3, 44,
2592 // Coordinates where words start and direction (0 = horizontal)
2593 0,4,0, 4,0,1, 4,5,0, 4,9,1, 4,13,1, 5,3,0, 5,8,0, 5,12,0, 6,7,1, 6,11,1, 6,15,1, 7,6,0, 7,6,1, 7,10,1, 7,14,1, 8,0,1, 8,5,0, 8,9,1, 8,17,0, 8,20,1, 9,0,1, 11,8,1, 11,12,1, 12,5,0, 12,17,0, 13,16,0, 13,20,1, 14,0,1, 14,11,1, 14,20,1, 15,6,1, 15,10,0, 15,10,1, 15,14,0, 15,14,1, 15,19,0, 16,5,1, 16,9,1, 16,13,1, 16,17,0, 18,7,1, 18,11,1, 18,20,1, 20,18,0,
2594 // End marker
2595 0
2596 };
2597
2598
2599 /*
2600 * Name: 23.02, 23 x 23
2601 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ *)
2602 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
2603 * (_ _ _ _ _ _ _ _ _ _ * _ _ _ _ _ _ _ _ _ _ _ _)
2604 * (_ _ _ * * _ _ _ _ _ _ _ _ _ * _ _ _ _ * _ _ _)
2605 * (_ _ _ _ _ _ _ * * _ _ _ _ * _ _ _ _ * _ _ _ _)
2606 * (* * * _ _ _ * _ _ _ _ * * _ _ _ * * _ _ _ _ _)
2607 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _ * * *)
2608 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _ _ _ _ _)
2609 * (_ _ _ _ * _ _ _ _ * _ _ _ * _ _ _ _ _ * _ _ _)
2610 * (_ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _)
2611 * (* * _ _ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _ _)
2612 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
2613 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _ _ * *)
2614 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _)
2615 * (_ _ _ * _ _ _ _ _ * _ _ _ * _ _ _ _ * _ _ _ _)
2616 * (_ _ _ _ _ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2617 * (* * * _ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _ _)
2618 * (_ _ _ _ _ * * _ _ _ * * _ _ _ _ * _ _ _ * * *)
2619 * (_ _ _ _ * _ _ _ _ * _ _ _ _ * * _ _ _ _ _ _ _)
2620 * (_ _ _ * _ _ _ _ * _ _ _ _ _ _ _ _ _ * * _ _ _)
2621 * (_ _ _ _ _ _ _ _ _ _ _ _ * _ _ _ _ _ _ _ _ _ _)
2622 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _ _ _)
2623 * (* _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _ _ _)
2624 */
2625 const int g41[] = {
2626 // Width and height of crossword grid
2627 23, 23,
2628 // Number of black fields
2629 94,
2630 // Black field coordinates
2631 0,5, 0,10, 0,16, 0,22, 1,5, 1,10, 1,16, 2,5, 2,16, 3,3, 3,9, 3,14, 3,19, 4,3, 4,7, 4,8, 4,13, 4,18, 5,0, 5,1, 5,6, 5,12, 5,17, 6,5, 6,17, 6,21, 6,22, 7,4, 7,10, 7,11, 7,15, 7,16, 8,4, 8,9, 8,19, 9,8, 9,13, 9,14, 9,18, 10,0, 10,1, 10,2, 10,6, 10,7, 10,12, 10,17, 11,5, 11,17, 12,5, 12,10, 12,15, 12,16, 12,20, 12,21, 12,22, 13,4, 13,8, 13,9, 13,14, 14,3, 14,13, 14,18, 15,6, 15,7, 15,11, 15,12, 15,18, 16,0, 16,1, 16,5, 16,17, 17,5, 17,10, 17,16, 17,21, 17,22, 18,4, 18,9, 18,14, 18,15, 18,19, 19,3, 19,8, 19,13, 19,19, 20,6, 20,17, 21,6, 21,12, 21,17, 22,0, 22,6, 22,12, 22,17,
2632 // Length and number of words of that length
2633 12, 2,
2634 // Coordinates where words start and direction (0 = horizontal)
2635 0,20,0, 11,2,0,
2636 // Length and number of words of that length
2637 11, 3,
2638 // Coordinates where words start and direction (0 = horizontal)
2639 6,6,1, 11,6,1, 16,6,1,
2640 // Length and number of words of that length
2641 10, 4,
2642 // Coordinates where words start and direction (0 = horizontal)
2643 0,2,0, 2,6,1, 13,20,0, 20,7,1,
2644 // Length and number of words of that length
2645 9, 4,
2646 // Coordinates where words start and direction (0 = horizontal)
2647 5,3,0, 8,10,1, 9,19,0, 14,4,1,
2648 // Length and number of words of that length
2649 8, 2,
2650 // Coordinates where words start and direction (0 = horizontal)
2651 9,0,1, 13,15,1,
2652 // Length and number of words of that length
2653 7, 7,
2654 // Coordinates where words start and direction (0 = horizontal)
2655 0,4,0, 0,11,0, 0,15,0, 8,11,0, 16,7,0, 16,11,0, 16,18,0,
2656 // Length and number of words of that length
2657 6, 8,
2658 // Coordinates where words start and direction (0 = horizontal)
2659 0,21,0, 1,17,1, 2,17,1, 7,17,1, 15,0,1, 17,1,0, 20,0,1, 21,0,1,
2660 // Length and number of words of that length
2661 5, 48,
2662 // Coordinates where words start and direction (0 = horizontal)
2663 0,0,0, 0,0,1, 0,1,0, 0,6,0, 0,11,1, 0,12,0, 0,17,0, 0,17,1, 1,0,1, 1,11,1, 1,22,0, 2,0,1, 2,10,0, 3,4,1, 4,14,0, 5,7,0, 5,7,1, 5,18,1, 6,0,1, 7,5,1, 7,21,0, 7,22,0, 10,18,1, 11,0,0, 11,0,1, 11,1,0, 11,18,1, 12,0,1, 13,15,0, 14,8,0, 15,13,1, 16,12,0, 16,18,1, 17,0,0, 17,0,1, 17,11,1, 18,5,0, 18,10,0, 18,16,0, 18,21,0, 18,22,0, 19,14,1, 20,18,1, 21,7,1, 21,18,1, 22,1,1, 22,7,1, 22,18,1,
2664 // Length and number of words of that length
2665 4, 72,
2666 // Coordinates where words start and direction (0 = horizontal)
2667 0,6,1, 0,7,0, 0,8,0, 0,13,0, 0,18,0, 1,6,1, 3,10,1, 3,15,1, 3,16,0, 4,9,0, 4,9,1, 4,14,1, 4,19,0, 4,19,1, 5,2,1, 5,8,0, 5,13,0, 5,13,1, 5,18,0, 6,0,0, 6,1,0, 6,6,0, 6,12,0, 7,0,1, 7,5,0, 8,0,1, 8,5,1, 8,10,0, 8,15,0, 8,16,0, 9,4,0, 9,9,0, 9,9,1, 9,19,1, 10,8,1, 10,13,0, 10,13,1, 10,18,0, 11,6,0, 11,7,0, 11,12,0, 12,6,1, 12,11,1, 12,17,0, 13,0,1, 13,10,0, 13,10,1, 13,16,0, 13,21,0, 13,22,0, 14,4,0, 14,9,0, 14,14,0, 14,14,1, 14,19,1, 15,3,0, 15,13,0, 15,19,1, 16,6,0, 17,6,1, 17,17,1, 18,0,1, 18,5,1, 18,10,1, 19,4,0, 19,4,1, 19,9,0, 19,9,1, 19,14,0, 19,15,0, 21,13,1, 22,13,1,
2668 // Length and number of words of that length
2669 3, 32,
2670 // Coordinates where words start and direction (0 = horizontal)
2671 0,3,0, 0,9,0, 0,14,0, 0,19,0, 3,0,1, 3,5,0, 3,20,1, 4,0,1, 4,4,1, 6,18,1, 7,12,1, 7,17,0, 8,20,1, 9,15,1, 10,3,1, 10,8,0, 10,14,0, 12,17,1, 13,5,0, 13,5,1, 14,0,1, 15,8,1, 16,2,1, 17,17,0, 18,16,1, 18,20,1, 19,0,1, 19,20,1, 20,3,0, 20,8,0, 20,13,0, 20,19,0,
2672 // End marker
2673 0
2674 };
2675
2676
2677 /*
2678 * Name: 23.03, 23 x 23
2679 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _ _ _)
2680 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _ _ _)
2681 * (_ _ _ _ _ _ _ _ _ _ _ _ * _ _ _ _ _ _ _ _ _ _)
2682 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _ _)
2683 * (_ _ _ * * _ _ _ * * * _ _ _ _ _ _ _ * _ _ _ _)
2684 * (* * * _ _ _ _ _ _ _ * _ _ _ _ _ * * _ _ _ _ _)
2685 * (_ _ _ _ _ _ * _ _ _ _ * _ _ _ * _ _ _ _ * * *)
2686 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ * _ _ _)
2687 * (_ _ _ _ * _ _ _ _ _ _ _ _ * _ _ _ _ * _ _ _ _)
2688 * (_ _ _ _ _ _ _ * * _ _ _ _ _ _ _ _ _ * _ _ _ _)
2689 * (_ _ _ * _ _ _ _ _ * * _ _ _ _ _ * _ _ _ _ _ _)
2690 * (* * _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ * *)
2691 * (_ _ _ _ _ _ * _ _ _ _ _ * * _ _ _ _ _ * _ _ _)
2692 * (_ _ _ _ * _ _ _ _ _ _ _ _ _ * * _ _ _ _ _ _ _)
2693 * (_ _ _ _ * _ _ _ _ * _ _ _ _ _ _ _ _ * _ _ _ _)
2694 * (_ _ _ * _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
2695 * (* * * _ _ _ _ * _ _ _ * _ _ _ _ * _ _ _ _ _ _)
2696 * (_ _ _ _ _ * * _ _ _ _ _ * _ _ _ _ _ _ _ * * *)
2697 * (_ _ _ _ * _ _ _ _ _ _ _ * * * _ _ _ * * _ _ _)
2698 * (_ _ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
2699 * (_ _ _ _ _ _ _ _ _ _ * _ _ _ _ _ _ _ _ _ _ _ _)
2700 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
2701 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
2702 */
2703 const int g42[] = {
2704 // Width and height of crossword grid
2705 23, 23,
2706 // Number of black fields
2707 89,
2708 // Black field coordinates
2709 0,5, 0,11, 0,16, 1,5, 1,11, 1,16, 2,5, 2,16, 3,4, 3,10, 3,15, 4,4, 4,8, 4,13, 4,14, 4,18, 4,19, 5,11, 5,17, 5,21, 5,22, 6,0, 6,1, 6,6, 6,7, 6,12, 6,17, 7,3, 7,9, 7,16, 8,4, 8,9, 9,4, 9,10, 9,14, 9,19, 10,4, 10,5, 10,10, 10,15, 10,20, 10,21, 10,22, 11,6, 11,11, 11,16, 12,0, 12,1, 12,2, 12,7, 12,12, 12,17, 12,18, 13,3, 13,8, 13,12, 13,18, 14,13, 14,18, 15,6, 15,13, 15,19, 16,5, 16,10, 16,15, 16,16, 16,21, 16,22, 17,0, 17,1, 17,5, 17,11, 18,3, 18,4, 18,8, 18,9, 18,14, 18,18, 19,7, 19,12, 19,18, 20,6, 20,17, 21,6, 21,11, 21,17, 22,6, 22,11, 22,17,
2710 // Length and number of words of that length
2711 13, 2,
2712 // Coordinates where words start and direction (0 = horizontal)
2713 8,10,1, 14,0,1,
2714 // Length and number of words of that length
2715 12, 2,
2716 // Coordinates where words start and direction (0 = horizontal)
2717 0,2,0, 11,20,0,
2718 // Length and number of words of that length
2719 11, 2,
2720 // Coordinates where words start and direction (0 = horizontal)
2721 5,0,1, 17,12,1,
2722 // Length and number of words of that length
2723 10, 4,
2724 // Coordinates where words start and direction (0 = horizontal)
2725 0,20,0, 2,6,1, 13,2,0, 20,7,1,
2726 // Length and number of words of that length
2727 9, 2,
2728 // Coordinates where words start and direction (0 = horizontal)
2729 5,13,0, 9,9,0,
2730 // Length and number of words of that length
2731 8, 2,
2732 // Coordinates where words start and direction (0 = horizontal)
2733 5,8,0, 10,14,0,
2734 // Length and number of words of that length
2735 7, 10,
2736 // Coordinates where words start and direction (0 = horizontal)
2737 0,3,0, 0,9,0, 3,5,0, 3,16,1, 5,18,0, 11,4,0, 13,17,0, 16,13,0, 16,19,0, 19,0,1,
2738 // Length and number of words of that length
2739 6, 24,
2740 // Coordinates where words start and direction (0 = horizontal)
2741 0,0,0, 0,1,0, 0,6,0, 0,7,0, 0,12,0, 0,17,1, 1,17,1, 2,17,1, 4,15,0, 7,10,1, 7,17,1, 11,0,1, 11,17,1, 13,7,0, 15,0,1, 15,7,1, 17,10,0, 17,15,0, 17,16,0, 17,21,0, 17,22,0, 20,0,1, 21,0,1, 22,0,1,
2742 // Length and number of words of that length
2743 5, 42,
2744 // Coordinates where words start and direction (0 = horizontal)
2745 0,0,1, 0,6,1, 0,17,0, 0,21,0, 0,22,0, 1,0,1, 1,6,1, 2,0,1, 3,5,1, 4,10,0, 5,12,1, 6,11,0, 6,18,1, 7,0,0, 7,1,0, 7,4,1, 7,7,0, 7,12,0, 7,17,0, 8,3,0, 9,5,1, 10,19,0, 11,5,0, 11,10,0, 11,15,0, 11,21,0, 11,22,0, 12,11,0, 13,13,1, 14,12,0, 15,14,1, 16,0,1, 17,6,1, 18,0,0, 18,1,0, 18,5,0, 19,13,1, 20,18,1, 21,12,1, 21,18,1, 22,12,1, 22,18,1,
2746 // Length and number of words of that length
2747 4, 58,
2748 // Coordinates where words start and direction (0 = horizontal)
2749 0,8,0, 0,12,1, 0,13,0, 0,14,0, 0,18,0, 0,19,0, 1,12,1, 3,0,1, 3,11,1, 3,16,0, 4,0,1, 4,9,1, 5,14,0, 5,19,0, 6,2,1, 6,8,1, 6,13,1, 6,21,0, 6,22,0, 7,6,0, 8,0,1, 8,5,1, 9,0,1, 9,15,1, 10,0,1, 10,6,1, 10,11,1, 10,16,1, 11,7,1, 11,12,1, 12,3,1, 12,8,1, 12,13,1, 12,16,0, 12,19,1, 13,0,0, 13,1,0, 13,4,1, 13,19,1, 14,3,0, 14,8,0, 14,14,1, 14,19,1, 16,6,0, 16,6,1, 16,11,1, 16,17,1, 18,10,1, 18,19,1, 19,3,0, 19,4,0, 19,8,0, 19,8,1, 19,9,0, 19,14,0, 19,19,1, 21,7,1, 22,7,1,
2750 // Length and number of words of that length
2751 3, 26,
2752 // Coordinates where words start and direction (0 = horizontal)
2753 0,4,0, 0,10,0, 0,15,0, 2,11,0, 4,5,1, 4,15,1, 4,20,1, 5,4,0, 5,18,1, 7,0,1, 8,16,0, 9,11,1, 9,20,1, 12,6,0, 13,0,1, 13,9,1, 15,18,0, 15,20,1, 17,2,1, 18,0,1, 18,5,1, 18,11,0, 18,15,1, 20,7,0, 20,12,0, 20,18,0,
2754 // End marker
2755 0
2756 };
2757
2758
2759 /*
2760 * Name: 23.04, 23 x 23
2761 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2762 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2763 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2764 * (_ _ _ _ _ _ _ _ _ * _ _ _ * _ _ _ _ _ _ _ _ _)
2765 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ _)
2766 * (* * * _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ * * *)
2767 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ * _ _ _ _ _ _)
2768 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2769 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _)
2770 * (_ _ _ * _ _ _ _ _ * _ _ _ * _ _ _ _ _ * _ _ _)
2771 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _ _)
2772 * (* * * _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ * * *)
2773 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _)
2774 * (_ _ _ * _ _ _ _ _ * _ _ _ * _ _ _ _ _ * _ _ _)
2775 * (_ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2776 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2777 * (_ _ _ _ _ _ * _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
2778 * (* * * _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ * * *)
2779 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ _)
2780 * (_ _ _ _ _ _ _ _ _ * _ _ _ * _ _ _ _ _ _ _ _ _)
2781 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2782 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2783 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2784 */
2785 const int g43[] = {
2786 // Width and height of crossword grid
2787 23, 23,
2788 // Number of black fields
2789 80,
2790 // Black field coordinates
2791 0,5, 0,11, 0,17, 1,5, 1,11, 1,17, 2,5, 2,11, 2,17, 3,9, 3,13, 4,8, 4,14, 5,0, 5,1, 5,2, 5,7, 5,15, 5,20, 5,21, 5,22, 6,6, 6,10, 6,16, 7,5, 7,11, 7,17, 8,4, 8,12, 8,18, 9,3, 9,9, 9,13, 9,19, 10,8, 10,16, 11,0, 11,1, 11,2, 11,7, 11,15, 11,20, 11,21, 11,22, 12,6, 12,14, 13,3, 13,9, 13,13, 13,19, 14,4, 14,10, 14,18, 15,5, 15,11, 15,17, 16,6, 16,12, 16,16, 17,0, 17,1, 17,2, 17,7, 17,15, 17,20, 17,21, 17,22, 18,8, 18,14, 19,9, 19,13, 20,5, 20,11, 20,17, 21,5, 21,11, 21,17, 22,5, 22,11, 22,17,
2792 // Length and number of words of that length
2793 9, 8,
2794 // Coordinates where words start and direction (0 = horizontal)
2795 0,3,0, 0,19,0, 3,0,1, 3,14,1, 14,3,0, 14,19,0, 19,0,1, 19,14,1,
2796 // Length and number of words of that length
2797 8, 12,
2798 // Coordinates where words start and direction (0 = horizontal)
2799 0,4,0, 0,12,0, 0,18,0, 4,0,1, 4,15,1, 10,0,1, 12,15,1, 15,4,0, 15,10,0, 15,18,0, 18,0,1, 18,15,1,
2800 // Length and number of words of that length
2801 7, 14,
2802 // Coordinates where words start and direction (0 = horizontal)
2803 5,8,1, 5,14,0, 7,10,0, 8,5,0, 8,5,1, 8,11,0, 8,17,0, 9,12,0, 10,9,1, 11,8,0, 11,8,1, 12,7,1, 14,11,1, 17,8,1,
2804 // Length and number of words of that length
2805 6, 12,
2806 // Coordinates where words start and direction (0 = horizontal)
2807 0,6,0, 0,10,0, 0,16,0, 6,0,1, 6,17,1, 10,17,1, 12,0,1, 16,0,1, 16,17,1, 17,6,0, 17,12,0, 17,16,0,
2808 // Length and number of words of that length
2809 5, 84,
2810 // Coordinates where words start and direction (0 = horizontal)
2811 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,6,1, 0,7,0, 0,12,1, 0,15,0, 0,18,1, 0,20,0, 0,21,0, 0,22,0, 1,0,1, 1,6,1, 1,12,1, 1,18,1, 2,0,1, 2,6,1, 2,12,1, 2,18,1, 4,9,0, 4,9,1, 4,13,0, 5,8,0, 6,0,0, 6,1,0, 6,2,0, 6,7,0, 6,11,1, 6,15,0, 6,20,0, 6,21,0, 6,22,0, 7,0,1, 7,6,0, 7,6,1, 7,12,1, 7,18,1, 8,13,1, 9,4,0, 9,4,1, 9,14,1, 9,18,0, 11,16,0, 12,0,0, 12,1,0, 12,2,0, 12,7,0, 12,15,0, 12,20,0, 12,21,0, 12,22,0, 13,4,1, 13,14,0, 13,14,1, 14,5,1, 14,9,0, 14,13,0, 15,0,1, 15,6,1, 15,12,1, 15,18,1, 16,7,1, 18,0,0, 18,1,0, 18,2,0, 18,7,0, 18,9,1, 18,15,0, 18,20,0, 18,21,0, 18,22,0, 20,0,1, 20,6,1, 20,12,1, 20,18,1, 21,0,1, 21,6,1, 21,12,1, 21,18,1, 22,0,1, 22,6,1, 22,12,1, 22,18,1,
2812 // Length and number of words of that length
2813 4, 20,
2814 // Coordinates where words start and direction (0 = horizontal)
2815 0,8,0, 0,14,0, 3,5,0, 3,11,0, 3,17,0, 5,3,1, 5,16,1, 8,0,1, 8,19,1, 11,3,1, 11,16,1, 14,0,1, 14,19,1, 16,5,0, 16,11,0, 16,17,0, 17,3,1, 17,16,1, 19,8,0, 19,14,0,
2816 // Length and number of words of that length
2817 3, 20,
2818 // Coordinates where words start and direction (0 = horizontal)
2819 0,9,0, 0,13,0, 3,10,1, 6,7,1, 7,16,0, 9,0,1, 9,10,1, 9,20,1, 10,3,0, 10,9,0, 10,13,0, 10,19,0, 13,0,1, 13,6,0, 13,10,1, 13,20,1, 16,13,1, 19,10,1, 20,9,0, 20,13,0,
2820 // End marker
2821 0
2822 };
2823
2824
2825 /*
2826 * Name: 23.05, 23 x 23
2827 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2828 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2829 * (_ _ _ _ _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2830 * (_ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _)
2831 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
2832 * (* * * _ _ _ * _ _ _ _ _ * _ _ _ * _ _ _ * * *)
2833 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2834 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _)
2835 * (_ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _)
2836 * (_ _ _ _ _ _ _ _ * _ _ _ _ * _ _ _ _ _ _ _ _ _)
2837 * (_ _ _ _ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _ _)
2838 * (* * * _ _ _ * _ _ _ _ _ _ _ _ _ * _ _ _ * * *)
2839 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _ _ _ _)
2840 * (_ _ _ _ _ _ _ _ _ * _ _ _ _ * _ _ _ _ _ _ _ _)
2841 * (_ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _)
2842 * (_ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2843 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2844 * (* * * _ _ _ * _ _ _ * _ _ _ _ _ * _ _ _ * * *)
2845 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
2846 * (_ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _)
2847 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ _ _ _ _)
2848 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2849 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2850 */
2851 const int g44[] = {
2852 // Width and height of crossword grid
2853 23, 23,
2854 // Number of black fields
2855 84,
2856 // Black field coordinates
2857 0,5, 0,11, 0,17, 1,5, 1,11, 1,17, 2,5, 2,11, 2,17, 3,3, 3,8, 3,14, 3,19, 4,7, 4,15, 5,0, 5,1, 5,6, 5,12, 5,16, 5,20, 5,21, 5,22, 6,5, 6,11, 6,17, 7,4, 7,10, 7,18, 8,3, 8,9, 8,14, 8,19, 9,8, 9,13, 10,7, 10,12, 10,17, 11,0, 11,1, 11,2, 11,6, 11,16, 11,20, 11,21, 11,22, 12,5, 12,10, 12,15, 13,9, 13,14, 14,3, 14,8, 14,13, 14,19, 15,4, 15,12, 15,18, 16,5, 16,11, 16,17, 17,0, 17,1, 17,2, 17,6, 17,10, 17,16, 17,21, 17,22, 18,7, 18,15, 19,3, 19,8, 19,14, 19,19, 20,5, 20,11, 20,17, 21,5, 21,11, 21,17, 22,5, 22,11, 22,17,
2858 // Length and number of words of that length
2859 11, 2,
2860 // Coordinates where words start and direction (0 = horizontal)
2861 0,2,0, 12,20,0,
2862 // Length and number of words of that length
2863 9, 6,
2864 // Coordinates where words start and direction (0 = horizontal)
2865 0,13,0, 7,11,0, 9,14,1, 11,7,1, 13,0,1, 14,9,0,
2866 // Length and number of words of that length
2867 8, 4,
2868 // Coordinates where words start and direction (0 = horizontal)
2869 0,9,0, 9,0,1, 13,15,1, 15,13,0,
2870 // Length and number of words of that length
2871 7, 20,
2872 // Coordinates where words start and direction (0 = horizontal)
2873 0,4,0, 0,10,0, 0,18,0, 4,0,1, 4,8,1, 4,16,1, 5,15,0, 7,11,1, 8,4,0, 8,18,0, 10,0,1, 11,7,0, 12,16,1, 15,5,1, 16,4,0, 16,12,0, 16,18,0, 18,0,1, 18,8,1, 18,16,1,
2874 // Length and number of words of that length
2875 5, 80,
2876 // Coordinates where words start and direction (0 = horizontal)
2877 0,0,0, 0,0,1, 0,1,0, 0,6,0, 0,6,1, 0,12,0, 0,12,1, 0,16,0, 0,18,1, 0,20,0, 0,21,0, 0,22,0, 1,0,1, 1,6,1, 1,12,1, 1,18,1, 2,0,1, 2,6,1, 2,12,1, 2,18,1, 3,9,1, 4,8,0, 5,7,0, 5,7,1, 6,0,0, 6,0,1, 6,1,0, 6,6,0, 6,6,1, 6,12,1, 6,16,0, 6,18,1, 6,20,0, 6,21,0, 6,22,0, 7,5,0, 7,5,1, 8,4,1, 9,3,0, 9,19,0, 10,18,1, 11,17,0, 12,0,0, 12,0,1, 12,1,0, 12,2,0, 12,6,0, 12,16,0, 12,21,0, 12,22,0, 13,15,0, 14,14,0, 14,14,1, 15,13,1, 16,0,1, 16,6,1, 16,12,1, 16,18,1, 17,11,1, 18,0,0, 18,1,0, 18,2,0, 18,6,0, 18,10,0, 18,16,0, 18,21,0, 18,22,0, 19,9,1, 20,0,1, 20,6,1, 20,12,1, 20,18,1, 21,0,1, 21,6,1, 21,12,1, 21,18,1, 22,0,1, 22,6,1, 22,12,1, 22,18,1,
2878 // Length and number of words of that length
2879 4, 38,
2880 // Coordinates where words start and direction (0 = horizontal)
2881 0,7,0, 0,15,0, 3,4,1, 3,15,1, 4,3,0, 4,14,0, 4,19,0, 5,2,1, 6,12,0, 7,0,1, 7,19,1, 8,10,0, 8,10,1, 8,15,1, 9,9,0, 9,9,1, 9,14,0, 10,8,0, 10,8,1, 10,13,0, 10,13,1, 11,12,0, 12,6,1, 12,11,1, 13,10,0, 13,10,1, 14,4,1, 14,9,1, 15,0,1, 15,3,0, 15,8,0, 15,19,0, 15,19,1, 17,17,1, 19,4,1, 19,7,0, 19,15,0, 19,15,1,
2882 // Length and number of words of that length
2883 3, 30,
2884 // Coordinates where words start and direction (0 = horizontal)
2885 0,3,0, 0,8,0, 0,14,0, 0,19,0, 3,0,1, 3,5,0, 3,11,0, 3,17,0, 3,20,1, 5,13,1, 5,17,1, 7,17,0, 8,0,1, 8,20,1, 11,3,1, 11,17,1, 13,5,0, 14,0,1, 14,20,1, 17,3,1, 17,5,0, 17,7,1, 17,11,0, 17,17,0, 19,0,1, 19,20,1, 20,3,0, 20,8,0, 20,14,0, 20,19,0,
2886 // End marker
2887 0
2888 };
2889
2890
2891 /*
2892 * Name: 23.06, 23 x 23
2893 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
2894 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
2895 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
2896 * (_ _ _ * _ _ _ _ _ _ * _ _ _ _ _ _ _ _ * _ _ _)
2897 * (_ _ _ _ * _ _ _ _ _ _ * _ _ _ _ _ _ * _ _ _ _)
2898 * (_ _ _ _ _ * _ _ _ _ _ _ * _ _ _ _ * _ _ _ _ _)
2899 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ _)
2900 * (* * * _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ * * *)
2901 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ _ _ * _ _ _ _ _ _)
2902 * (_ _ _ _ _ _ _ _ _ * _ _ _ * _ _ _ _ _ _ _ _ _)
2903 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _)
2904 * (_ _ _ _ * _ _ _ _ _ * * * _ _ _ _ _ * _ _ _ _)
2905 * (_ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
2906 * (_ _ _ _ _ _ _ _ _ * _ _ _ * _ _ _ _ _ _ _ _ _)
2907 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ _ _ * _ _ _ _ _ _)
2908 * (* * * _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ * * *)
2909 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ _)
2910 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ _ _ * _ _ _ _ _)
2911 * (_ _ _ _ * _ _ _ _ _ _ * _ _ _ _ _ _ * _ _ _ _)
2912 * (_ _ _ * _ _ _ _ _ _ _ _ * _ _ _ _ _ _ * _ _ _)
2913 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
2914 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
2915 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
2916 */
2917 const int g45[] = {
2918 // Width and height of crossword grid
2919 23, 23,
2920 // Number of black fields
2921 69,
2922 // Black field coordinates
2923 0,7, 0,15, 1,7, 1,15, 2,7, 2,15, 3,3, 3,12, 3,19, 4,4, 4,11, 4,18, 5,5, 5,10, 5,17, 6,8, 6,14, 7,0, 7,1, 7,2, 7,7, 7,15, 7,20, 7,21, 7,22, 8,6, 8,16, 9,9, 9,13, 10,3, 10,11, 10,17, 11,4, 11,10, 11,11, 11,12, 11,18, 12,5, 12,11, 12,19, 13,9, 13,13, 14,6, 14,16, 15,0, 15,1, 15,2, 15,7, 15,15, 15,20, 15,21, 15,22, 16,8, 16,14, 17,5, 17,12, 17,17, 18,4, 18,11, 18,18, 19,3, 19,10, 19,19, 20,7, 20,15, 21,7, 21,15, 22,7, 22,15,
2924 // Length and number of words of that length
2925 9, 12,
2926 // Coordinates where words start and direction (0 = horizontal)
2927 0,9,0, 0,13,0, 7,8,0, 7,14,0, 8,7,1, 9,0,1, 9,14,1, 13,0,1, 13,14,1, 14,7,1, 14,9,0, 14,13,0,
2928 // Length and number of words of that length
2929 8, 12,
2930 // Coordinates where words start and direction (0 = horizontal)
2931 0,6,0, 0,16,0, 3,4,1, 4,19,0, 6,0,1, 6,15,1, 11,3,0, 15,6,0, 15,16,0, 16,0,1, 16,15,1, 19,11,1,
2932 // Length and number of words of that length
2933 7, 44,
2934 // Coordinates where words start and direction (0 = horizontal)
2935 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,8,1, 0,16,1, 0,20,0, 0,21,0, 0,22,0, 1,0,1, 1,8,1, 1,16,1, 2,0,1, 2,8,1, 2,16,1, 4,12,0, 7,8,1, 8,0,0, 8,1,0, 8,2,0, 8,7,0, 8,15,0, 8,20,0, 8,21,0, 8,22,0, 10,4,1, 12,10,0, 12,12,1, 15,8,1, 16,0,0, 16,1,0, 16,2,0, 16,20,0, 16,21,0, 16,22,0, 20,0,1, 20,8,1, 20,16,1, 21,0,1, 21,8,1, 21,16,1, 22,0,1, 22,8,1, 22,16,1,
2936 // Length and number of words of that length
2937 6, 24,
2938 // Coordinates where words start and direction (0 = horizontal)
2939 0,8,0, 0,14,0, 3,13,1, 4,3,0, 4,5,1, 4,12,1, 5,4,0, 5,11,1, 5,18,0, 6,5,0, 8,0,1, 8,17,1, 11,17,0, 12,4,0, 12,18,0, 13,19,0, 14,0,1, 14,17,1, 17,6,1, 17,8,0, 17,14,0, 18,5,1, 18,12,1, 19,4,1,
2940 // Length and number of words of that length
2941 5, 24,
2942 // Coordinates where words start and direction (0 = horizontal)
2943 0,5,0, 0,10,0, 0,17,0, 5,0,1, 5,11,0, 5,18,1, 6,9,1, 6,10,0, 9,6,0, 9,16,0, 10,12,1, 10,18,1, 11,5,1, 11,13,1, 12,0,1, 12,6,1, 12,12,0, 13,11,0, 16,9,1, 17,0,1, 17,18,1, 18,5,0, 18,12,0, 18,17,0,
2944 // Length and number of words of that length
2945 4, 24,
2946 // Coordinates where words start and direction (0 = horizontal)
2947 0,4,0, 0,11,0, 0,18,0, 3,7,0, 3,15,0, 4,0,1, 4,19,1, 5,6,1, 6,17,0, 7,3,1, 7,16,1, 11,0,1, 11,19,1, 13,5,0, 15,3,1, 15,16,1, 16,7,0, 16,15,0, 17,13,1, 18,0,1, 18,19,1, 19,4,0, 19,11,0, 19,18,0,
2948 // Length and number of words of that length
2949 3, 16,
2950 // Coordinates where words start and direction (0 = horizontal)
2951 0,3,0, 0,12,0, 0,19,0, 3,0,1, 3,20,1, 9,10,1, 10,0,1, 10,9,0, 10,13,0, 12,20,1, 13,10,1, 19,0,1, 19,20,1, 20,3,0, 20,10,0, 20,19,0,
2952 // End marker
2953 0
2954 };
2955
2956
2957 /*
2958 * Name: 23.07, 23 x 23
2959 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ *)
2960 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
2961 * (_ _ _ _ _ _ _ _ _ _ * _ _ _ _ _ _ _ _ _ _ _ _)
2962 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _)
2963 * (* * * _ _ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _ _)
2964 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _ _ _)
2965 * (_ _ _ _ _ * _ _ _ _ * * _ _ _ _ * _ _ _ * * *)
2966 * (_ _ _ _ * _ _ _ _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
2967 * (_ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _)
2968 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ _ _ _ _ * _ _ _ _)
2969 * (* * _ _ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _ _ _)
2970 * (_ _ _ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _ _ _)
2971 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _ _ * *)
2972 * (_ _ _ _ * _ _ _ _ _ _ _ _ _ * _ _ _ _ _ _ _ _)
2973 * (_ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _)
2974 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ _ _ _ * _ _ _ _)
2975 * (* * * _ _ _ * _ _ _ _ * * _ _ _ _ * _ _ _ _ _)
2976 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
2977 * (_ _ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _ _ * * *)
2978 * (_ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ _)
2979 * (_ _ _ _ _ _ _ _ _ _ _ _ * _ _ _ _ _ _ _ _ _ _)
2980 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2981 * (* _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
2982 */
2983 const int g46[] = {
2984 // Width and height of crossword grid
2985 23, 23,
2986 // Number of black fields
2987 83,
2988 // Black field coordinates
2989 0,4, 0,10, 0,16, 0,22, 1,4, 1,10, 1,16, 2,4, 2,16, 3,8, 3,14, 3,19, 4,0, 4,1, 4,7, 4,13, 4,18, 5,6, 5,12, 5,17, 6,5, 6,10, 6,11, 6,16, 6,21, 6,22, 7,4, 7,15, 8,3, 8,9, 8,14, 8,19, 9,8, 9,18, 10,0, 10,1, 10,2, 10,6, 10,12, 10,17, 11,6, 11,11, 11,16, 12,5, 12,10, 12,16, 12,20, 12,21, 12,22, 13,4, 13,14, 14,3, 14,8, 14,13, 14,19, 15,7, 15,18, 16,0, 16,1, 16,6, 16,11, 16,12, 16,17, 17,5, 17,10, 17,16, 18,4, 18,9, 18,15, 18,21, 18,22, 19,3, 19,8, 19,14, 20,6, 20,18, 21,6, 21,12, 21,18, 22,0, 22,6, 22,12, 22,18,
2990 // Length and number of words of that length
2991 12, 2,
2992 // Coordinates where words start and direction (0 = horizontal)
2993 0,20,0, 11,2,0,
2994 // Length and number of words of that length
2995 11, 2,
2996 // Coordinates where words start and direction (0 = horizontal)
2997 2,5,1, 20,7,1,
2998 // Length and number of words of that length
2999 10, 6,
3000 // Coordinates where words start and direction (0 = horizontal)
3001 0,2,0, 5,7,0, 7,5,1, 8,15,0, 13,20,0, 15,8,1,
3002 // Length and number of words of that length
3003 9, 4,
3004 // Coordinates where words start and direction (0 = horizontal)
3005 5,13,0, 9,9,0, 9,9,1, 13,5,1,
3006 // Length and number of words of that length
3007 8, 8,
3008 // Coordinates where words start and direction (0 = horizontal)
3009 0,3,0, 0,9,0, 3,0,1, 9,0,1, 13,15,1, 15,13,0, 15,19,0, 19,15,1,
3010 // Length and number of words of that length
3011 7, 4,
3012 // Coordinates where words start and direction (0 = horizontal)
3013 0,15,0, 7,16,1, 15,0,1, 16,7,0,
3014 // Length and number of words of that length
3015 6, 14,
3016 // Coordinates where words start and direction (0 = horizontal)
3017 0,5,0, 0,11,0, 0,21,0, 1,17,1, 2,17,1, 5,0,1, 11,0,1, 11,17,1, 17,1,0, 17,11,0, 17,17,0, 17,17,1, 20,0,1, 21,0,1,
3018 // Length and number of words of that length
3019 5, 54,
3020 // Coordinates where words start and direction (0 = horizontal)
3021 0,5,1, 0,6,0, 0,11,1, 0,12,0, 0,17,0, 0,17,1, 1,5,1, 1,11,1, 1,22,0, 3,9,1, 4,2,1, 4,8,0, 4,8,1, 5,0,0, 5,1,0, 5,7,1, 5,18,1, 6,0,1, 7,5,0, 7,10,0, 7,21,0, 7,22,0, 8,4,0, 8,4,1, 9,3,0, 9,19,0, 10,7,1, 10,18,0, 10,18,1, 11,0,0, 11,1,0, 11,12,0, 11,17,0, 12,0,1, 12,11,1, 13,21,0, 13,22,0, 14,14,0, 14,14,1, 16,18,1, 17,0,0, 17,0,1, 17,11,1, 18,5,0, 18,10,0, 18,10,1, 18,16,0, 18,16,1, 19,9,1, 21,7,1, 21,13,1, 22,1,1, 22,7,1, 22,13,1,
3022 // Length and number of words of that length
3023 4, 64,
3024 // Coordinates where words start and direction (0 = horizontal)
3025 0,0,0, 0,0,1, 0,1,0, 0,7,0, 0,13,0, 0,18,0, 1,0,1, 2,0,1, 2,10,0, 3,4,0, 3,15,1, 4,14,0, 4,14,1, 4,19,0, 4,19,1, 5,13,1, 5,18,0, 6,6,0, 6,6,1, 6,12,0, 6,12,1, 6,17,0, 6,17,1, 7,0,1, 7,11,0, 7,16,0, 8,10,1, 8,15,1, 9,14,0, 9,19,1, 10,8,0, 10,13,1, 11,7,1, 11,12,1, 12,6,0, 12,6,1, 12,11,0, 13,0,1, 13,5,0, 13,10,0, 13,16,0, 14,4,0, 14,4,1, 14,9,1, 15,3,0, 15,8,0, 15,19,1, 16,2,1, 16,7,1, 16,13,1, 16,18,0, 17,6,1, 17,12,0, 18,0,1, 18,5,1, 19,4,0, 19,4,1, 19,9,0, 19,15,0, 19,21,0, 19,22,0, 20,19,1, 21,19,1, 22,19,1,
3026 // Length and number of words of that length
3027 3, 16,
3028 // Coordinates where words start and direction (0 = horizontal)
3029 0,8,0, 0,14,0, 0,19,0, 3,16,0, 3,20,1, 8,0,1, 8,20,1, 10,3,1, 12,17,1, 14,0,1, 14,20,1, 17,6,0, 19,0,1, 20,3,0, 20,8,0, 20,14,0,
3030 // End marker
3031 0
3032 };
3033
3034
3035 /*
3036 * Name: 23.08, 23 x 23
3037 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
3038 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
3039 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
3040 * (_ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _)
3041 * (_ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
3042 * (_ _ _ _ _ * _ _ _ _ * _ _ _ _ _ _ * _ _ _ _ _)
3043 * (_ _ _ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _ _ _)
3044 * (* * * _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ * * *)
3045 * (_ _ _ * _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ _)
3046 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _)
3047 * (_ _ _ _ _ * _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
3048 * (_ _ _ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _ _ _)
3049 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ * _ _ _ _ _)
3050 * (_ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
3051 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _)
3052 * (* * * _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ * * *)
3053 * (_ _ _ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _ _ _ _)
3054 * (_ _ _ _ _ * _ _ _ _ _ _ * _ _ _ _ * _ _ _ _ _)
3055 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _)
3056 * (_ _ _ * _ _ _ _ _ * _ _ _ _ * _ _ _ _ * _ _ _)
3057 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
3058 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
3059 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
3060 */
3061 const int g47[] = {
3062 // Width and height of crossword grid
3063 23, 23,
3064 // Number of black fields
3065 75,
3066 // Black field coordinates
3067 0,7, 0,15, 1,7, 1,15, 2,7, 2,15, 3,3, 3,8, 3,13, 3,19, 4,4, 4,12, 4,18, 5,5, 5,10, 5,17, 6,6, 6,11, 6,16, 7,0, 7,1, 7,2, 7,9, 7,15, 7,20, 7,21, 7,22, 8,3, 8,8, 8,14, 9,7, 9,13, 9,19, 10,5, 10,12, 10,18, 11,6, 11,11, 11,16, 12,4, 12,10, 12,17, 13,3, 13,9, 13,15, 14,8, 14,14, 14,19, 15,0, 15,1, 15,2, 15,7, 15,13, 15,20, 15,21, 15,22, 16,6, 16,11, 16,16, 17,5, 17,12, 17,17, 18,4, 18,10, 18,18, 19,3, 19,9, 19,14, 19,19, 20,7, 20,15, 21,7, 21,15, 22,7, 22,15,
3068 // Length and number of words of that length
3069 8, 4,
3070 // Coordinates where words start and direction (0 = horizontal)
3071 0,14,0, 8,15,1, 14,0,1, 15,8,0,
3072 // Length and number of words of that length
3073 7, 44,
3074 // Coordinates where words start and direction (0 = horizontal)
3075 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,8,1, 0,9,0, 0,16,1, 0,20,0, 0,21,0, 0,22,0, 1,0,1, 1,8,1, 1,16,1, 2,0,1, 2,8,1, 2,16,1, 4,5,1, 5,4,0, 8,0,0, 8,1,0, 8,2,0, 8,20,0, 8,21,0, 8,22,0, 9,0,1, 11,18,0, 13,16,1, 16,0,0, 16,1,0, 16,2,0, 16,13,0, 16,20,0, 16,21,0, 16,22,0, 18,11,1, 20,0,1, 20,8,1, 20,16,1, 21,0,1, 21,8,1, 21,16,1, 22,0,1, 22,8,1, 22,16,1,
3076 // Length and number of words of that length
3077 6, 24,
3078 // Coordinates where words start and direction (0 = horizontal)
3079 0,6,0, 0,11,0, 0,16,0, 3,7,0, 5,11,1, 6,0,1, 6,10,0, 6,17,0, 6,17,1, 7,3,1, 10,6,1, 11,0,1, 11,5,0, 11,12,0, 11,17,1, 12,11,1, 14,15,0, 15,14,1, 16,0,1, 16,17,1, 17,6,0, 17,6,1, 17,11,0, 17,16,0,
3080 // Length and number of words of that length
3081 5, 40,
3082 // Coordinates where words start and direction (0 = horizontal)
3083 0,5,0, 0,10,0, 0,17,0, 3,14,1, 4,13,0, 4,13,1, 4,19,0, 5,0,1, 5,12,0, 5,18,0, 5,18,1, 7,10,1, 8,9,0, 8,9,1, 8,15,0, 9,8,0, 9,8,1, 9,14,0, 9,14,1, 10,0,1, 10,7,0, 10,13,0, 10,13,1, 12,5,1, 12,18,1, 13,4,0, 13,4,1, 13,10,0, 13,10,1, 14,3,0, 14,9,0, 14,9,1, 15,8,1, 17,0,1, 17,18,1, 18,5,0, 18,5,1, 18,12,0, 18,17,0, 19,4,1,
3084 // Length and number of words of that length
3085 4, 44,
3086 // Coordinates where words start and direction (0 = horizontal)
3087 0,4,0, 0,12,0, 0,18,0, 3,4,1, 3,9,1, 3,15,0, 4,0,1, 4,3,0, 4,8,0, 4,19,1, 5,6,1, 6,5,0, 6,7,1, 6,12,1, 7,6,0, 7,11,0, 7,16,0, 7,16,1, 8,4,1, 9,3,0, 10,19,0, 10,19,1, 11,7,1, 11,12,1, 12,0,1, 12,6,0, 12,11,0, 12,16,0, 13,17,0, 14,15,1, 15,3,1, 15,14,0, 15,19,0, 16,7,0, 16,7,1, 16,12,1, 17,13,1, 18,0,1, 18,19,1, 19,4,0, 19,10,0, 19,10,1, 19,15,1, 19,18,0,
3088 // Length and number of words of that length
3089 3, 16,
3090 // Coordinates where words start and direction (0 = horizontal)
3091 0,3,0, 0,8,0, 0,13,0, 0,19,0, 3,0,1, 3,20,1, 8,0,1, 9,20,1, 13,0,1, 14,20,1, 19,0,1, 19,20,1, 20,3,0, 20,9,0, 20,14,0, 20,19,0,
3092 // End marker
3093 0
3094 };
3095
3096
3097 /*
3098 * Name: 23.09, 23 x 23
3099 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
3100 * (_ _ _ _ _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
3101 * (_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ * _ _ _ _ _)
3102 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
3103 * (_ _ _ _ _ * _ _ _ * _ _ _ * _ _ _ _ _ * _ _ _)
3104 * (* * * _ _ _ _ _ * _ _ _ _ _ * _ _ _ * _ _ _ *)
3105 * (_ _ _ * _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
3106 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ * _ _ _ _ _ _)
3107 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
3108 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _)
3109 * (_ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _)
3110 * (* * _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ * *)
3111 * (_ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _)
3112 * (_ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
3113 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
3114 * (_ _ _ _ _ _ * _ _ _ * _ _ _ _ _ * _ _ _ _ _ _)
3115 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ * _ _ _)
3116 * (* _ _ _ * _ _ _ * _ _ _ _ _ * _ _ _ _ _ * * *)
3117 * (_ _ _ * _ _ _ _ _ * _ _ _ * _ _ _ * _ _ _ _ _)
3118 * (_ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
3119 * (_ _ _ _ _ * _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _)
3120 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ _ _ _ _)
3121 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
3122 */
3123 const int g48[] = {
3124 // Width and height of crossword grid
3125 23, 23,
3126 // Number of black fields
3127 76,
3128 // Black field coordinates
3129 0,5, 0,11, 0,17, 1,5, 1,11, 2,5, 3,6, 3,12, 3,18, 4,3, 4,9, 4,13, 4,17, 5,0, 5,4, 5,8, 5,14, 5,20, 5,21, 5,22, 6,7, 6,15, 6,19, 7,6, 7,10, 7,16, 8,5, 8,11, 8,17, 9,4, 9,12, 9,18, 10,3, 10,9, 10,15, 11,0, 11,1, 11,8, 11,14, 11,21, 11,22, 12,7, 12,13, 12,19, 13,4, 13,10, 13,18, 14,5, 14,11, 14,17, 15,6, 15,12, 15,16, 16,3, 16,7, 16,15, 17,0, 17,1, 17,2, 17,8, 17,14, 17,18, 17,22, 18,5, 18,9, 18,13, 18,19, 19,4, 19,10, 19,16, 20,17, 21,11, 21,17, 22,5, 22,11, 22,17,
3130 // Length and number of words of that length
3131 17, 4,
3132 // Coordinates where words start and direction (0 = horizontal)
3133 0,2,0, 2,6,1, 6,20,0, 20,0,1,
3134 // Length and number of words of that length
3135 11, 4,
3136 // Coordinates where words start and direction (0 = horizontal)
3137 0,1,0, 1,12,1, 12,21,0, 21,0,1,
3138 // Length and number of words of that length
3139 7, 16,
3140 // Coordinates where words start and direction (0 = horizontal)
3141 0,10,0, 0,16,0, 5,13,0, 6,0,1, 6,8,1, 8,6,0, 8,16,0, 9,5,1, 10,16,1, 11,9,0, 12,0,1, 13,11,1, 16,6,0, 16,8,1, 16,12,0, 16,16,1,
3142 // Length and number of words of that length
3143 6, 16,
3144 // Coordinates where words start and direction (0 = horizontal)
3145 0,7,0, 0,15,0, 0,19,0, 2,11,0, 3,0,1, 7,0,1, 7,17,1, 11,2,1, 11,15,1, 15,0,1, 15,11,0, 15,17,1, 17,3,0, 17,7,0, 17,15,0, 19,17,1,
3146 // Length and number of words of that length
3147 5, 86,
3148 // Coordinates where words start and direction (0 = horizontal)
3149 0,0,0, 0,0,1, 0,4,0, 0,6,1, 0,8,0, 0,12,1, 0,14,0, 0,18,1, 0,20,0, 0,21,0, 0,22,0, 1,0,1, 1,6,1, 2,0,1, 3,5,0, 3,7,1, 3,13,1, 4,4,1, 4,12,0, 4,18,0, 4,18,1, 5,3,0, 5,9,0, 5,9,1, 5,15,1, 6,0,0, 6,8,0, 6,14,0, 6,21,0, 6,22,0, 7,7,0, 7,11,1, 7,19,0, 8,0,1, 8,6,1, 8,10,0, 8,12,1, 8,18,1, 9,5,0, 9,11,0, 9,13,1, 9,17,0, 10,4,1, 10,10,1, 10,12,0, 11,3,0, 11,9,1, 11,15,0, 12,0,0, 12,1,0, 12,8,0, 12,8,1, 12,14,0, 12,14,1, 12,22,0, 13,5,1, 13,13,0, 13,19,0, 14,0,1, 14,4,0, 14,6,1, 14,10,0, 14,12,1, 14,18,1, 15,7,1, 15,17,0, 17,3,1, 17,9,1, 18,0,0, 18,0,1, 18,1,0, 18,2,0, 18,8,0, 18,14,0, 18,14,1, 18,18,0, 18,22,0, 19,5,1, 19,11,1, 20,18,1, 21,12,1, 21,18,1, 22,0,1, 22,6,1, 22,12,1, 22,18,1,
3150 // Length and number of words of that length
3151 4, 12,
3152 // Coordinates where words start and direction (0 = horizontal)
3153 0,3,0, 0,9,0, 0,13,0, 3,19,1, 9,0,1, 9,19,1, 13,0,1, 13,19,1, 19,0,1, 19,9,0, 19,13,0, 19,19,0,
3154 // Length and number of words of that length
3155 3, 36,
3156 // Coordinates where words start and direction (0 = horizontal)
3157 0,6,0, 0,12,0, 0,18,0, 1,17,0, 4,0,1, 4,6,0, 4,10,1, 4,14,1, 5,1,1, 5,5,1, 5,17,0, 6,4,0, 6,16,1, 6,20,1, 7,7,1, 7,15,0, 10,0,1, 10,4,0, 10,18,0, 12,20,1, 13,7,0, 14,18,0, 15,5,0, 15,13,1, 16,0,1, 16,4,1, 16,16,0, 17,15,1, 17,19,1, 18,6,1, 18,10,1, 18,20,1, 19,5,0, 20,4,0, 20,10,0, 20,16,0,
3158 // End marker
3159 0
3160 };
3161
3162
3163 /*
3164 * Name: 23.10, 23 x 23
3165 * (_ _ _ _ _ _ * _ _ _ _ _ _ * _ _ _ * _ _ _ _ _)
3166 * (_ _ _ _ _ _ * _ _ _ _ _ _ * _ _ _ _ _ _ _ _ _)
3167 * (_ _ _ _ _ _ _ _ _ _ _ _ _ * _ _ _ _ _ _ _ _ _)
3168 * (_ _ _ * _ _ _ _ _ _ _ _ * _ _ _ _ _ _ * _ _ _)
3169 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
3170 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ *)
3171 * (* * _ _ _ _ * _ _ _ _ _ _ _ _ _ * _ _ _ _ _ _)
3172 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
3173 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ _)
3174 * (_ _ _ _ _ _ _ _ _ * _ _ _ * _ _ _ _ _ _ * * *)
3175 * (_ _ _ _ _ * _ _ _ _ _ _ * _ _ _ _ _ _ * _ _ _)
3176 * (_ _ _ _ * _ _ _ _ _ _ * _ _ _ _ _ _ * _ _ _ _)
3177 * (_ _ _ * _ _ _ _ _ _ * _ _ _ _ _ _ * _ _ _ _ _)
3178 * (* * * _ _ _ _ _ _ * _ _ _ * _ _ _ _ _ _ _ _ _)
3179 * (_ _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ _ _ _)
3180 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ _ _)
3181 * (_ _ _ _ _ _ * _ _ _ _ _ _ _ _ _ * _ _ _ _ * *)
3182 * (* _ _ _ * _ _ _ _ _ _ _ * _ _ _ _ _ * _ _ _ _)
3183 * (_ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _ * _ _ _ _ _)
3184 * (_ _ _ * _ _ _ _ _ _ * _ _ _ _ _ _ _ _ * _ _ _)
3185 * (_ _ _ _ _ _ _ _ _ * _ _ _ _ _ _ _ _ _ _ _ _ _)
3186 * (_ _ _ _ _ _ _ _ _ * _ _ _ _ _ _ * _ _ _ _ _ _)
3187 * (_ _ _ _ _ * _ _ _ * _ _ _ _ _ _ * _ _ _ _ _ _)
3188 */
3189 const int g49[] = {
3190 // Width and height of crossword grid
3191 23, 23,
3192 // Number of black fields
3193 67,
3194 // Black field coordinates
3195 0,6, 0,13, 0,17, 1,6, 1,13, 2,13, 3,3, 3,12, 3,19, 4,5, 4,11, 4,17, 5,4, 5,10, 5,18, 5,22, 6,0, 6,1, 6,6, 6,16, 7,7, 7,15, 8,8, 8,14, 9,9, 9,13, 9,20, 9,21, 9,22, 10,5, 10,12, 10,19, 11,4, 11,11, 11,18, 12,3, 12,10, 12,17, 13,0, 13,1, 13,2, 13,9, 13,13, 14,8, 14,14, 15,7, 15,15, 16,6, 16,16, 16,21, 16,22, 17,0, 17,4, 17,12, 17,18, 18,5, 18,11, 18,17, 19,3, 19,10, 19,19, 20,9, 21,9, 21,16, 22,5, 22,9, 22,16,
3196 // Length and number of words of that length
3197 13, 4,
3198 // Coordinates where words start and direction (0 = horizontal)
3199 0,2,0, 2,0,1, 10,20,0, 20,10,1,
3200 // Length and number of words of that length
3201 9, 16,
3202 // Coordinates where words start and direction (0 = horizontal)
3203 0,9,0, 0,20,0, 0,21,0, 1,14,1, 2,14,1, 6,7,1, 7,6,0, 7,16,0, 9,0,1, 13,14,1, 14,1,0, 14,2,0, 14,13,0, 16,7,1, 20,0,1, 21,0,1,
3204 // Length and number of words of that length
3205 8, 12,
3206 // Coordinates where words start and direction (0 = horizontal)
3207 0,8,0, 0,14,0, 3,4,1, 4,3,0, 8,0,1, 8,15,1, 11,19,0, 14,0,1, 14,15,1, 15,8,0, 15,14,0, 19,11,1,
3208 // Length and number of words of that length
3209 7, 16,
3210 // Coordinates where words start and direction (0 = horizontal)
3211 0,7,0, 0,15,0, 5,11,1, 5,17,0, 7,0,1, 7,8,1, 7,16,1, 8,7,0, 8,15,0, 11,5,0, 15,0,1, 15,8,1, 15,16,1, 16,7,0, 16,15,0, 17,5,1,
3212 // Length and number of words of that length
3213 6, 40,
3214 // Coordinates where words start and direction (0 = horizontal)
3215 0,0,0, 0,0,1, 0,1,0, 0,7,1, 0,16,0, 1,0,1, 1,7,1, 3,13,0, 3,13,1, 4,12,0, 4,19,0, 5,11,0, 6,10,0, 6,17,1, 7,0,0, 7,1,0, 9,14,1, 10,6,1, 10,13,1, 10,21,0, 10,22,0, 11,5,1, 11,12,0, 11,12,1, 12,4,1, 12,11,0, 12,11,1, 13,3,0, 13,3,1, 13,10,0, 14,9,0, 16,0,1, 17,6,0, 17,21,0, 17,22,0, 19,4,1, 21,10,1, 21,17,1, 22,10,1, 22,17,1,
3216 // Length and number of words of that length
3217 5, 32,
3218 // Coordinates where words start and direction (0 = horizontal)
3219 0,4,0, 0,10,0, 0,18,0, 0,18,1, 0,22,0, 4,0,1, 4,6,1, 4,12,1, 4,18,1, 5,5,0, 5,5,1, 6,4,0, 6,18,0, 8,9,1, 9,8,0, 9,14,0, 10,0,1, 12,4,0, 12,18,0, 12,18,1, 13,17,0, 14,9,1, 17,13,1, 18,0,0, 18,0,1, 18,4,0, 18,6,1, 18,12,0, 18,12,1, 18,18,0, 18,18,1, 22,0,1,
3220 // Length and number of words of that length
3221 4, 12,
3222 // Coordinates where words start and direction (0 = horizontal)
3223 0,5,0, 0,11,0, 2,6,0, 5,0,1, 6,2,1, 11,0,1, 11,19,1, 16,17,1, 17,16,0, 17,19,1, 19,11,0, 19,17,0,
3224 // Length and number of words of that length
3225 3, 24,
3226 // Coordinates where words start and direction (0 = horizontal)
3227 0,3,0, 0,12,0, 0,14,1, 0,19,0, 1,17,0, 3,0,1, 3,20,1, 5,19,1, 6,22,0, 9,10,1, 10,9,0, 10,13,0, 10,20,1, 12,0,1, 13,10,1, 14,0,0, 17,1,1, 19,0,1, 19,5,0, 19,20,1, 20,3,0, 20,10,0, 20,19,0, 22,6,1,
3228 // End marker
3229 0
3230 };
3231
3232
3233 /*
3234 * Name: puzzle01, 2 x 2
3235 * (_ *)
3236 * (_ _)
3237 */
3238 const int g50[] = {
3239 // Width and height of crossword grid
3240 2, 2,
3241 // Number of black fields
3242 1,
3243 // Black field coordinates
3244 1,0,
3245 // Length and number of words of that length
3246 2, 2,
3247 // Coordinates where words start and direction (0 = horizontal)
3248 0,0,1, 0,1,0,
3249 // Length and number of words of that length
3250 1, 2,
3251 // Coordinates where words start and direction (0 = horizontal)
3252 0,0,0, 1,1,1,
3253 // End marker
3254 0
3255 };
3256
3257
3258 /*
3259 * Name: puzzle02, 3 x 3
3260 * (* _ _)
3261 * (_ _ _)
3262 * (_ _ _)
3263 */
3264 const int g51[] = {
3265 // Width and height of crossword grid
3266 3, 3,
3267 // Number of black fields
3268 1,
3269 // Black field coordinates
3270 0,0,
3271 // Length and number of words of that length
3272 3, 4,
3273 // Coordinates where words start and direction (0 = horizontal)
3274 0,1,0, 0,2,0, 1,0,1, 2,0,1,
3275 // Length and number of words of that length
3276 2, 2,
3277 // Coordinates where words start and direction (0 = horizontal)
3278 0,1,1, 1,0,0,
3279 // End marker
3280 0
3281 };
3282
3283
3284 /*
3285 * Name: puzzle03, 4 x 4
3286 * (_ _ _ *)
3287 * (_ _ _ _)
3288 * (_ _ _ _)
3289 * (* _ _ _)
3290 */
3291 const int g52[] = {
3292 // Width and height of crossword grid
3293 4, 4,
3294 // Number of black fields
3295 2,
3296 // Black field coordinates
3297 0,3, 3,0,
3298 // Length and number of words of that length
3299 4, 4,
3300 // Coordinates where words start and direction (0 = horizontal)
3301 0,1,0, 0,2,0, 1,0,1, 2,0,1,
3302 // Length and number of words of that length
3303 3, 4,
3304 // Coordinates where words start and direction (0 = horizontal)
3305 0,0,0, 0,0,1, 1,3,0, 3,1,1,
3306 // End marker
3307 0
3308 };
3309
3310
3311 /*
3312 * Name: puzzle04, 5 x 5
3313 * (_ _ _ * *)
3314 * (_ _ _ _ *)
3315 * (_ _ _ _ _)
3316 * (* _ _ _ _)
3317 * (* * _ _ _)
3318 */
3319 const int g53[] = {
3320 // Width and height of crossword grid
3321 5, 5,
3322 // Number of black fields
3323 6,
3324 // Black field coordinates
3325 0,3, 0,4, 1,4, 3,0, 4,0, 4,1,
3326 // Length and number of words of that length
3327 5, 2,
3328 // Coordinates where words start and direction (0 = horizontal)
3329 0,2,0, 2,0,1,
3330 // Length and number of words of that length
3331 4, 4,
3332 // Coordinates where words start and direction (0 = horizontal)
3333 0,1,0, 1,0,1, 1,3,0, 3,1,1,
3334 // Length and number of words of that length
3335 3, 4,
3336 // Coordinates where words start and direction (0 = horizontal)
3337 0,0,0, 0,0,1, 2,4,0, 4,2,1,
3338 // End marker
3339 0
3340 };
3341
3342
3343 /*
3344 * Name: puzzle05, 5 x 5
3345 * (_ _ _ _ *)
3346 * (_ _ _ * _)
3347 * (_ _ _ _ _)
3348 * (_ * _ _ _)
3349 * (* _ _ _ _)
3350 */
3351 const int g54[] = {
3352 // Width and height of crossword grid
3353 5, 5,
3354 // Number of black fields
3355 4,
3356 // Black field coordinates
3357 0,4, 1,3, 3,1, 4,0,
3358 // Length and number of words of that length
3359 5, 2,
3360 // Coordinates where words start and direction (0 = horizontal)
3361 0,2,0, 2,0,1,
3362 // Length and number of words of that length
3363 4, 4,
3364 // Coordinates where words start and direction (0 = horizontal)
3365 0,0,0, 0,0,1, 1,4,0, 4,1,1,
3366 // Length and number of words of that length
3367 3, 4,
3368 // Coordinates where words start and direction (0 = horizontal)
3369 0,1,0, 1,0,1, 2,3,0, 3,2,1,
3370 // Length and number of words of that length
3371 1, 4,
3372 // Coordinates where words start and direction (0 = horizontal)
3373 0,3,0, 1,4,1, 3,0,1, 4,1,0,
3374 // End marker
3375 0
3376 };
3377
3378
3379 /*
3380 * Name: puzzle06, 5 x 5
3381 * (_ _ _ _ _)
3382 * (_ _ _ * _)
3383 * (_ _ _ _ _)
3384 * (_ * _ _ _)
3385 * (_ _ _ _ _)
3386 */
3387 const int g55[] = {
3388 // Width and height of crossword grid
3389 5, 5,
3390 // Number of black fields
3391 2,
3392 // Black field coordinates
3393 1,3, 3,1,
3394 // Length and number of words of that length
3395 5, 6,
3396 // Coordinates where words start and direction (0 = horizontal)
3397 0,0,0, 0,0,1, 0,2,0, 0,4,0, 2,0,1, 4,0,1,
3398 // Length and number of words of that length
3399 3, 4,
3400 // Coordinates where words start and direction (0 = horizontal)
3401 0,1,0, 1,0,1, 2,3,0, 3,2,1,
3402 // Length and number of words of that length
3403 1, 4,
3404 // Coordinates where words start and direction (0 = horizontal)
3405 0,3,0, 1,4,1, 3,0,1, 4,1,0,
3406 // End marker
3407 0
3408 };
3409
3410
3411 /*
3412 * Name: puzzle07, 6 x 6
3413 * (_ _ _ _ _ *)
3414 * (_ * _ _ _ _)
3415 * (_ _ _ * _ _)
3416 * (_ _ * _ _ _)
3417 * (_ _ _ _ * _)
3418 * (* _ _ _ _ _)
3419 */
3420 const int g56[] = {
3421 // Width and height of crossword grid
3422 6, 6,
3423 // Number of black fields
3424 6,
3425 // Black field coordinates
3426 0,5, 1,1, 2,3, 3,2, 4,4, 5,0,
3427 // Length and number of words of that length
3428 5, 4,
3429 // Coordinates where words start and direction (0 = horizontal)
3430 0,0,0, 0,0,1, 1,5,0, 5,1,1,
3431 // Length and number of words of that length
3432 4, 4,
3433 // Coordinates where words start and direction (0 = horizontal)
3434 0,4,0, 1,2,1, 2,1,0, 4,0,1,
3435 // Length and number of words of that length
3436 3, 4,
3437 // Coordinates where words start and direction (0 = horizontal)
3438 0,2,0, 2,0,1, 3,3,0, 3,3,1,
3439 // Length and number of words of that length
3440 2, 4,
3441 // Coordinates where words start and direction (0 = horizontal)
3442 0,3,0, 2,4,1, 3,0,1, 4,2,0,
3443 // Length and number of words of that length
3444 1, 4,
3445 // Coordinates where words start and direction (0 = horizontal)
3446 0,1,0, 1,0,1, 4,5,1, 5,4,0,
3447 // End marker
3448 0
3449 };
3450
3451
3452 /*
3453 * Name: puzzle08, 7 x 7
3454 * (_ _ _ _ * _ _)
3455 * (_ _ _ * _ _ _)
3456 * (_ _ * _ _ _ *)
3457 * (_ _ _ _ _ _ _)
3458 * (* _ _ _ * _ _)
3459 * (_ _ _ * _ _ _)
3460 * (_ _ * _ _ _ _)
3461 */
3462 const int g57[] = {
3463 // Width and height of crossword grid
3464 7, 7,
3465 // Number of black fields
3466 8,
3467 // Black field coordinates
3468 0,4, 2,2, 2,6, 3,1, 3,5, 4,0, 4,4, 6,2,
3469 // Length and number of words of that length
3470 7, 3,
3471 // Coordinates where words start and direction (0 = horizontal)
3472 0,3,0, 1,0,1, 5,0,1,
3473 // Length and number of words of that length
3474 4, 4,
3475 // Coordinates where words start and direction (0 = horizontal)
3476 0,0,0, 0,0,1, 3,6,0, 6,3,1,
3477 // Length and number of words of that length
3478 3, 9,
3479 // Coordinates where words start and direction (0 = horizontal)
3480 0,1,0, 0,5,0, 1,4,0, 2,3,1, 3,2,0, 3,2,1, 4,1,0, 4,1,1, 4,5,0,
3481 // Length and number of words of that length
3482 2, 8,
3483 // Coordinates where words start and direction (0 = horizontal)
3484 0,2,0, 0,5,1, 0,6,0, 2,0,1, 4,5,1, 5,0,0, 5,4,0, 6,0,1,
3485 // Length and number of words of that length
3486 1, 2,
3487 // Coordinates where words start and direction (0 = horizontal)
3488 3,0,1, 3,6,1,
3489 // End marker
3490 0
3491 };
3492
3493
3494 /*
3495 * Name: puzzle09, 7 x 7
3496 * (* * _ _ _ * *)
3497 * (* _ _ _ _ _ *)
3498 * (_ _ _ * _ _ _)
3499 * (_ _ _ _ _ _ _)
3500 * (_ _ _ * _ _ _)
3501 * (* _ _ _ _ _ *)
3502 * (* * _ _ _ * *)
3503 */
3504 const int g58[] = {
3505 // Width and height of crossword grid
3506 7, 7,
3507 // Number of black fields
3508 14,
3509 // Black field coordinates
3510 0,0, 0,1, 0,5, 0,6, 1,0, 1,6, 3,2, 3,4, 5,0, 5,6, 6,0, 6,1, 6,5, 6,6,
3511 // Length and number of words of that length
3512 7, 3,
3513 // Coordinates where words start and direction (0 = horizontal)
3514 0,3,0, 2,0,1, 4,0,1,
3515 // Length and number of words of that length
3516 5, 4,
3517 // Coordinates where words start and direction (0 = horizontal)
3518 1,1,0, 1,1,1, 1,5,0, 5,1,1,
3519 // Length and number of words of that length
3520 3, 8,
3521 // Coordinates where words start and direction (0 = horizontal)
3522 0,2,0, 0,2,1, 0,4,0, 2,0,0, 2,6,0, 4,2,0, 4,4,0, 6,2,1,
3523 // Length and number of words of that length
3524 2, 2,
3525 // Coordinates where words start and direction (0 = horizontal)
3526 3,0,1, 3,5,1,
3527 // Length and number of words of that length
3528 1, 1,
3529 // Coordinates where words start and direction (0 = horizontal)
3530 3,3,1,
3531 // End marker
3532 0
3533 };
3534
3535
3536 /*
3537 * Name: puzzle10, 7 x 7
3538 * (_ _ _ * _ _ _)
3539 * (_ _ _ * _ _ _)
3540 * (_ _ _ _ _ _ _)
3541 * (* * _ * _ * *)
3542 * (_ _ _ _ _ _ _)
3543 * (_ _ _ * _ _ _)
3544 * (_ _ _ * _ _ _)
3545 */
3546 const int g59[] = {
3547 // Width and height of crossword grid
3548 7, 7,
3549 // Number of black fields
3550 9,
3551 // Black field coordinates
3552 0,3, 1,3, 3,0, 3,1, 3,3, 3,5, 3,6, 5,3, 6,3,
3553 // Length and number of words of that length
3554 7, 4,
3555 // Coordinates where words start and direction (0 = horizontal)
3556 0,2,0, 0,4,0, 2,0,1, 4,0,1,
3557 // Length and number of words of that length
3558 3, 16,
3559 // Coordinates where words start and direction (0 = horizontal)
3560 0,0,0, 0,0,1, 0,1,0, 0,4,1, 0,5,0, 0,6,0, 1,0,1, 1,4,1, 4,0,0, 4,1,0, 4,5,0, 4,6,0, 5,0,1, 5,4,1, 6,0,1, 6,4,1,
3561 // Length and number of words of that length
3562 1, 4,
3563 // Coordinates where words start and direction (0 = horizontal)
3564 2,3,0, 3,2,1, 3,4,1, 4,3,0,
3565 // End marker
3566 0
3567 };
3568
3569
3570 /*
3571 * Name: puzzle11, 7 x 7
3572 * (* * _ _ _ _ *)
3573 * (* _ _ _ _ _ _)
3574 * (_ _ _ * _ _ _)
3575 * (_ _ _ * _ _ _)
3576 * (_ _ _ * _ _ _)
3577 * (_ _ _ _ _ _ *)
3578 * (* _ _ _ _ * *)
3579 */
3580 const int g60[] = {
3581 // Width and height of crossword grid
3582 7, 7,
3583 // Number of black fields
3584 11,
3585 // Black field coordinates
3586 0,0, 0,1, 0,6, 1,0, 3,2, 3,3, 3,4, 5,6, 6,0, 6,5, 6,6,
3587 // Length and number of words of that length
3588 7, 2,
3589 // Coordinates where words start and direction (0 = horizontal)
3590 2,0,1, 4,0,1,
3591 // Length and number of words of that length
3592 6, 4,
3593 // Coordinates where words start and direction (0 = horizontal)
3594 0,5,0, 1,1,0, 1,1,1, 5,0,1,
3595 // Length and number of words of that length
3596 4, 4,
3597 // Coordinates where words start and direction (0 = horizontal)
3598 0,2,1, 1,6,0, 2,0,0, 6,1,1,
3599 // Length and number of words of that length
3600 3, 6,
3601 // Coordinates where words start and direction (0 = horizontal)
3602 0,2,0, 0,3,0, 0,4,0, 4,2,0, 4,3,0, 4,4,0,
3603 // Length and number of words of that length
3604 2, 2,
3605 // Coordinates where words start and direction (0 = horizontal)
3606 3,0,1, 3,5,1,
3607 // End marker
3608 0
3609 };
3610
3611
3612 /*
3613 * Name: puzzle12, 8 x 8
3614 * (_ _ _ _ * _ _ _)
3615 * (_ _ _ _ * _ _ _)
3616 * (_ _ _ _ * _ _ _)
3617 * (* * * _ _ _ _ _)
3618 * (_ _ _ _ _ * * *)
3619 * (_ _ _ * _ _ _ _)
3620 * (_ _ _ * _ _ _ _)
3621 * (_ _ _ * _ _ _ _)
3622 */
3623 const int g61[] = {
3624 // Width and height of crossword grid
3625 8, 8,
3626 // Number of black fields
3627 12,
3628 // Black field coordinates
3629 0,3, 1,3, 2,3, 3,5, 3,6, 3,7, 4,0, 4,1, 4,2, 5,4, 6,4, 7,4,
3630 // Length and number of words of that length
3631 5, 4,
3632 // Coordinates where words start and direction (0 = horizontal)
3633 0,4,0, 3,0,1, 3,3,0, 4,3,1,
3634 // Length and number of words of that length
3635 4, 12,
3636 // Coordinates where words start and direction (0 = horizontal)
3637 0,0,0, 0,1,0, 0,2,0, 0,4,1, 1,4,1, 2,4,1, 4,5,0, 4,6,0, 4,7,0, 5,0,1, 6,0,1, 7,0,1,
3638 // Length and number of words of that length
3639 3, 12,
3640 // Coordinates where words start and direction (0 = horizontal)
3641 0,0,1, 0,5,0, 0,6,0, 0,7,0, 1,0,1, 2,0,1, 5,0,0, 5,1,0, 5,2,0, 5,5,1, 6,5,1, 7,5,1,
3642 // End marker
3643 0
3644 };
3645
3646
3647 /*
3648 * Name: puzzle13, 9 x 9
3649 * (_ _ _ _ * _ _ _ _)
3650 * (_ _ _ _ * _ _ _ _)
3651 * (_ _ _ * * * _ _ _)
3652 * (_ _ _ _ _ _ _ _ _)
3653 * (* * * _ _ _ * * *)
3654 * (_ _ _ _ _ _ _ _ _)
3655 * (_ _ _ * * * _ _ _)
3656 * (_ _ _ _ * _ _ _ _)
3657 * (_ _ _ _ * _ _ _ _)
3658 */
3659 const int g62[] = {
3660 // Width and height of crossword grid
3661 9, 9,
3662 // Number of black fields
3663 16,
3664 // Black field coordinates
3665 0,4, 1,4, 2,4, 3,2, 3,6, 4,0, 4,1, 4,2, 4,6, 4,7, 4,8, 5,2, 5,6, 6,4, 7,4, 8,4,
3666 // Length and number of words of that length
3667 9, 2,
3668 // Coordinates where words start and direction (0 = horizontal)
3669 0,3,0, 0,5,0,
3670 // Length and number of words of that length
3671 4, 20,
3672 // Coordinates where words start and direction (0 = horizontal)
3673 0,0,0, 0,0,1, 0,1,0, 0,5,1, 0,7,0, 0,8,0, 1,0,1, 1,5,1, 2,0,1, 2,5,1, 5,0,0, 5,1,0, 5,7,0, 5,8,0, 6,0,1, 6,5,1, 7,0,1, 7,5,1, 8,0,1, 8,5,1,
3674 // Length and number of words of that length
3675 3, 8,
3676 // Coordinates where words start and direction (0 = horizontal)
3677 0,2,0, 0,6,0, 3,3,1, 3,4,0, 4,3,1, 5,3,1, 6,2,0, 6,6,0,
3678 // Length and number of words of that length
3679 2, 4,
3680 // Coordinates where words start and direction (0 = horizontal)
3681 3,0,1, 3,7,1, 5,0,1, 5,7,1,
3682 // End marker
3683 0
3684 };
3685
3686
3687 /*
3688 * Name: puzzle14, 10 x 10
3689 * (* * * _ _ _ _ * * *)
3690 * (* * _ _ _ _ _ * * *)
3691 * (* _ _ _ _ _ _ _ * *)
3692 * (_ _ _ _ _ * * _ _ _)
3693 * (_ _ _ _ * * * _ _ _)
3694 * (_ _ _ * * * _ _ _ _)
3695 * (_ _ _ * * _ _ _ _ _)
3696 * (* * _ _ _ _ _ _ _ *)
3697 * (* * * _ _ _ _ _ * *)
3698 * (* * * _ _ _ _ * * *)
3699 */
3700 const int g63[] = {
3701 // Width and height of crossword grid
3702 10, 10,
3703 // Number of black fields
3704 38,
3705 // Black field coordinates
3706 0,0, 0,1, 0,2, 0,7, 0,8, 0,9, 1,0, 1,1, 1,7, 1,8, 1,9, 2,0, 2,8, 2,9, 3,5, 3,6, 4,4, 4,5, 4,6, 5,3, 5,4, 5,5, 6,3, 6,4, 7,0, 7,1, 7,9, 8,0, 8,1, 8,2, 8,8, 8,9, 9,0, 9,1, 9,2, 9,7, 9,8, 9,9,
3707 // Length and number of words of that length
3708 7, 4,
3709 // Coordinates where words start and direction (0 = horizontal)
3710 1,2,0, 2,1,1, 2,7,0, 7,2,1,
3711 // Length and number of words of that length
3712 5, 8,
3713 // Coordinates where words start and direction (0 = horizontal)
3714 0,3,0, 1,2,1, 2,1,0, 3,0,1, 3,8,0, 5,6,0, 6,5,1, 8,3,1,
3715 // Length and number of words of that length
3716 4, 8,
3717 // Coordinates where words start and direction (0 = horizontal)
3718 0,3,1, 0,4,0, 3,0,0, 3,9,0, 4,0,1, 5,6,1, 6,5,0, 9,3,1,
3719 // Length and number of words of that length
3720 3, 8,
3721 // Coordinates where words start and direction (0 = horizontal)
3722 0,5,0, 0,6,0, 3,7,1, 4,7,1, 5,0,1, 6,0,1, 7,3,0, 7,4,0,
3723 // End marker
3724 0
3725 };
3726
3727
3728 /*
3729 * Name: puzzle15, 11 x 11
3730 * (_ _ _ _ * * * _ _ _ _)
3731 * (_ _ _ _ _ * _ _ _ _ _)
3732 * (_ _ _ _ _ * _ _ _ _ _)
3733 * (_ _ _ * _ _ _ * _ _ _)
3734 * (* _ _ _ _ _ * _ _ _ *)
3735 * (* * * _ _ _ _ _ * * *)
3736 * (* _ _ _ * _ _ _ _ _ *)
3737 * (_ _ _ * _ _ _ * _ _ _)
3738 * (_ _ _ _ _ * _ _ _ _ _)
3739 * (_ _ _ _ _ * _ _ _ _ _)
3740 * (_ _ _ _ * * * _ _ _ _)
3741 */
3742 const int g64[] = {
3743 // Width and height of crossword grid
3744 11, 11,
3745 // Number of black fields
3746 26,
3747 // Black field coordinates
3748 0,4, 0,5, 0,6, 1,5, 2,5, 3,3, 3,7, 4,0, 4,6, 4,10, 5,0, 5,1, 5,2, 5,8, 5,9, 5,10, 6,0, 6,4, 6,10, 7,3, 7,7, 8,5, 9,5, 10,4, 10,5, 10,6,
3749 // Length and number of words of that length
3750 5, 22,
3751 // Coordinates where words start and direction (0 = horizontal)
3752 0,1,0, 0,2,0, 0,8,0, 0,9,0, 1,0,1, 1,4,0, 1,6,1, 2,0,1, 2,6,1, 3,5,0, 4,1,1, 5,3,1, 5,6,0, 6,1,0, 6,2,0, 6,5,1, 6,8,0, 6,9,0, 8,0,1, 8,6,1, 9,0,1, 9,6,1,
3753 // Length and number of words of that length
3754 4, 8,
3755 // Coordinates where words start and direction (0 = horizontal)
3756 0,0,0, 0,0,1, 0,7,1, 0,10,0, 7,0,0, 7,10,0, 10,0,1, 10,7,1,
3757 // Length and number of words of that length
3758 3, 16,
3759 // Coordinates where words start and direction (0 = horizontal)
3760 0,3,0, 0,7,0, 1,6,0, 3,0,1, 3,4,1, 3,8,1, 4,3,0, 4,7,0, 4,7,1, 6,1,1, 7,0,1, 7,4,0, 7,4,1, 7,8,1, 8,3,0, 8,7,0,
3761 // End marker
3762 0
3763 };
3764
3765
3766 /*
3767 * Name: puzzle16, 13 x 13
3768 * (_ _ _ * _ _ _ _ * _ _ _ _)
3769 * (_ _ _ * _ _ _ _ * _ _ _ _)
3770 * (_ _ _ * _ _ _ _ * _ _ _ _)
3771 * (_ _ _ _ _ _ * _ _ _ * * *)
3772 * (* * * _ _ _ * _ _ _ _ _ _)
3773 * (_ _ _ _ _ * _ _ _ * _ _ _)
3774 * (_ _ _ _ * _ _ _ * _ _ _ _)
3775 * (_ _ _ * _ _ _ * _ _ _ _ _)
3776 * (_ _ _ _ _ _ * _ _ _ * * *)
3777 * (* * * _ _ _ * _ _ _ _ _ _)
3778 * (_ _ _ _ * _ _ _ _ * _ _ _)
3779 * (_ _ _ _ * _ _ _ _ * _ _ _)
3780 * (_ _ _ _ * _ _ _ _ * _ _ _)
3781 */
3782 const int g65[] = {
3783 // Width and height of crossword grid
3784 13, 13,
3785 // Number of black fields
3786 34,
3787 // Black field coordinates
3788 0,4, 0,9, 1,4, 1,9, 2,4, 2,9, 3,0, 3,1, 3,2, 3,7, 4,6, 4,10, 4,11, 4,12, 5,5, 6,3, 6,4, 6,8, 6,9, 7,7, 8,0, 8,1, 8,2, 8,6, 9,5, 9,10, 9,11, 9,12, 10,3, 10,8, 11,3, 11,8, 12,3, 12,8,
3789 // Length and number of words of that length
3790 7, 2,
3791 // Coordinates where words start and direction (0 = horizontal)
3792 5,6,1, 7,0,1,
3793 // Length and number of words of that length
3794 6, 6,
3795 // Coordinates where words start and direction (0 = horizontal)
3796 0,3,0, 0,8,0, 4,0,1, 7,4,0, 7,9,0, 8,7,1,
3797 // Length and number of words of that length
3798 5, 6,
3799 // Coordinates where words start and direction (0 = horizontal)
3800 0,5,0, 3,8,1, 5,0,1, 7,8,1, 8,7,0, 9,0,1,
3801 // Length and number of words of that length
3802 4, 28,
3803 // Coordinates where words start and direction (0 = horizontal)
3804 0,0,1, 0,5,1, 0,6,0, 0,10,0, 0,11,0, 0,12,0, 1,0,1, 1,5,1, 2,0,1, 2,5,1, 3,3,1, 4,0,0, 4,1,0, 4,2,0, 5,10,0, 5,11,0, 5,12,0, 9,0,0, 9,1,0, 9,2,0, 9,6,0, 9,6,1, 10,4,1, 10,9,1, 11,4,1, 11,9,1, 12,4,1, 12,9,1,
3805 // Length and number of words of that length
3806 3, 26,
3807 // Coordinates where words start and direction (0 = horizontal)
3808 0,0,0, 0,1,0, 0,2,0, 0,7,0, 0,10,1, 1,10,1, 2,10,1, 3,4,0, 3,9,0, 4,7,0, 4,7,1, 5,6,0, 6,0,1, 6,5,0, 6,5,1, 6,10,1, 7,3,0, 7,8,0, 8,3,1, 10,0,1, 10,5,0, 10,10,0, 10,11,0, 10,12,0, 11,0,1, 12,0,1,
3809 // End marker
3810 0
3811 };
3812
3813
3814 /*
3815 * Name: puzzle17, 15 x 15
3816 * (_ _ _ * _ _ _ * _ _ _ * _ _ _)
3817 * (_ _ _ * _ _ _ * _ _ _ * _ _ _)
3818 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _)
3819 * (* * _ _ _ _ * _ _ _ _ _ _ * *)
3820 * (_ _ _ _ _ * _ _ _ * _ _ _ _ _)
3821 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
3822 * (_ _ _ _ _ _ _ * _ _ _ * _ _ _)
3823 * (* * * _ _ _ * * * _ _ _ * * *)
3824 * (_ _ _ * _ _ _ * _ _ _ _ _ _ _)
3825 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
3826 * (_ _ _ _ _ * _ _ _ * _ _ _ _ _)
3827 * (* * _ _ _ _ _ _ * _ _ _ _ * *)
3828 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _)
3829 * (_ _ _ * _ _ _ * _ _ _ * _ _ _)
3830 * (_ _ _ * _ _ _ * _ _ _ * _ _ _)
3831 */
3832 const int g66[] = {
3833 // Width and height of crossword grid
3834 15, 15,
3835 // Number of black fields
3836 45,
3837 // Black field coordinates
3838 0,3, 0,7, 0,11, 1,3, 1,7, 1,11, 2,7, 3,0, 3,1, 3,8, 3,13, 3,14, 4,5, 4,9, 5,4, 5,10, 6,3, 6,7, 7,0, 7,1, 7,2, 7,6, 7,7, 7,8, 7,12, 7,13, 7,14, 8,7, 8,11, 9,4, 9,10, 10,5, 10,9, 11,0, 11,1, 11,6, 11,13, 11,14, 12,7, 13,3, 13,7, 13,11, 14,3, 14,7, 14,11,
3839 // Length and number of words of that length
3840 7, 12,
3841 // Coordinates where words start and direction (0 = horizontal)
3842 0,2,0, 0,6,0, 0,12,0, 2,0,1, 2,8,1, 6,8,1, 8,0,1, 8,2,0, 8,8,0, 8,12,0, 12,0,1, 12,8,1,
3843 // Length and number of words of that length
3844 6, 4,
3845 // Coordinates where words start and direction (0 = horizontal)
3846 2,11,0, 3,2,1, 7,3,0, 11,7,1,
3847 // Length and number of words of that length
3848 5, 12,
3849 // Coordinates where words start and direction (0 = horizontal)
3850 0,4,0, 0,10,0, 4,0,1, 4,10,1, 5,5,0, 5,5,1, 5,9,0, 9,5,1, 10,0,1, 10,4,0, 10,10,0, 10,10,1,
3851 // Length and number of words of that length
3852 4, 12,
3853 // Coordinates where words start and direction (0 = horizontal)
3854 0,5,0, 0,9,0, 2,3,0, 3,9,1, 5,0,1, 5,11,1, 9,0,1, 9,11,0, 9,11,1, 11,2,1, 11,5,0, 11,9,0,
3855 // Length and number of words of that length
3856 3, 48,
3857 // Coordinates where words start and direction (0 = horizontal)
3858 0,0,0, 0,0,1, 0,1,0, 0,4,1, 0,8,0, 0,8,1, 0,12,1, 0,13,0, 0,14,0, 1,0,1, 1,4,1, 1,8,1, 1,12,1, 3,7,0, 4,0,0, 4,1,0, 4,6,1, 4,8,0, 4,13,0, 4,14,0, 6,0,1, 6,4,0, 6,4,1, 6,10,0, 7,3,1, 7,9,1, 8,0,0, 8,1,0, 8,6,0, 8,8,1, 8,12,1, 8,13,0, 8,14,0, 9,7,0, 10,6,1, 12,0,0, 12,1,0, 12,6,0, 12,13,0, 12,14,0, 13,0,1, 13,4,1, 13,8,1, 13,12,1, 14,0,1, 14,4,1, 14,8,1, 14,12,1,
3859 // End marker
3860 0
3861 };
3862
3863
3864 /*
3865 * Name: puzzle18, 15 x 15
3866 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
3867 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
3868 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
3869 * (_ _ _ _ _ * _ _ _ * * _ _ _ _)
3870 * (* * * * _ _ _ * * _ _ _ * * *)
3871 * (_ _ _ * _ _ _ * _ _ _ * _ _ _)
3872 * (_ _ _ _ * _ _ _ _ _ _ _ _ _ _)
3873 * (_ _ _ _ * * _ _ _ * * _ _ _ _)
3874 * (_ _ _ _ _ _ _ _ _ _ * _ _ _ _)
3875 * (_ _ _ * _ _ _ * _ _ _ * _ _ _)
3876 * (* * * _ _ _ * * _ _ _ * * * *)
3877 * (_ _ _ _ * * _ _ _ * _ _ _ _ _)
3878 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
3879 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
3880 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
3881 */
3882 const int g67[] = {
3883 // Width and height of crossword grid
3884 15, 15,
3885 // Number of black fields
3886 48,
3887 // Black field coordinates
3888 0,4, 0,10, 1,4, 1,10, 2,4, 2,10, 3,4, 3,5, 3,9, 4,0, 4,1, 4,2, 4,6, 4,7, 4,11, 4,12, 4,13, 4,14, 5,3, 5,7, 5,11, 6,10, 7,4, 7,5, 7,9, 7,10, 8,4, 9,3, 9,7, 9,11, 10,0, 10,1, 10,2, 10,3, 10,7, 10,8, 10,12, 10,13, 10,14, 11,5, 11,9, 11,10, 12,4, 12,10, 13,4, 13,10, 14,4, 14,10,
3889 // Length and number of words of that length
3890 10, 4,
3891 // Coordinates where words start and direction (0 = horizontal)
3892 0,8,0, 5,6,0, 6,0,1, 8,5,1,
3893 // Length and number of words of that length
3894 5, 16,
3895 // Coordinates where words start and direction (0 = horizontal)
3896 0,3,0, 0,5,1, 1,5,1, 2,5,1, 3,10,1, 5,0,0, 5,1,0, 5,2,0, 5,12,0, 5,13,0, 5,14,0, 10,11,0, 11,0,1, 12,5,1, 13,5,1, 14,5,1,
3897 // Length and number of words of that length
3898 4, 36,
3899 // Coordinates where words start and direction (0 = horizontal)
3900 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,6,0, 0,7,0, 0,11,0, 0,11,1, 0,12,0, 0,13,0, 0,14,0, 1,0,1, 1,11,1, 2,0,1, 2,11,1, 3,0,1, 6,11,1, 7,0,1, 7,11,1, 8,0,1, 11,0,0, 11,1,0, 11,2,0, 11,3,0, 11,7,0, 11,8,0, 11,11,1, 11,12,0, 11,13,0, 11,14,0, 12,0,1, 12,11,1, 13,0,1, 13,11,1, 14,0,1, 14,11,1,
3901 // Length and number of words of that length
3902 3, 30,
3903 // Coordinates where words start and direction (0 = horizontal)
3904 0,5,0, 0,9,0, 3,6,1, 3,10,0, 4,3,1, 4,4,0, 4,5,0, 4,8,1, 4,9,0, 5,0,1, 5,4,1, 5,8,1, 5,12,1, 6,3,0, 6,7,0, 6,11,0, 7,6,1, 8,5,0, 8,9,0, 8,10,0, 9,0,1, 9,4,0, 9,4,1, 9,8,1, 9,12,1, 10,4,1, 10,9,1, 11,6,1, 12,5,0, 12,9,0,
3905 // End marker
3906 0
3907 };
3908
3909
3910 /*
3911 * Name: puzzle19, 15 x 15
3912 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
3913 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
3914 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
3915 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _)
3916 * (* * * _ _ _ * _ _ _ _ _ * * *)
3917 * (_ _ _ _ _ * _ _ _ * _ _ _ _ _)
3918 * (_ _ _ _ * _ _ _ _ _ _ * _ _ _)
3919 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
3920 * (_ _ _ * _ _ _ _ _ _ * _ _ _ _)
3921 * (_ _ _ _ _ * _ _ _ * _ _ _ _ _)
3922 * (* * * _ _ _ _ _ * _ _ _ * * *)
3923 * (_ _ _ _ _ _ _ * _ _ _ _ _ _ _)
3924 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
3925 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
3926 * (_ _ _ _ * _ _ _ _ _ * _ _ _ _)
3927 */
3928 const int g68[] = {
3929 // Width and height of crossword grid
3930 15, 15,
3931 // Number of black fields
3932 38,
3933 // Black field coordinates
3934 0,4, 0,10, 1,4, 1,10, 2,4, 2,10, 3,8, 4,0, 4,1, 4,2, 4,6, 4,7, 4,12, 4,13, 4,14, 5,5, 5,9, 6,4, 7,3, 7,11, 8,10, 9,5, 9,9, 10,0, 10,1, 10,2, 10,7, 10,8, 10,12, 10,13, 10,14, 11,6, 12,4, 12,10, 13,4, 13,10, 14,4, 14,10,
3935 // Length and number of words of that length
3936 10, 2,
3937 // Coordinates where words start and direction (0 = horizontal)
3938 6,5,1, 8,0,1,
3939 // Length and number of words of that length
3940 8, 2,
3941 // Coordinates where words start and direction (0 = horizontal)
3942 3,0,1, 11,7,1,
3943 // Length and number of words of that length
3944 7, 5,
3945 // Coordinates where words start and direction (0 = horizontal)
3946 0,3,0, 0,11,0, 7,4,1, 8,3,0, 8,11,0,
3947 // Length and number of words of that length
3948 6, 4,
3949 // Coordinates where words start and direction (0 = horizontal)
3950 3,9,1, 4,8,0, 5,6,0, 11,0,1,
3951 // Length and number of words of that length
3952 5, 23,
3953 // Coordinates where words start and direction (0 = horizontal)
3954 0,5,0, 0,5,1, 0,9,0, 1,5,1, 2,5,1, 3,10,0, 5,0,0, 5,0,1, 5,1,0, 5,2,0, 5,7,0, 5,10,1, 5,12,0, 5,13,0, 5,14,0, 7,4,0, 9,0,1, 9,10,1, 10,5,0, 10,9,0, 12,5,1, 13,5,1, 14,5,1,
3955 // Length and number of words of that length
3956 4, 32,
3957 // Coordinates where words start and direction (0 = horizontal)
3958 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,6,0, 0,7,0, 0,11,1, 0,12,0, 0,13,0, 0,14,0, 1,0,1, 1,11,1, 2,0,1, 2,11,1, 4,8,1, 6,0,1, 8,11,1, 10,3,1, 11,0,0, 11,1,0, 11,2,0, 11,7,0, 11,8,0, 11,12,0, 11,13,0, 11,14,0, 12,0,1, 12,11,1, 13,0,1, 13,11,1, 14,0,1, 14,11,1,
3959 // Length and number of words of that length
3960 3, 12,
3961 // Coordinates where words start and direction (0 = horizontal)
3962 0,8,0, 3,4,0, 4,3,1, 5,6,1, 6,5,0, 6,9,0, 7,0,1, 7,12,1, 9,6,1, 9,10,0, 10,9,1, 12,6,0,
3963 // End marker
3964 0
3965 };
3966
3967
3968 /*
3969 * Name: puzzle20, 9 x 9
3970 * (* * * _ _ _ * * *)
3971 * (* * _ _ _ _ _ * *)
3972 * (* _ _ _ _ _ _ _ *)
3973 * (_ _ _ _ * _ _ _ _)
3974 * (_ _ _ * * * _ _ _)
3975 * (_ _ _ _ * _ _ _ _)
3976 * (* _ _ _ _ _ _ _ *)
3977 * (* * _ _ _ _ _ * *)
3978 * (* * * _ _ _ * * *)
3979 */
3980 const int g69[] = {
3981 // Width and height of crossword grid
3982 9, 9,
3983 // Number of black fields
3984 29,
3985 // Black field coordinates
3986 0,0, 0,1, 0,2, 0,6, 0,7, 0,8, 1,0, 1,1, 1,7, 1,8, 2,0, 2,8, 3,4, 4,3, 4,4, 4,5, 5,4, 6,0, 6,8, 7,0, 7,1, 7,7, 7,8, 8,0, 8,1, 8,2, 8,6, 8,7, 8,8,
3987 // Length and number of words of that length
3988 7, 4,
3989 // Coordinates where words start and direction (0 = horizontal)
3990 1,2,0, 1,6,0, 2,1,1, 6,1,1,
3991 // Length and number of words of that length
3992 5, 4,
3993 // Coordinates where words start and direction (0 = horizontal)
3994 1,2,1, 2,1,0, 2,7,0, 7,2,1,
3995 // Length and number of words of that length
3996 4, 8,
3997 // Coordinates where words start and direction (0 = horizontal)
3998 0,3,0, 0,5,0, 3,0,1, 3,5,1, 5,0,1, 5,3,0, 5,5,0, 5,5,1,
3999 // Length and number of words of that length
4000 3, 8,
4001 // Coordinates where words start and direction (0 = horizontal)
4002 0,3,1, 0,4,0, 3,0,0, 3,8,0, 4,0,1, 4,6,1, 6,4,0, 8,3,1,
4003 // End marker
4004 0
4005 };
4006
4007
4008 /*
4009 * Name: puzzle21, 13 x 13
4010 * (_ _ _ _ * _ _ _ * _ _ _ _)
4011 * (_ _ _ _ * _ _ _ * _ _ _ _)
4012 * (_ _ _ _ * _ _ _ * _ _ _ _)
4013 * (_ _ _ _ _ _ * _ _ _ _ _ _)
4014 * (* * * _ _ _ * _ _ _ * * *)
4015 * (_ _ _ _ _ * * * _ _ _ _ _)
4016 * (_ _ _ * * * * * * * _ _ _)
4017 * (_ _ _ _ _ * * * _ _ _ _ _)
4018 * (* * * _ _ _ * _ _ _ * * *)
4019 * (_ _ _ _ _ _ * _ _ _ _ _ _)
4020 * (_ _ _ _ * _ _ _ * _ _ _ _)
4021 * (_ _ _ _ * _ _ _ * _ _ _ _)
4022 * (_ _ _ _ * _ _ _ * _ _ _ _)
4023 */
4024 const int g70[] = {
4025 // Width and height of crossword grid
4026 13, 13,
4027 // Number of black fields
4028 41,
4029 // Black field coordinates
4030 0,4, 0,8, 1,4, 1,8, 2,4, 2,8, 3,6, 4,0, 4,1, 4,2, 4,6, 4,10, 4,11, 4,12, 5,5, 5,6, 5,7, 6,3, 6,4, 6,5, 6,6, 6,7, 6,8, 6,9, 7,5, 7,6, 7,7, 8,0, 8,1, 8,2, 8,6, 8,10, 8,11, 8,12, 9,6, 10,4, 10,8, 11,4, 11,8, 12,4, 12,8,
4031 // Length and number of words of that length
4032 6, 8,
4033 // Coordinates where words start and direction (0 = horizontal)
4034 0,3,0, 0,9,0, 3,0,1, 3,7,1, 7,3,0, 7,9,0, 9,0,1, 9,7,1,
4035 // Length and number of words of that length
4036 5, 8,
4037 // Coordinates where words start and direction (0 = horizontal)
4038 0,5,0, 0,7,0, 5,0,1, 5,8,1, 7,0,1, 7,8,1, 8,5,0, 8,7,0,
4039 // Length and number of words of that length
4040 4, 24,
4041 // Coordinates where words start and direction (0 = horizontal)
4042 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,9,1, 0,10,0, 0,11,0, 0,12,0, 1,0,1, 1,9,1, 2,0,1, 2,9,1, 9,0,0, 9,1,0, 9,2,0, 9,10,0, 9,11,0, 9,12,0, 10,0,1, 10,9,1, 11,0,1, 11,9,1, 12,0,1, 12,9,1,
4043 // Length and number of words of that length
4044 3, 24,
4045 // Coordinates where words start and direction (0 = horizontal)
4046 0,5,1, 0,6,0, 1,5,1, 2,5,1, 3,4,0, 3,8,0, 4,3,1, 4,7,1, 5,0,0, 5,1,0, 5,2,0, 5,10,0, 5,11,0, 5,12,0, 6,0,1, 6,10,1, 7,4,0, 7,8,0, 8,3,1, 8,7,1, 10,5,1, 10,6,0, 11,5,1, 12,5,1,
4047 // End marker
4048 0
4049 };
4050
4051
4052 /*
4053 * Name: puzzle22, 13 x 13
4054 * (_ _ _ _ * _ _ _ * _ _ _ _)
4055 * (_ _ _ _ * _ _ _ * _ _ _ _)
4056 * (_ _ _ _ * _ _ _ * _ _ _ _)
4057 * (_ _ _ _ _ _ _ _ _ _ _ _ _)
4058 * (* * * _ _ _ * _ _ _ * * *)
4059 * (_ _ _ _ _ * * * _ _ _ _ _)
4060 * (_ _ _ _ * * * * * _ _ _ _)
4061 * (_ _ _ _ _ * * * _ _ _ _ _)
4062 * (* * * _ _ _ * _ _ _ * * *)
4063 * (_ _ _ _ _ _ _ _ _ _ _ _ _)
4064 * (_ _ _ _ * _ _ _ * _ _ _ _)
4065 * (_ _ _ _ * _ _ _ * _ _ _ _)
4066 * (_ _ _ _ * _ _ _ * _ _ _ _)
4067 */
4068 const int g71[] = {
4069 // Width and height of crossword grid
4070 13, 13,
4071 // Number of black fields
4072 37,
4073 // Black field coordinates
4074 0,4, 0,8, 1,4, 1,8, 2,4, 2,8, 4,0, 4,1, 4,2, 4,6, 4,10, 4,11, 4,12, 5,5, 5,6, 5,7, 6,4, 6,5, 6,6, 6,7, 6,8, 7,5, 7,6, 7,7, 8,0, 8,1, 8,2, 8,6, 8,10, 8,11, 8,12, 10,4, 10,8, 11,4, 11,8, 12,4, 12,8,
4075 // Length and number of words of that length
4076 13, 4,
4077 // Coordinates where words start and direction (0 = horizontal)
4078 0,3,0, 0,9,0, 3,0,1, 9,0,1,
4079 // Length and number of words of that length
4080 5, 8,
4081 // Coordinates where words start and direction (0 = horizontal)
4082 0,5,0, 0,7,0, 5,0,1, 5,8,1, 7,0,1, 7,8,1, 8,5,0, 8,7,0,
4083 // Length and number of words of that length
4084 4, 28,
4085 // Coordinates where words start and direction (0 = horizontal)
4086 0,0,0, 0,0,1, 0,1,0, 0,2,0, 0,6,0, 0,9,1, 0,10,0, 0,11,0, 0,12,0, 1,0,1, 1,9,1, 2,0,1, 2,9,1, 6,0,1, 6,9,1, 9,0,0, 9,1,0, 9,2,0, 9,6,0, 9,10,0, 9,11,0, 9,12,0, 10,0,1, 10,9,1, 11,0,1, 11,9,1, 12,0,1, 12,9,1,
4087 // Length and number of words of that length
4088 3, 20,
4089 // Coordinates where words start and direction (0 = horizontal)
4090 0,5,1, 1,5,1, 2,5,1, 3,4,0, 3,8,0, 4,3,1, 4,7,1, 5,0,0, 5,1,0, 5,2,0, 5,10,0, 5,11,0, 5,12,0, 7,4,0, 7,8,0, 8,3,1, 8,7,1, 10,5,1, 11,5,1, 12,5,1,
4091 // End marker
4092 0
4093 };
4094
4095
4096 const int* grids[] = {
4097 &g0[0], &g1[0], &g2[0], &g3[0], &g4[0], &g5[0], &g6[0], &g7[0], &g8[0],
4098 &g9[0], &g10[0], &g11[0], &g12[0], &g13[0], &g14[0], &g15[0], &g16[0],
4099 &g17[0], &g18[0], &g19[0], &g20[0], &g21[0], &g22[0], &g23[0], &g24[0],
4100 &g25[0], &g26[0], &g27[0], &g28[0], &g29[0], &g30[0], &g31[0], &g32[0],
4101 &g33[0], &g34[0], &g35[0], &g36[0], &g37[0], &g38[0], &g39[0], &g40[0],
4102 &g41[0], &g42[0], &g43[0], &g44[0], &g45[0], &g46[0], &g47[0], &g48[0],
4103 &g49[0], &g50[0], &g51[0], &g52[0], &g53[0], &g54[0], &g55[0], &g56[0],
4104 &g57[0], &g58[0], &g59[0], &g60[0], &g61[0], &g62[0], &g63[0], &g64[0],
4105 &g65[0], &g66[0], &g67[0], &g68[0], &g69[0], &g70[0], &g71[0]
4106 };
4107
4108 const unsigned int n_grids = 72;
4109
4110}
4111
4112// STATISTICS: example-any
int n
Number of negative literals for node type.
struct Gecode::@603::NNF::@65::@67 a
For atomic nodes.
Example: Crossword puzzle
Definition crossword.cpp:66
const int h
Height of crossword grid.
Definition crossword.cpp:71
int main(int argc, char *argv[])
Main-function.
@ BRANCH_LETTERS_CHB
Branch on the letters.
Definition crossword.cpp:89
@ BRANCH_WORDS_CHB
Branch on the words.
Definition crossword.cpp:88
@ BRANCH_LETTERS_ACTION_ALL
Branch on the letters (try all values)
Definition crossword.cpp:87
@ BRANCH_LETTERS_AFC_ALL
Branch on the letters (try all values)
Definition crossword.cpp:84
@ BRANCH_LETTERS_CHB_ALL
Branch on the letters (try all values)
Definition crossword.cpp:90
@ BRANCH_WORDS_ACTION
Branch on the words.
Definition crossword.cpp:85
@ BRANCH_WORDS_AFC
Branch on the words.
Definition crossword.cpp:82
@ BRANCH_LETTERS_AFC
Branch on the letters.
Definition crossword.cpp:83
@ BRANCH_LETTERS_ACTION
Branch on the letters.
Definition crossword.cpp:86
Crossword(const SizeOptions &opt)
Actual model.
Definition crossword.cpp:93
static void printwords(const Space &, const Brancher &, unsigned int a, IntVar, int i, const int &n, std::ostream &os)
Print brancher information when branching on words.
bool master(const MetaInfo &mi)
Do not perform a restart when a solution is found.
const int w
Width of crossword grid.
Definition crossword.cpp:69
@ MODEL_TUPLESET
Use one tuple-set per word.
Definition crossword.cpp:78
@ MODEL_ELEMENT
Use element constraints per letter.
Definition crossword.cpp:77
static void printletters(const Space &home, const Brancher &, unsigned int a, IntVar, int i, const int &n, std::ostream &os)
Print brancher information when branching on letters.
IntVarArray letters
Letters for grid.
Definition crossword.cpp:73
Crossword(Crossword &s)
Constructor for cloning s.
virtual Space * copy(void)
Copy during cloning.
virtual void print(std::ostream &os) const
Print solution.
void init(const char *fn)
Perform actual initialization.
Definition scowl.hpp:13482
const char * word(int l, int i) const
Return word number i with length l.
Definition scowl.hpp:13611
int words(void) const
Return total number of words.
Definition scowl.hpp:13603
Parse an additional file option.
Definition scowl.hpp:37
Base-class for branchers.
Definition core.hpp:1442
Parametric base-class for scripts.
Definition driver.hh:729
static void run(const Options &opt, Script *s=NULL)
Definition script.hpp:290
Passing integer arguments.
Definition int.hh:628
Passing integer variables.
Definition int.hh:656
Integer variable array.
Definition int.hh:763
Integer variables.
Definition int.hh:371
Matrix-interface for arrays.
Information passed by meta search engines.
Definition core.hpp:1613
const NoGoods & nogoods(void) const
Return no-goods recorded from restart.
Definition core.hpp:3106
@ RESTART
Information is provided by a restart-based engine.
Definition core.hpp:1618
Type type(void) const
Return type of information.
Definition core.hpp:3082
virtual void post(Space &home) const
Post no-goods.
Definition core.cpp:82
Options for scripts with additional size parameter
Definition driver.hh:675
Computation spaces.
Definition core.hpp:1742
Class represeting a set of tuples.
Definition int.hh:2191
TupleSet & add(const IntArgs &t)
Add tuple t to tuple set.
void finalize(void)
Finalize tuple set.
void update(Space &home, VarArray< Var > &a)
Update array to be a clone of array a.
Definition array.hpp:1013
void parse(int argc, char *argv[])
Parse commandline arguments.
Definition test.cpp:120
void branch(Home home, const FloatVarArgs &x, FloatVarBranch vars, FloatValBranch vals, FloatBranchFilter bf=nullptr, FloatVarValPrint vvp=nullptr)
Branch over x with variable selection vars and value selection vals.
Definition branch.cpp:39
void extensional(Home home, const IntVarArgs &x, DFA d, IntPropLevel ipl=IPL_DEF)
Post domain consistent propagator for extensional constraint described by a DFA.
@ IPL_VAL
Value propagation.
Definition int.hh:977
Gecode toplevel namespace
IntValBranch INT_VAL_SPLIT_MIN(void)
Select values not greater than mean of smallest and largest value.
Definition val.hpp:75
IntVarBranch INT_VAR_AFC_SIZE_MAX(double d=1.0, BranchTbl tbl=nullptr)
Select variable with largest accumulated failure count divided by domain size with decay factor d.
Definition var.hpp:236
void distinct(Home home, const IntVarArgs &x, IntPropLevel ipl=IPL_DEF)
Post propagator for for all .
Definition distinct.cpp:46
IntVarBranch INT_VAR_ACTION_SIZE_MAX(double d=1.0, BranchTbl tbl=nullptr)
Select variable with largest action divided by domain size with decay factor d.
Definition var.hpp:256
void element(Home home, IntSharedArray n, IntVar x0, IntVar x1, IntPropLevel ipl=IPL_DEF)
Post domain consistent propagator for .
Definition element.cpp:39
Post propagator for SetVar SetOpType SetVar SetRelType SetVar z
Definition set.hh:767
IntValBranch INT_VALUES_MIN(void)
Try all values starting from smallest.
Definition val.hpp:100
Post propagator for SetVar SetOpType SetVar y
Definition set.hh:767
IntValBranch INT_VAL_MIN(void)
Select smallest value.
Definition val.hpp:55
IntVarBranch INT_VAR_CHB_SIZE_MAX(IntCHB c, BranchTbl tbl=nullptr)
Select variable with largest CHB Q-score divided by domain size.
Definition var.hpp:276
Post propagator for SetVar x
Definition set.hh:767
Dictionary dict
The dictionary to be used.
Definition scowl.hpp:95