dobrichev wrote:Hi
champagne,
Your solver is impressive.
champagne wrote:If you are interested in knowing more about my own solver, I can develop
I downloaded version labeled "Version: V1.0.0 dated June 24th 2011", and after some reverse engineering found the basic command line syntax. It runs about 30-200 times faster than SE, processing a batch of 300K non-average puzzles in 1h 23'.
Some basic documentation is welcome. It is up to you in choosing where or whether to open a discussion.
Cheers,
MD
Let me first summarize what has been done.I have my own solver written in C++ using windows to define options for a batch.
That solver has no "on line solving capability".
That solver is also much faster than serate but works on a completely different set of rules in the high ratings.
The idea of creating a clone for serate came last year and has been discussed long
team-project-c-or-c-explainer-like-rating-program-t30083.htmlWhen it appeared to me that nothing would come out of that discussion, I started (as PIsaacson) to draft something out of my own code.
You likely know all the story as you have been part of the discussion.
I thought first I could re use most of my code, but it appeared quickly that the philosophy was so different that I had to make a new lay out following SE strategy.
What remains from my code in skfr is
. basic principles to handle a puzzle
. the code for the lowest ratings.
Helped by Patrice, we made changes in the code to make it easier to include in other software and to produce the documentation out of the source code.
To open the team work to others, we created a project in the Google data base
In fact, it seems not so easy to find somebody
. No reluctant to work in a team
. Having some free time to dedicate to the team
. Willing to invest in the Sudoku software
So I am in fact the main actor up to now, grasping the free time of Patrice.
If you meet the three pre requisite you are welcome and can come with us.
DocumentationAs i told earlier, trying to follow the best practices, we intend to include the documentation in the files.
Patrice is the leader in that field but he is very occupied for the time being and I'll ask him to comment more precisely if you want to go deeper.
The command line syntax is described in the file opsudocmd.h
this is the last status of that file (I just updated the project data base to have it correct on line)
- Code: Select all
* warning: all commands using the signs < > must be given within " " eg "-d<6.2"
*
* <li>-d stop if not diamond also --diamond</li>
* <li>-p stop if not pearl also --pearl</li>
* <li>-D same as diamond possible deviation 0.2</li>
* <li>-P same as pearl possible deviation 0.2</li>
* <li>-d> stop if ED lower than -d>xx.y</li>
* <li>-d< stop if ED higher than -d<xx.y</li>
* <li>-p> stop if EP lower than -p>xx.y</li>
* <li>-p< stop if EP higher than -p<xx.y</li>
* <li>-r< stop if ER higher than -r<xx.y</li>
*
* only one of the following limitations should be given,
* the last one in the command line will act
* <li>--NoMul stop evaluation at "multi chains" (excluded) internal code 1</li>
* <li>--NoDyn stop evaluation at "dynamic" (excluded) internal code 2</li>
* <li>--NoDPlus stop evaluation at "dynamic plus" (excluded) internal code 3</li>
* <li>--NoNest1 stop evaluation at "Nested level 1" (excluded) internal code 4</li>
* <li>--NoNest2 stop evaluation at "Nested level 2" (excluded) internal code 5</li>
* <li>--NoNest3 stop evaluation at "Nested level 3" (excluded) internal code 5</li>
*
* <li>-Q Quick classification for nested level </li>
*
* <li>-t allow printing of the solution (test mode)</li>
* <li>-n()xx.y if after n cycles highest rating still lower than xx.y
* forces split mode</li>
* <li>-e elapsed time per puzzle (total for benchmark allways given)</li></ul>
* The following options are processed outside that class<ul>
* <li>-i input file also --input=</li>
* <li>-s split treatment if dm or dl (or both) defined and forced if -n() defined</li>
you can find also in that thread the preliminary doc I prepared, but meantime, many names have changed.
comments on skfr V 1.0.0basically, that release covers the ratings up to level 2 in serate. (nested forcing chains)
in fact, the code does not cover all cases processed by serate;
reversely the process go deeper in the search of the "shortest path" and rates very often .1 or .2 below serate for the chains.
This is the first draft for the code and many tests have stiil to be done.
We have identified several areas of improvement and the final code should be significantly faster in the high ratings.
The speed ratio we have seen is in the order of magnitude you got.
Version V.1.1.0 should differ from that one mainly on the following points:
. adjustment of the process for the level 2
. validation of the process for the commands --NoMul .....
Version including level 3 of serate (nested multi chain) should not be to long to create.
I'll comment in the next post on my own solver.
champagne