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