|
| 1 | +## Introduction |
| 2 | +iota aims to be a tiny C chess engine, supporting the full rules of chess, as |
| 3 | +well as a standard protocol. More precisely, it aims to: |
| 4 | + |
| 5 | +1. support (a subset of) a standard protocol (UCI or CECP) such that a full game |
| 6 | +can be played, and |
| 7 | +2. for every *legal position* in which a legal move exists, be able to give one. |
| 8 | + |
| 9 | +Where we define a *legal position* as one which can be reached from the initial |
| 10 | +position by a sequence of legal moves. It includes the full game state. While it |
| 11 | +may be arbitrary, we require a standard protocol because one could imagine a |
| 12 | +pathological protocol where the GUI sends a list of legal moves, from which the |
| 13 | +engine then selects one. This would reduce the exercise to writing the smallest |
| 14 | +program which repeatedly choose the first move (say). |
| 15 | + |
| 16 | +For the first criteria we use the UCI protocol, in particular the following |
| 17 | +commands are used: 'uci'/'uciok', 'isready'/'readyok', 'position' and |
| 18 | +'go'/'bestmove'. While iota does obey the second requirement - so accepting |
| 19 | +en-passent captures, under-promotions and castling - it will never castle |
| 20 | +itself. Note that this is not a violation because if we have the option to |
| 21 | +castle, then we always have the alternatives of simply moving either one of the |
| 22 | +king and rook toward the other. |
| 23 | + |
| 24 | +## Acknowledgements |
| 25 | +I would like to give thanks to H. G. Muller (HGM) both for his engine MicroMax |
| 26 | +and its description, and also for his practical |
| 27 | +[definition](http://home.hccnet.nl/h.g.muller/definition.txt) of a chess |
| 28 | +program: |
| 29 | +> A Chess program is a program that can finish more than 50% of the games it |
| 30 | +> plays against an opponent that plays moves randomly chosen from the set of |
| 31 | +> Chess moves that are legal from the current position according to the FIDE |
| 32 | +> rules. |
0 commit comments