Fine #70, once again

Discussion of chess software programming and technical issues.

Moderator: Ras

User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Re: Fine #70, once again

Post by sje »

UncombedCoconut wrote:Ah... of course Common Lisp, of all languages, would have that feature built in. Does it only work in English?
It works in any language as long as the right localization library is present.

And the Roman numeral output can be set to handle the lesser known Roman numerals (value > 1000) if the Lisp supports Unicode and has the right library.

Example: ↂ = 10,000
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Speaking of Roman numerals

Post by sje »

How do you like my iteration labels? An excerpt from the trace:

Code: Select all

[si] Starting iteration XXV
[pv] 1 Ka2 Kb8 2 Kb3 Kc7 3 Kc4 Kb6 4 Kd3 Kc7 5 Ke3 Kd8 6 Kf3 Ke8 7 Kg3 Kf7 8 Kh4 Kg6 9 Kh3 Kh7 10 Kg3 Kh6 11 Kf3 Kg6 12 Ke3 Kf7 13 Kf3   score: +1.160
[pv] 1 Kb1 Kb8 2 Kc2 Kb7 3 Kc3 Kc7   score: +2.288
[si] Starting iteration XXVI
[pv] 1 Kb1 Kb8 2 Kc2 Kb7 3 Kc3 Kc7 4 Kd3   score: +2.416
[st] Interrupted   Elapsed: 000.00:21:55.86
The revised statistics report is still fairly bland:

Code: Select all

Search statistics summary report at 2011.04.12 13:15:10
  Input parameters:
    Position: 8/k7/3p4/p2P1p2/P2P1P2/8/8/K7 w - - 0 1
    Moves (three):
      (Ka2 Kb1 Kb2)
    Search limits:
      Draft: -   Node count: -   Time: -
  Analysis:
    PV: 1 Kb1 Kb8 2 Kc2 Kb7 3 Kc3 Kc7 4 Kd3
    Expectation: +2.416
    Draft: 26 ply   Node count: 12,147,239   Time: 000.00:16:58.455
    Frequency: 11.927124 KHz   Period: 83.84251 us
    Termination status: Interrupted
  Total node counts:
    All: 15,657,346   Capture: 3,425,994   Evasion: 1,138,802   General: 2,727,269   PlyZero: 26
  Total timing statistics:
    Elapsed: 000.00:21:55.867   Frequency: 11.898883 KHz   Period: 84.041504 us
  Transposition pruning counts:
    Attempted: 14,939,865   Matched: 10,937,608   Sufficient draft: 8,526,146   Pruned: 7,647,800
  Transposition table statistics (general position tables by color):
    (white) size: 65,536   usage: 65,120   match: 1,917,081   probe: 2,747,633   store: 1,794,753
    (black) size: 65,536   usage: 65,536   match: 9,020,527   probe: 12,192,232   store: 5,497,309
  Transposition table statistics (pawn structure tables by color):
    (white) size: 4,096   usage: 767   match: 977,847   probe: 978,955   store: 1,108
    (black) size: 4,096   usage: 725   match: 2,445,972   probe: 2,447,039   store: 1,067
rjgibert
Posts: 317
Joined: Mon Jun 26, 2006 9:44 am

Re: Fine #70, once again

Post by rjgibert »

Code: Select all

         _
10,000 = X = (X)
ↂ = ((I)) = (M) = 1,000,000
per http://en.wikipedia.org/wiki/Roman_numerals

The enclosing by parenthesis or use of the vinculum indicates multiplication by 1,000. The use of () is a bit more versatile, so (()) can produce a multiplication by 1,000,000. Visually, use of the vinculum looks better. Using () is easier to type. I would use the latter, since something like ((M)) would then be possible, etc.

Maybe you might want to try incorporating Roman fractions in your program? They switch from their quasi-base-ten system for integers to a quasi-base-twelfths, so analog for VII is S·· = 2/3.
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Twelve seconds

Post by sje »

bob wrote:I believe it took Crafty about 1.5 minutes on the 8-core box. Tracy first reported this to me (no egtbs). I was surprised and tested it and bam. I posted the output here in CCC when it happened, as a curiosity. I'd suspect it could be found easily enough. It found a forced mate. I remember Monty's program "peasant" which was a K+P ending only program (in Frey's Chess Skill in ... book) where he thought this would take a ton of time just to see the win of a pawn. 30+ years later, the things see all the way to checkmate. What is impossible today is hard in a few years, then easy a few years later, then it becomes instantaneous. :)
Now that I've persuaded the toolkit to use fail-soft PVS, its simpleton search locks onto 1 Kb1 on the 24th iteration in just under twelve seconds:

Code: Select all

[+1.288/24/11.824/146,789/0] 1 Kb1 Kb7 2 Kc1 Kc7 3 Kd1 Kd8 4 Kc2 Ke8 5 Kc3 Kf8 6 Kd3 Kg7 7 Kc4 Kh6 8 Kb5 Kh5 9 Kc6 Kg4 10 Kxd6 Kxf4 11 Ke6 Ke4 12 d6 f4
But it is far, far away from seeing the mate.