From my help display:
- Code: Select all
Paul@pgisaacs2 ~/se_cpp
$ sudoku --help
Version - Alpha (x86_64-w64-mingw32-g++) Sudoku Explainer C++ engine ver 0.3
usage - sudoku -bvdmp -f: -c: -a: -h: -r: -l: -e: -n: -q: s: -i: -o: [< puzzles_in] [> solution_log] [2> statistics_log]
--help print the help info
-b --validate_moves perform validation of eliminations/assignments - default(no)
-v --verbose print all the individual solution steps - default (no)
-d --debug enables printing internal debug info tables - default (no)
-m --minlex convert puzzle to minlex before processing - default (no)
-p --pm_grid input is a single PM grid puzzle - default (no)
-c N --se_conforming=N set the degree of SE conformity 0 = none - default (1)
-a N:N set the als min:max candidate sizes used in chaining group extensions - default (3:5)
--als_min=N set the als min candidate size separately
--als_max=N set the als max candidate size separately
-h N:N set the ahs min:max candidate sizes used in chaining group extensions - default (3:5)
--ahs_min=N set the ahs min candidate size separately
--ahs_max=N set the ahs max candidate size separately
-l N:N set the aals min:max candidate sizes used in chaining group extensions - default (3:5)
--aals_min=N set the aals min candidate size separately
--aals_max=N set the aals max candidate size separately
-r N:N set the arc min:max candidate sizes used in chaining group extensions - default (3:5)
--arc_min=N set the arc min candidate size separately
--arc_max=N set the arc max candidate size separately
-e N --exiting=N set the exiting criteria - default (0)
-n N:N set the chain length min:max sizes used during BFS chain development - default (4:32)
--chain_min=N set the chain length min size
--nrc_min=N alternate for setting the chain length min size
--chain_max=N set the chain lenght max size
--nrc_max=N alternate for setting the chain length max size
-q N --z_target=N used for debugging - input a single nRrCc z-target to test - default (-1)
-s N --seed=N a non-zero seed value will randomize the graph edges for minimal tree spanning - default (0)
-i F --input=F override stdin with a specific file - default (NULL)
-o F --output=F override stdout with a specific file - default (NULL)
-f S --format=S specify the output formatting string - default (%81.81g;%.1r/%.1d/%.1p)
The input/output params require a valid filename - if spaces are embedded, then quote the filename
The --format string uses the following specifiers:
%g - original puzzle input line
%s - 81 char puzzle solution
%n - puzzle sequential ordinal position wiithin a collection
%r - puzzle overall rating
%d - puzzle diamond score
%p - puzzle pearl score
%e - puzzle solution elapsed time in msecs
%% - a single literal '%' percent sign
chars - any string of ascii characters may be embedded within the format at any position
The specifiers may optionally include standard printf modifiers [+|-|0][size][.precision]
I have some test code that allows a per technique score calculation using the variables $depth for the current depth parameter passed, $base for the current base score from the config file and $size for the number of cells defining the pattern. So there could be an entry for each line/technique in the sudoku.ini that contains something like "$base + (($depth + 1) * 0.1) + ($size * 0.1)" which is approximately the ur_loop_type_3 internal calculation. But in testing this approach with a standard interpreter library, it greatly decreased the speed of the fastest and most often called techniques such as hidden_singles so I'm somewhat loathe to offer this as an option. That means the scoring is locked into using SE algorithms, which is more of an issue with me than whether or not to use floating point for the scoring variables. I'm still looking into various options for offering a more flexible scoring system by compiling the equations while reading/processing the sudoku.ini configuration file and placing the code in a dll which I then dynamically load, but it's on my back-burner for now.
Cheers,
Paul