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