SEclone general specifications

The program is a classical C++ application, using a command line and dedicated to batch processing.

 

Options are reduced to the minimum. The standard output is what is requested for a submission in the pattern game.

 

Inputs Outputs

 

The console “cout” is strictly limited to  a summary of commands and, if the batch is not launched, to messages explaining the reason.

 

The batch has one input file and 2 output files.

 

Input file contains in positions 1_81 the puzzles to rate (or to split);

 

Output 1 is the standard output of the program and contains the rated puzzles plus the rating. On option, the “elapsed time” can be added to the output;

 

Output 2 is normally dedicated to “valid” puzzles not rated, whatever is the reason.  Lines than can not be a puzzles (<81 characters) disappear;

 

A special “split” option is there just to split a batch in 2 components, normally based on a filter on ED. This will be explained later;

 

My experience is that it’s good to have input and output names linked in such a way that they appear close to each other in a directory.

 

My preferred choice, what I put in the specifications is to have

 

“xxxx.txt” for the input file  (standard name ”puz.txt”) ,

 “xxxx_rated.txt” for the output 1, (standard name ”puz_rated.txt”) ,

“xxxx_N_rated.txt” for the output 2. (standard name ”puz_N_rated.txt”) ,

 

 

This makes it very simple to adjust the name for the 3 files thru only one parameter.

The program handle the .txt file type specification, it must not be given in the corresponding parameter;

 

Commands

 

Some parameters of the command line have been implicitly used here above:

 

. Name to use for the input file.

. Option  “elapsed time” in output1

. special treatment to split the input file in 2 files.

 

One option allows testing (print of the solution).

The version is not an option, but will come automatically in “cout”

 

Other parameters are exclusively filters on ER  EP ED ratings.

 

The options formerly in “serate” are still there (process only diamond or process only pearls).

The only difference is that unrated puzzles will go in output 2.

 

New parameters have been created to filter in a more accurate way

 

Coding is done in a “mathematical” notation, eg: -d>6.2 to ask for an ED greater than 6.2.

Due to redirection rules applied in a command line, all these parameters must be within quotes

 

-d>6.2 is not valid and will cancel the process

“-d>6.2” is valid

 

 

Combining 2 conditions eg 6.0<ED<8.0 will be possible, but will be shown in 2 separate parameters

 

“-d>6.0”   “-d<8.0”

 

Summary of filtering command.

 

The main filtering commands are already there.

 

-d or –-diamond :   stop rating if not a diamond

-p or –-pearl:            stop rating if not a pearl.

 

 In both cases, the processing has to be cancelled as soon as possible.

 If one of these filter is active, all special filters are ignored.

 Priority is given to –d, then –p, then a mix of other filters

 

On  ED and EP ratings, both conditions “<”    “>” can be applied; On ER, the condition “>” has no meaning. The puzzle is solved when the decision can be taken. Reversely, the condition “<” can be desired.  In such a case, the search for rating over the limit is inhibited. This gives an option equivalent to ‘rate all puzzles with “ED” below …”

 

All these parameters can be given and combined.

 

“-d<xx”

“=d>xx” 

“-p<xx” 

“-p>xx”

“-r<xx”

 

A differed filter can be applied; this is the only way I know  to detect at a reasonable cost high ratings having a low ED. Instead of being made at the first cycle, the test on the limit is made after “n” cycles. The value to use for test is the ER reached at that time.

With that option, the process works as with the option “split”.

That filter is coded in the following way

 

“-n(y)>xx”  where ”y” is the number of cycles to be controlled