Sur cette page vous trouverez deux programmes en Pascal montrant comment lire un livre d'ouvertures au format PolyGlot, ainsi qu'une unité permettant de choisir un coup dans un livre.
Vous trouverez également les programmes originaux en C de Michel Van den Bergh. (La page où je les avais téléchargés n'existe plus.)
Le programme pg_key.pas calcule la clé correspondant à une position donnée.
./pg_key "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"463B96181691FC9C
Le programme pg_show.pas lit un livre et affiche les coups correspondant à une clé donnée.
./pg_show fruit.bin 463B96181691FC9Cmove=d2d4 weight=41,46%
move=e2e4 weight=40,62%
move=g1f3 weight=10,00%
move=c2c4 weight= 7,33%
move=g2g3 weight= 0,29%
move=b2b3 weight= 0,18%
move=f2f4 weight= 0,07%
move=b1c3 weight= 0,01%
move=b2b4 weight= 0,01%
move=c2c3 weight= 0,01%
move=d2d3 weight= 0,01%
L'unité book.pas réunit ce que font les deux programmes
précédents. La fonction BookMove calcule la clé de la
position, cherche les coups correspondants dans le livre et en choisit
un au hasard, en tenant compte de leurs poids. Elle renvoie une chaîne
vide si la position n'est pas dans le livre.
Le programme bookdemo.pas choisit un coup pour la position de départ dans trois livres.
uses
SysUtils, Book;
const
CStartPosition = 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1';
begin
Randomize;
WriteLn(BookMove(CStartPosition, 'fruit.bin'));
WriteLn(BookMove(CStartPosition, 'gm2001.bin'));
WriteLn(BookMove(CStartPosition, 'Perfect2019.bin'));
end.Les roques sont renvoyés sous la forme e1g1, e1c1, e8g8 et e8c8, et non sous la forme PolyGlot du roi prenant sa tour (e1h1, etc.).
Si l'unité est compilée avec l'option -dDEBUG_BOOK, la
fonction affiche sur la sortie d'erreur les coups trouvés avec leurs
poids, puis le coup choisi :
# BOOK move=d2d4 weight=11712 (41.46%)
# BOOK move=e2e4 weight=11476 (40.62%)
# BOOK move=g1f3 weight=2824 (10.00%)
# BOOK move=c2c4 weight=2071 (7.33%)
...
# BOOK chosen=g1f3
Si vous le souhaitez, vous pouvez télécharger les sources de cet article.
Les sources contiennent aussi, dans le dossier archives, les utilitaires pg_utils (pg_query, pg_add, pg_key) de Michel Van den Bergh et l'outil pgheader.
Vous pouvez aussi lire des informations en anglais sur le programme PolyGlot et sur le format du même nom.
Dernière modification : .