board_t *box = initboard (n);
- int i, j;
- for (i = 0; i < board->length; i++) {
- for (j = 0; j < board->length; j++) {
+ for (int i = 0; i < board->length; i++) {
+ for (int j = 0; j < board->length; j++) {
if (getvalue (board, i, j) == val) {
*getcell (box, i % n, j % n) = '#';
}
{
int n = sqrti (board->length);
- int k, l;
- for (k = 0; k < n; k++) {
- for (l = 0; l < n; l++) {
+ for (int k = 0; k < n; k++) {
+ for (int l = 0; l < n; l++) {
if (getvalue (board, n * i + k, n * j + l) == val) {
return 1;
}
board_t *_forbidenposition (board_t *board, board_t *box, int i, char val)
{
- int j;
int n = sqrti (board->length);
- for (j = 0; j < board->length; j++) {
+ for (int j = 0; j < board->length; j++) {
/* box check */
if (getvalue (board, n * (i % n) + j % n, n * (i / n) + j / n) != ' ') {
/* verical check */
if ((j / n == i / n) && (j % n != i % n)) {
- int l;
- for (l = 0; l < board->length; l++) {
+ for (int l = 0; l < board->length; l++) {
if (getvalue (board, n * (j % n) + l % n, n * (j / n) + l / n) == val) {
- int t;
- for (t = 0; t < n; t++) {
+ for (int t = 0; t < n; t++) {
*getcell (box, t, l / n) = '#';
}
}
/* horizontal check */
if ((j / n != i / n) && (j % n == i % n)) {
- int l;
- for (l = 0; l < board->length; l++) {
+ for (int l = 0; l < board->length; l++) {
if (getvalue (board, n * (j % n) + l % n, n * (j / n) + l / n) == val) {
- int t;
- for (t = 0; t < n; t++) {
+ for (int t = 0; t < n; t++) {
*getcell (box, l % n, t) = '#';
}
}
board_t *initplay (board_t *board, int nb_known_tiles)
{
- int t;
int n = sqrti (board->length);
char *buffer = (char *) calloc (board->length * (8 + board->length) + 1, 1);
- for (t = 0; t < nb_known_tiles; t++) {
+ for (int t = 0; t < nb_known_tiles; t++) {
/* k is value */
int k = rand () % board->length;
char val = _itoh (1 + k);
board_t *box = _idemposition (board, val);
-_makecomments (buffer, box);
-printf ("box:\n%s", buffer);
-
/* i in position */
int i;
do {
/* look for forbiden position */
_forbidenposition (board, box, i, val);
-_makecomments (buffer, box);
-printf ("box:\n%s", buffer);
-
/* count avaliable position */
- int j;
int pos = 0;
- for (j = 0; j < board->length; j++) {
+ for (int j = 0; j < board->length; j++) {
if (getvalue (box, j % n, j / n) == ' ') {
pos++;
}
if (pos > 0) {
pos = rand () % pos;
- for (j = 0; (j < board->length) && (pos >= 0); j++) {
+ for (int j = 0; (j < board->length) && (pos >= 0); j++) {
if (getvalue (box, j % n, j / n) == ' ') {
if (pos == 0) {
*getcell (board, n * (i % n) + j % n, n * (i / n) + j / n) = val;
}
}
- _makecomments (buffer, board);
- printf ("board:\n%s", buffer);
-
freeboard (box);
}
int _makecomments (char *buffer, board_t *board)
{
- int i, j, l = 0;
- for (j = 0; j < board->length; j++) {
+ int l = 0;
+ for (int j = 0; j < board->length; j++) {
l += sprintf (buffer + l, "rem: \"");
- for (i = 0; i < board->length; i++) {
+ for (int i = 0; i < board->length; i++) {
l += sprintf (buffer + l, "%c", getvalue (board, i, j));
}
l += sprintf (buffer + l, "\"\n");
if (fd) {
fseek (fd, 0, SEEK_END);
int size = ftell (fd);
- buffer = (char *) calloc (size + 1, 1);
- CHECKALLOC (buffer);
+ if (size == -1) {
+ VERBOSE (WARNING, printf ("can't read file (%s)\n", filename));
+ } else {
+ buffer = (char *) calloc (size + 1, 1);
+ CHECKALLOC (buffer);
- fseek (fd, 0, SEEK_SET);
- int nb = fread (buffer, 1, size, fd);
- if (nb != size) {
- VERBOSE (WARNING, printf ("can't fully read file (%s)\n", filename));
+ fseek (fd, 0, SEEK_SET);
+ int nb = fread (buffer, 1, size, fd);
+ if (nb != size) {
+ VERBOSE (WARNING, printf ("can't fully read file (%s)\n", filename));
+ }
}
fclose (fd);
}
return (x >= 0) && (x < board->length) && (y >= 0) && (y < board->length) ? *getcell (board, x, y) : 0;
}
+board_t *solveboard (board_t *board)
+{
+ return board;
+}
+
/* vim: set ts=4 sw=4 et: */