tesseract/vs2010/include/leptonica/sudoku.h
2011-05-05 14:38:26 +00:00

63 lines
2.7 KiB
C

/*====================================================================*
- Copyright (C) 2001 Leptonica. All rights reserved.
- This software is distributed in the hope that it will be
- useful, but with NO WARRANTY OF ANY KIND.
- No author or distributor accepts responsibility to anyone for the
- consequences of using this software, or for whether it serves any
- particular purpose or works at all, unless he or she says so in
- writing. Everyone is granted permission to copy, modify and
- redistribute this source code, for commercial or non-commercial
- purposes, with the following restrictions: (1) the origin of this
- source code must not be misrepresented; (2) modified versions must
- be plainly marked as such; and (3) this notice may not be removed
- or altered from any source or modified source distribution.
*====================================================================*/
#ifndef SUDOKU_H_INCLUDED
#define SUDOKU_H_INCLUDED
/*
* sudoku.h
*
* The L_Sudoku holds all the information of the current state.
*
* The input to sudokuCreate() is a file with any number of lines
* starting with '#', followed by 9 lines consisting of 9 numbers
* in each line. These have the known values and use 0 for the unknowns.
* Blank lines are ignored.
*
* The @locs array holds the indices of the unknowns, numbered
* left-to-right and top-to-bottom from 0 to 80. The array size
* is initialized to @num. @current is the index into the @locs
* array of the current guess: locs[current].
*
* The @state array is used to determine the validity of each guess.
* It is of size 81, and is initialized by setting the unknowns to 0
* and the knowns to their input values.
*/
struct L_Sudoku
{
l_int32 num; /* number of unknowns */
l_int32 *locs; /* location of unknowns */
l_int32 current; /* index into @locs of current location */
l_int32 *init; /* initial state, with 0 representing */
/* the unknowns */
l_int32 *state; /* present state, including inits and */
/* guesses of unknowns up to @current */
l_int32 nguess; /* shows current number of guesses */
l_int32 finished; /* set to 1 when solved */
l_int32 failure; /* set to 1 if no solution is possible */
};
typedef struct L_Sudoku L_SUDOKU;
/* For printing out array data */
enum {
L_SUDOKU_INIT = 0,
L_SUDOKU_STATE = 1
};
#endif /* SUDOKU_H_INCLUDED */