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