From b265d1b23da45ed7e3ed321543840c606ba320d7 Mon Sep 17 00:00:00 2001 From: Laurent Mazet Date: Sat, 1 Mar 2025 23:49:03 +0100 Subject: [PATCH] add seed --- sudoku.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/sudoku.c b/sudoku.c index 5d2da5d..811770c 100644 --- a/sudoku.c +++ b/sudoku.c @@ -21,6 +21,7 @@ char *progname = NULL; char *version = "0.1"; int length = 3; +int seed = 0; int xoffset = 1; int yoffset = 1; @@ -35,9 +36,10 @@ char *help = int usage (int ret) { FILE *fd = ret ? stderr : stdout; - fprintf (fd, "usage: %s [-h] [-l length] [-v level]\n", progname); + fprintf (fd, "usage: %s [-h] [-l length] [-s seed] [-v level]\n", progname); fprintf (fd, " -h: help message\n"); fprintf (fd, " -l: box length (%d)\n", length); + fprintf (fd, " -s: random seed (%d)\n", seed); fprintf (fd, " -v: verbose level (%d)\n", verbose); fprintf (fd, "%s version %s\n", progname, version); @@ -74,6 +76,14 @@ int main (int argc, char *argv[]) } length = atoi (arg); break; + case 's': + arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL; + if (arg == NULL) { + VERBOSE (ERROR, fprintf (stderr, "%s: no seed specified\n", progname)); + return usage (1); + } + seed = atoi (arg); + break; case 'v': arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL; if (arg == NULL) { @@ -89,6 +99,7 @@ int main (int argc, char *argv[]) } /* init board */ + srand (seed); board_t *board = initboard (length * length); initplay (board); @@ -135,6 +146,7 @@ int main (int argc, char *argv[]) /* test: sudoku.exe -h | grep usage */ /* test: sudoku.exe -l 2>&1 | grep length */ +/* test: sudoku.exe -s 2>&1 | grep seed */ /* test: sudoku.exe -v 2>&1 | grep missing */ /* test: sudoku.exe _ 2>&1 | grep invalid */ -- 2.30.2