Chest: A Program for Solving Orthodox Chess Problems
Chest is a program to solve chess problems.
It is written in ANSI C, and developed under UNIX, but should be portable.
Chest is distributed as source code.
Online documentation (also contained in the distribution):
Download the newest version (3.19 from 18-Dec-1999) [see also bugfixes below]:
The approximate uncompressed size is 1.4 MB.
The approximate runtime size is 150+600 KB code & data,
and X MB cache (adjustable).
Bugfixes and enhanced packages:
-
answer.c (39K): [12-April-2008]
This source corrects a bug (pointed out by Anders Thulin),
that mostly makes answer sorting a bit suboptimal,
but may even crash Chest.
To fix the bug, replace the "answer.c" of the 3.19 package
with this corrected version.
-
analyse.c (73K): [3-May-2005]
This source corrects an inefficiency (not really a bug),
which happens rarely, but can be very annoying, when it happens.
-
fac.c (46K): [10-Dec-2004]
This source corrects a bug (pointed out by Anders Thulin),
that lets Chest overlook some mates in 2.
To fix the bug, replace the "fac.c" of the 3.19 package
with this corrected version.
This bug had been found already in Apr-2003 by Franz Huber,
and I sent him the bug fix, but somehow missed to also put it up, here.
Sorry for that!
[did so 10-Dec-2004]
On the other hand, the fix is already incorporated in ChestUCI,
so the users of ChestUCI need not worry.
In 2011-03-08 corrected yet another bug in this file, as described below
(happens quite rarely).
-
mate2.c (67K): [05-May-2002]
This source corrects a bug, that lets Chest overlook some rare mates.
To fix the bug, replace the "mate2.c" of the 3.19 package
with this corrected version.
-
input.c (21K):
As a bugfix for the 3.19 e.p. bug (mentioned below) use this
source file instead of that in the 3.19 package.
Now (Tue Dec 21 19:42:16 MET 1999)
it also fixes another bug: ce=-32767 was treated as EOF.
Now (Sat Dec 25 13:46:12 MET 1999)
it fixes yet another bug: input command 'F' did not work.
Now (Sun Jan 9 20:25:24 MET 2000)
it fixes yet another bug with input command 'F'.
Now (Sun Mar 19 14:50:19 MET 2000)
it fixes yet another EPD input parsing bug with illegal ce-values.
Graphical User Interfaces (GUIs):
-
ChestUCI
by Franz Huber
is an UCI-adapter for (a suitably modified version of) Chest 3.19,
so that you can use it from any GUI which can run UCI chess engines.
A recent version of the accompanying "ChestUCI_EPD.zip" can be found
here.
Example computation:
-
A non-trivial mate in 9
,
computed on a PIII/500 using 42 MB for the transposition table.
The first 5 lines are the input to Chest.
Its output is appended.
Happy problem solving!
Release Notes & known Bugs for version 3.19
-
21-Dec-1999:
Dann Corbit kindly has provided a Windows ports. On CCC he said:
I have made a Windows NT port available: ... [recent URL see above]
I had to change several source files, so caveat emptor.
Source and binary is included in zip file,
along with build scripts for MS VC++ 6.0
...
The one on my ftp site is a native Win32 binary.
IOW, it will run in Windows 95/98/2K. {And NT as well}
[ As I understand his changes, they should be ok. ]
-
21-Dec-1999:
Dann Corbit also found a BUG in Chest 3.19:
it does not accept the e.p. information in EPD lines.
A bug fix is available above.
-
21-Dec-1999:
Dann Corbit found another bug: when a "ce -32767;" appeared
in the EPD input, it was treated as an EOF.
A bug fix is available above: now it is considered an illegal
position (cf. PGN standard 16.2.5.6) and skipped.
-
25-Dec-1999:
Yet another input parsing bug: input command 'F' did not work at all.
-
09-Jan-2000:
Timing on some systems (especially Linux) can be completely bogus,
typically above 35 minutes (states even negative times).
This happens, when the type clock_t is signed.
Will be fixed in the next release.
Workaround:
Recompile with manifest TIM_USE_TIME defined to 1,
e.g. by the compiler switch "-DTIM_USE_TIME=1".
-
09-Jan-2000:
Yet another input parsing bug with input command 'F' found by Ian Osgood.
-
19-Mar-2000:
Dann Corbit was bit again by an EPD input parsing bug
(more exactly: the bugfix from 21-Dec-1999 was not complete/correct).
When a "ce -32767;" appeares (or another illegal ce-value),
or otherwise no job depth can be determined by the program, then
the immediately following EPD input line
is not correctly processed.
This may, or may not result in an input error message
(Duplicate piece). Without an error message the result
of this next EPD line is still just garbage.
The updated "input.c" above fixes this bug.
-
05-May-2002:
Vincent Vega found a substantial bug, demonstrated by this example:
8/8/8/8/8/8/4KP2/R1Qn3k w - -
Here Chest did not find the (obvious) mate-in-2.
The bug is in the module "mate2",
which can be turned off with the command line option "-2".
The corrected source code "mate2.c" is available above.
-
10-Dec-2004:
Anders Thulin found a bug, which was already reported by Franz Huber
in Apr-2003, but my fix did not make it to this page.
The bug can be demonstrated by this example: In
2RB2b1/3P4/2BRp2r/1Pkq2Q1/8/N1P5/4K2p/8 w - - dm 2;
after 1.Qe7 Chest believed that after 1... Qf3+ white cannot
possibly checkmate, although 2.Bxf3# does so.
The bug is in the module "fac",
which can be turned off with the command line option "-f".
The corrected source code "fac.c" is available above.
-
3-May-2005:
Franz Huber found an efficiency problem: under rare circumstances
where the defender can mate the attacker, it could somtimes
happen that other checking moves were prefered over the mate.
As a consequence huge trees were searched without any need.
The corrected source code "analyse.c" is available above.
ChestUCI 4.1 contains the corrected version.
-
8-Mar-2011:
Franz Huber got an email that hinted these 5 mate in 2, which were
not recognized by Chest unless option "-f" is given:
K4Qn1/2b2N1R/5k2/6pP/1np1p1P1/2N1R3/B2P4/B6b w - - pv d4 exd3ep+ Nd5#;
8/B7/B1b5/8/1Q2prpb/Rn2R3/3P1k2/6NK w - - pv d4 exd3ep+ Rf3#;
3Kn2b/4p3/4N1qR/2P1k1Pp/1N1p1R2/1r4BB/4P3/3r3b w - - pv e4 dxe3ep+ Rd4#;
6q1/8/b2b3p/1B2n3/4Q1p1/3rB1K1/4kP2/R5nR w - - pv f4 gxf3ep+ Bg5#;
3N3r/2KP1Ppb/6kp/2P2R2/1p1p1p2/3Q1R2/1B2Pr1b/8 w - - pv e4 fxe3ep+ Re5#;
The bug is in the module "fac".
It occurs, when the defender can deliver an indirect check with an e.p.
move, but the attacker still can follow up with mate in 1, but could
not do so, if the e.p. would not take off the beaten attacker pawn.
The corrected source code "fac.c" is available above.
ChestUCI 5.2 contains the corrected version.
To the
chess page of Heiner Marxen.
To the
home page of Heiner Marxen.
$Date: 2014/12/22 17:04:53 $