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