a chess program or a program related to chess to do it. In this case I am
writing a PGN database reader. I think Python is a good language for this task.
In the future I hope I can build an opening database with this tool for a new
version of my C++ engine Elephant. I also want to collect a lot of statistics
from game databases to improve the evaluation functions or parameters. Using
a lot of big tables seems to be a modern approach in computer chess. Piece
square tables or material balance terms are good candidates for this idea.
It was really hard to write the PGN parser, especially since the SAN moves
need a board representation, make and undo functions and pinned piece
recognizer. The Python program could be changed to a chess engine some day.
I tried to include the whole PGN format with variants and comments allowed
everywhere. I have some questions about this later.
The program is not ready yet and I do not want to give away the code today
but I want to share some early test results. This is a 'game' that is merged
from all 27202 games in the database gm2600.pgn. The +win=draw-loss numbers
are written in comments. I reduced this opening database 'game' to variants
with a maximal depth of 6 half moves and at least 50 played games with the
help of some filter functions.
Code: Select all
1. e4 {+2725=4855-1579} (1. d4 {+3228=6480-2014} Nf6 {+2223=4463-1406} (1... d6
{+108=156-51} 2. c4 {+20=29-9} (2. Nf3 {+39=64-18} Bg4 {+16=33-7} (2... g6
{+15=24-10} 3. c4 {+8=11-6} Bg7 {+7=10-6}) 3. c4 {+13=21-3} Nd7 {+9=15-3}) (2.
e4 {+42=60-23} Nf6 {+27=43-19} (2... g6 {+14=17-4} 3. Nc3 {+7=12-2}) 3. f3
{+5=10-5} (3. Nc3 {+20=30-13} g6 {+17=25-12})) 2... e5 {+16=24-5} 3. Nf3
{+14=19-5} e4 {+8=16-3}) (1... d5 {+658=1464-402} 2. c4 {+578=1247-351} (2. Nf3
{+66=194-41} Nf6 {+42=121-22} (2... c6 {+8=23-8} 3. c4 {+7=18-3}) (2... e6
{+7=27-5} 3. c4 {+6=21-4} dxc4 {+5=14-2}) (2... c5 {+4=14-4}) 3. c4
{+39=114-22} c6 {+21=43-14} (3... dxc4 {+13=48-3}) (3... e6 {+4=23-5})) (2. Bg5
{+11=17-7}) 2... e6 {+171=370-76} (2... dxc4 {+130=257-78} 3. e3 {+27=44-12}
(3. Nf3 {+51=122-34} a6 {+16=35-8} (3... Nf6 {+25=79-23})) (3. e4 {+51=84-30}
Nf6 {+18=36-15} (3... c5 {+8=5-8}) (3... Nc6 {+9=11-4}) (3... e5 {+16=32-3}))
3... Nf6 {+15=28-11}) (2... c6 {+264=607-187} 3. e3 {+13=42-8} (3. Nc3
{+120=248-83} Nf6 {+100=228-73} (3... e5 {+8=8-6})) (3. Nf3 {+121=285-89} Nf6
{+118=281-85}) (3. cxd5 {+8=30-6} cxd5 {+8=30-6}) 3... Nf6 {+11=35-7}) 3. Nc3
{+120=263-53} (3. Nf3 {+49=105-23} c6 {+5=16-2} (3... Nf6 {+29=73-18}) (3... c5
{+14=13-2})) 3... Be7 {+52=113-14} (3... c5 {+10=28-8}) (3... c6 {+14=30-9})
(3... Nf6 {+37=78-18}) (3... Bb4 {+6=11-4})) (1... e6 {+137=225-81} 2. c4
{+101=131-55} (2. Nf3 {+20=46-12} Nf6 {+7=13-4} (2... f5 {+7=11-3})) (2. e4
{+14=44-12} d5 {+14=38-10} 3. Nd2 {+5=15-0} (3. Nc3 {+2=16-6})) 2... b6
{+10=16-9} (2... Bb4+ {+14=28-7} 3. Bd2 {+10=20-2}) (2... Nf6 {+30=54-21} 3.
Nf3 {+18=34-12} (3. Nc3 {+10=20-8} Bb4 {+8=19-7}) 3... b6 {+10=18-4}) (2... d5
{+16=11-7} 3. Nc3 {+9=8-4}) (2... f5 {+28=22-11} 3. g3 {+22=13-7} Nf6
{+22=13-7})) (1... f5 {+57=107-50} 2. Nc3 {+8=11-5} (2. g3 {+31=51-28} Nf6
{+27=48-26} 3. Bg2 {+27=47-26} g6 {+19=30-14}) (2. c4 {+13=14-6} Nf6
{+13=12-6}) (2. Nf3 {+5=24-8} Nf6 {+3=20-8})) (1... g6 {+30=41-17} 2. e4
{+15=23-7} (2. c4 {+9=13-7} Bg7 {+9=12-6}) 2... Bg7 {+9=17-6}) (1... c5
{+7=14-4} 2. d5 {+6=10-4}) 2. c4 {+1832=3482-1113} (2. Nf3 {+360=911-253} g6
{+121=309-108} (2... e6 {+151=414-111} 3. c4 {+94=255-69} (3. e3 {+7=31-8} c5
{+3=16-3} (3... b6 {+4=14-5})) (3. Bg5 {+20=61-16} h6 {+5=17-6} (3... c5
{+11=37-9})) (3. g3 {+28=64-18} b6 {+9=17-8} (3... b5 {+10=29-6})) 3... b6
{+50=156-39} (3... Bb4+ {+13=39-11}) (3... c5 {+17=22-13}) (3... d5
{+11=36-6})) (2... d5 {+42=114-21} 3. c4 {+41=109-19} e6 {+24=81-14} (3... c6
{+12=19-5})) (2... c5 {+31=35-8} 3. d5 {+28=28-8} b5 {+10=9-4} (3... g6
{+10=12-3})) (2... b6 {+4=23-1}) (2... d6 {+11=12-3}) 3. Bf4 {+4=16-12} (3. c4
{+72=142-53} Bg7 {+69=136-53}) (3. g3 {+31=77-12} Bg7 {+24=58-11} (3... d5
{+4=16-0})) (3. Bg5 {+10=55-23} Bg7 {+10=53-23}) (3. c3 {+4=14-3} Bg7
{+4=14-3}) 3... Bg7 {+4=16-12}) (2. Bg5 {+26=54-35} Ne4 {+12=24-14} (2... e6
{+11=11-9}) 3. Bf4 {+9=18-7}) 2... e6 {+1101=2352-669} (2... g6 {+543=881-334}
3. Nc3 {+446=678-284} (3. g3 {+38=89-18} c6 {+5=25-3} (3... Bg7 {+31=53-14}))
(3. Nf3 {+55=111-27} Bg7 {+55=111-27}) 3... d5 {+171=292-110} (3... Bg7
{+274=384-173})) (2... c5 {+128=157-86} 3. d5 {+110=143-75} (3. Nf3 {+14=13-10}
cxd4 {+13=10-10}) 3... b5 {+47=70-37} (3... g6 {+17=26-13}) (3... e6
{+21=24-12}) (3... e5 {+14=7-5}) (3... d6 {+9=15-8})) (2... c6 {+24=29-7} 3.
Nc3 {+16=22-5} d5 {+15=21-5}) (2... d6 {+28=46-14} 3. Nc3 {+25=36-10} Nd7
{+12=21-4}) (2... e5 {+5=15-2} 3. dxe5 {+5=14-2} Ng4 {+5=14-2}) 3. Nf3
{+601=1350-338} (3. Nc3 {+440=831-285} Bb4 {+375=721-258} (3... d5 {+51=99-22})
(3... c5 {+14=10-5})) (3. g3 {+59=168-46} c5 {+8=22-10} (3... d5 {+28=108-22})
(3... Bb4+ {+23=36-14})) 3... d5 {+142=357-91} (3... b6 {+333=743-177}) (3...
Bb4+ {+84=198-44}) (3... c5 {+42=52-25})) (1. c4 {+789=1644-463} Nf6
{+252=492-132} (1... c6 {+35=90-28} 2. e4 {+10=28-13} (2. Nf3 {+8=17-2} d5
{+6=17-2}) (2. d4 {+17=33-8} d5 {+16=33-8} 3. Nf3 {+7=14-2} (3. Nc3 {+7=12-4})
3... Nf6 {+7=13-2}) 2... d5 {+8=25-12} 3. exd5 {+6=23-9} cxd5 {+5=19-6}) (1...
e5 {+183=367-123} 2. g3 {+30=68-26} (2. Nc3 {+149=295-97} Nc6 {+35=94-29} (2...
Bb4 {+19=20-9} 3. Ncd5 {+16=16-6} Be7 {+10=6-5}) (2... d6 {+29=27-10} 3. Nf3
{+9=11-4} (3. g3 {+12=13-2})) (2... Nf6 {+65=153-48} 3. Nf3 {+47=121-38} (3. g3
{+18=30-10} Bb4 {+4=16-4} (3... d5 {+10=5-5})) 3... Nc6 {+46=119-37}) 3. g3
{+20=58-13} (3. Nf3 {+14=31-12} Nf6 {+5=20-9}) 3... g6 {+15=55-12}) 2... Nf6
{+12=32-12} (2... Nc6 {+8=26-10} 3. Bg2 {+7=25-10} g6 {+7=18-8}) 3. Bg2
{+12=32-12} d5 {+7=12-7}) (1... c5 {+117=277-63} 2. Nf3 {+86=188-36} (2. g3
{+19=49-10} g6 {+12=33-6} 3. Bg2 {+11=31-6} Bg7 {+11=31-6}) (2. Nc3 {+11=38-15}
g6 {+2=16-5} (2... Nc6 {+4=14-3})) 2... Nf6 {+52=133-24} (2... Nc6 {+19=38-7}
3. d4 {+7=16-4} (3. Nc3 {+10=21-3} Nf6 {+6=13-2}) 3... cxd4 {+7=16-4}) (2... g6
{+13=13-3}) 3. g3 {+3=17-5} (3. Nc3 {+48=108-18} Nc6 {+19=41-5} (3... e6
{+19=41-9}) (3... d5 {+9=19-4}))) (1... e6 {+120=270-70} 2. Nf3 {+21=63-18} (2.
g3 {+12=47-16} d5 {+11=39-14} 3. Bg2 {+11=32-13} Nf6 {+10=22-6}) (2. Nc3
{+76=128-33} d5 {+55=98-25} 3. d4 {+55=97-24} Be7 {+20=38-11} (3... Nf6
{+24=45-11})) (2. d4 {+10=32-3} d5 {+8=22-3} 3. Nc3 {+7=13-3}) 2... d5
{+13=30-10} (2... Nf6 {+7=33-8} 3. Nc3 {+4=12-4} (3. g3 {+3=17-3})) 3. d4
{+7=17-6} Nf6 {+7=15-3}) (1... g6 {+56=117-40} 2. d4 {+24=30-6} (2. Nc3
{+14=43-18} Bg7 {+12=32-14} 3. g3 {+3=23-11}) (2. e4 {+13=21-11} Bg7 {+7=16-7}
3. d4 {+7=16-7} d6 {+7=16-7}) 2... Bg7 {+11=18-4} (2... Nf6 {+13=11-2}) 3. Nc3
{+5=11-4}) (1... f5 {+12=16-2}) (1... b6 {+12=13-4}) 2. Nc3 {+195=323-101} (2.
Nf3 {+31=122-15} g6 {+7=17-4} (2... c6 {+3=16-1}) (2... c5 {+7=20-4} 3. Nc3
{+6=11-4}) (2... e6 {+11=46-3} 3. g3 {+5=20-2}) (2... b6 {+3=23-3} 3. g3
{+3=16-2} Bb7 {+2=16-2})) (2. g3 {+16=25-7}) (2. d4 {+9=22-9} e6 {+4=15-8})
2... g6 {+31=40-21} (2... e5 {+26=61-28} 3. Nf3 {+25=51-25} Nc6 {+25=51-25})
(2... c5 {+48=73-22} 3. Nf3 {+34=44-13} (3. g3 {+14=29-9} e6 {+10=15-3}) 3...
d5 {+11=7-4} (3... e6 {+11=25-6}) (3... Nc6 {+7=10-3})) (2... d5 {+16=21-4} 3.
cxd5 {+14=20-4} Nxd5 {+14=20-4}) (2... e6 {+66=118-26} 3. Nf3 {+49=81-19} (3.
e4 {+9=21-3}) (3. d4 {+8=16-3} Bb4 {+8=12-2}) 3... b6 {+16=27-6} (3... d5
{+18=32-6}) (3... c5 {+7=15-3})) 3. g3 {+9=17-6} (3. e4 {+16=14-12} d6
{+16=14-12}) 3... Bg7 {+9=15-5}) (1. Nf3 {+800=1946-451} d5 {+179=465-93} (1...
Nf6 {+440=1115-241} 2. c4 {+367=896-180} (2. d4 {+21=74-18} g6 {+8=31-4} (2...
e6 {+9=20-8} 3. c4 {+7=13-5}) (2... d5 {+3=17-2})) (2. g3 {+51=136-39} b6
{+2=17-6} (2... d5 {+20=50-15} 3. Bg2 {+19=49-15} c6 {+12=31-13}) (2... g6
{+21=57-12} 3. Bg2 {+13=30-9} (3. b3 {+5=15-2} Bg7 {+5=14-2}) 3... Bg7
{+13=28-9}) 3. Bg2 {+2=15-6} Bb7 {+2=15-6}) 2... g6 {+106=223-39} (2... e6
{+126=321-63} 3. Nc3 {+77=170-22} (3. g3 {+34=108-26} d5 {+26=69-16} (3... b6
{+5=29-4})) (3. d4 {+15=35-13} b6 {+12=18-6}) 3... Bb4 {+44=75-14} (3... d5
{+22=71-8})) (2... c5 {+68=177-34} 3. Nc3 {+49=118-22} (3. g3 {+15=55-7} b6
{+6=24-4} (3... d5 {+6=14-0})) 3... Nc6 {+28=43-7} (3... d5 {+4=30-5}) (3... e6
{+11=38-8})) (2... b6 {+49=132-33} 3. g3 {+32=94-29} (3. d4 {+5=16-2} e6
{+5=14-1}) (3. Nc3 {+12=18-1} Bb7 {+11=13-1}) 3... Bb7 {+19=63-11} (3... c5
{+9=26-12})) (2... c6 {+12=34-7} 3. Nc3 {+8=16-4} d5 {+8=16-4}) 3. Nc3
{+67=130-26} (3. g3 {+32=73-9} Bg7 {+31=69-9}) 3... Bg7 {+54=83-21} (3... d5
{+13=46-5})) (1... c5 {+93=197-62} 2. c4 {+66=146-39} (2. g3 {+10=32-11} Nc6
{+4=14-4}) (2. e4 {+12=11-3}) (2. b3 {+5=8-8}) 2... Nc6 {+22=41-20} (2... Nf6
{+27=79-14} 3. Nc3 {+16=55-8} (3. g3 {+10=20-5} b6 {+6=12-3}) 3... e6 {+5=25-4}
(3... Nc6 {+6=16-0})) (2... g6 {+13=23-4} 3. d4 {+8=11-4}) 3. Nc3 {+14=26-10}
(3. d4 {+6=10-5} cxd4 {+6=10-5}) 3... Nf6 {+9=12-3}) (1... e6 {+6=23-7}) (1...
d6 {+17=28-17} 2. d4 {+10=23-13} Bg4 {+7=16-8}) (1... g6 {+46=67-26} 2. d4
{+20=28-10} (2. e4 {+17=19-10} Bg7 {+8=8-9} 3. d4 {+8=8-9} d6 {+8=7-9}) (2. c4
{+8=15-6} Bg7 {+8=12-6}) 2... Bg7 {+14=15-7}) (1... f5 {+12=38-5} 2. g3
{+11=24-2} Nf6 {+11=20-2} 3. Bg2 {+11=19-2}) 2. d4 {+107=262-39} (2. c4
{+30=90-25} e6 {+9=27-6} (2... d4 {+8=16-9}) (2... c6 {+8=36-7} 3. d4 {+5=17-3}
(3. e3 {+3=15-3}) 3... Nf6 {+5=17-3}) 3. g3 {+7=11-3}) (2. g3 {+37=102-23} Nf6
{+8=32-7} (2... Bg4 {+3=14-7} 3. Bg2 {+3=13-7}) (2... c6 {+15=30-6} 3. Bg2
{+14=30-6} Bg4 {+12=24-6}) 3. Bg2 {+8=32-7} c6 {+4=12-4}) 2... Nf6 {+66=206-26}
(2... e6 {+12=19-1} 3. c4 {+11=16-1}) (2... c6 {+15=16-5} 3. c4 {+15=14-5} Nf6
{+9=9-4}) (2... Bf5 {+7=14-3} 3. c4 {+6=13-3} e6 {+6=13-3}) 3. c4 {+65=203-26}
e6 {+33=96-14} (3... dxc4 {+6=55-5}) (3... c6 {+26=52-7})) (1. b3 {+11=16-13}
e5 {+7=7-6} 2. Bb2 {+7=7-6}) (1. g3 {+38=75-36} d5 {+12=39-13} (1... g6
{+16=13-6} 2. Bg2 {+15=12-6} Bg7 {+15=11-6}) (1... e5 {+7=9-7}) 2. Bg2
{+8=23-10} (2. Nf3 {+4=16-3})) 1... e6 {+376=704-213} (1... e5 {+653=1337-361}
2. Bc4 {+16=30-9} (2. Nf3 {+609=1258-336} Nf6 {+88=229-29} (2... Nc6
{+517=1021-306} 3. Bb5 {+396=801-243} (3. Bc4 {+65=103-28} Bc5 {+32=51-15}
(3... Nf6 {+31=47-13})) (3. d4 {+32=62-18} exd4 {+32=62-18}) (3. Nc3
{+22=49-14} Nf6 {+17=48-13}) 3... Nf6 {+47=66-27} (3... a6 {+314=664-194})
(3... Bc5 {+4=11-5}) (3... g6 {+12=31-13}) (3... Nd4 {+5=13-2})) 3. Nxe5
{+40=151-20} (3. Nc3 {+10=21-4} Nc6 {+8=15-3}) (3. d4 {+37=57-5} Nxe4
{+34=43-5}) 3... d6 {+40=151-20}) (2. f4 {+14=14-6} exf4 {+12=11-6}) (2. Nc3
{+12=30-7} Nf6 {+8=24-4}) 2... Nf6 {+13=29-8} 3. d3 {+12=25-8} Nc6 {+3=13-5})
(1... c5 {+1178=2016-741} 2. Nf3 {+1044=1744-638} (2. Nc3 {+76=154-64} e6
{+13=31-11} (2... d6 {+20=45-14} 3. g3 {+8=13-5} (3. f4 {+6=20-4}) 3... Nc6
{+5=12-3}) (2... Nc6 {+43=75-36} 3. g3 {+18=36-16} (3. Nf3 {+6=16-10}) (3. Ne2
{+12=13-2}) (3. f4 {+7=7-6}) 3... g6 {+18=35-15}) 3. Nf3 {+8=16-7}) (2. c3
{+38=88-26} e6 {+7=14-4} (2... d5 {+15=29-8} 3. exd5 {+15=26-7} Qxd5
{+15=26-7}) (2... Nf6 {+11=38-11} 3. e5 {+10=38-10} Nd5 {+10=38-10}) 3. d4
{+5=14-4} d5 {+5=14-4}) 2... e6 {+264=441-130} (2... Nc6 {+229=384-124} 3. d4
{+176=302-88} (3. Bb5 {+41=61-26} g6 {+18=32-9} (3... e6 {+15=15-10})) (3. Nc3
{+8=20-8}) 3... cxd4 {+176=302-88}) (2... d6 {+546=904-379} 3. d4
{+489=761-328} (3. c3 {+11=20-4} Nf6 {+11=20-4}) (3. Bb5+ {+30=103-32} Bd7
{+19=83-14} (3... Nc6 {+6=9-11}) (3... Nd7 {+5=11-7})) (3. Nc3 {+7=14-10}) 3...
cxd4 {+466=736-314} (3... Nf6 {+23=25-14})) 3. d4 {+213=337-108} (3. c3
{+6=28-4} d5 {+2=27-4}) (3. Nc3 {+22=39-12} a6 {+8=13-6} (3... Nc6 {+6=19-5}))
(3. d3 {+14=20-3} Nc6 {+12=16-2}) 3... cxd4 {+213=337-108}) (1... c6
{+250=488-140} 2. d4 {+210=390-114} (2. c4 {+15=43-6} d5 {+11=33-5} 3. exd5
{+6=23-3} cxd5 {+3=20-3}) (2. Nc3 {+10=28-8} d5 {+10=27-8} 3. Nf3 {+8=21-6} Bg4
{+4=17-6}) (2. d3 {+11=23-11} d5 {+8=18-8} 3. Nd2 {+8=18-8}) 2... d5
{+210=388-114} 3. Nd2 {+63=131-34} (3. Nc3 {+44=97-25} dxe4 {+43=95-25}) (3. e5
{+61=85-32} Bf5 {+58=83-31}) (3. exd5 {+40=72-21} cxd5 {+40=72-21}) 3... dxe4
{+62=127-34}) (1... g6 {+55=63-29} 2. d4 {+55=61-29} Bg7 {+48=52-25} 3. Nc3
{+34=26-17} (3. Nf3 {+10=21-5} d6 {+9=21-5}) 3... c6 {+16=11-13} (3... d6
{+18=15-4})) (1... d6 {+119=164-53} 2. d4 {+113=163-50} Nf6 {+90=127-36} (2...
g6 {+23=34-13} 3. Nc3 {+17=20-9} Bg7 {+15=19-8}) 3. Nc3 {+75=112-35} g6
{+66=104-31}) (1... Nf6 {+44=48-22} 2. e5 {+42=43-19} Nfd5 {+42=43-19} 3. d4
{+39=39-18} d6 {+39=39-18}) (1... d5 {+37=21-16} 2. exd5 {+36=21-16} Qxd5
{+34=17-11} 3. Nc3 {+31=16-10} Qa5 {+30=16-10}) (1... Nc6 {+12=12-3}) 2. d3
{+17=36-7} (2. d4 {+356=659-201} d5 {+356=658-201} 3. Nd2 {+109=268-75} (3. Nc3
{+217=326-107} Nf6 {+74=129-40} (3... dxe4 {+17=40-1}) (3... Bb4
{+121=146-60})) (3. exd5 {+8=31-8} exd5 {+8=31-8}) (3. e5 {+22=33-11} c5
{+20=30-10}) 3... c5 {+56=189-45} (3... Nf6 {+19=26-15}) (3... a6 {+11=27-8})
(3... Nc6 {+7=9-4})) 2... d5 {+11=24-4} 3. Nd2 {+9=20-3} Nf6 {+6=14-3}
Code: Select all
1. e4 e6 2. d3 d5 3. Nd2 Nf6 {+6=14-3}
2. d4 d5 3. Nd2 c5 {+56=189-45}
3. ... Nf6 {+19=26-15}
3. ... a6 {+11=27-8}
3. ... Nc6 {+7=9-4}
3. Nc3 Nf6 {+74=129-40}
3. ... dxe4 {+17=40-1}
3. ... Bb4 {+121=146-60}
3. exd5 exd5 {+8=31-8}
3. e5 c5 {+20=30-10}
1. ... e5 2. Bc4 Nf6 3. d3 Nc6 {+3=13-5}
2. Nf3 Nf6 3. Nxe5 d6 {+40=151-20}
3. Nc3 Nc6 {+8=15-3}
3. d4 Nxe4 {+34=43-5}
2. ... Nc6 3. Bb5 Nf6 {+47=66-27}
3. ... a6 {+314=664-194}
3. ... Bc5 {+4=11-5}
3. ... g6 {+12=31-13}
3. ... Nd4 {+5=13-2}
3. Bc4 Bc5 {+32=51-15}
3. ... Nf6 {+31=47-13}
3. d4 exd4 {+32=62-18}
3. Nc3 Nf6 {+17=48-13}
2. f4 exf4 {+12=11-6}
2. Nc3 Nf6 {+8=24-4}
1. ... c5 2. Nf3 e6 3. d4 cxd4 {+213=337-108}
3. c3 d5 {+2=27-4}
3. Nc3 a6 {+8=13-6}
3. ... Nc6 {+6=19-5}
3. d3 Nc6 {+12=16-2}
2. ... Nc6 3. d4 cxd4 {+176=302-88}
3. Bb5 g6 {+18=32-9}
3. ... e6 {+15=15-10}
3. Nc3 {+8=20-8}
2. ... d6 3. d4 cxd4 {+466=736-314}
3. ... Nf6 {+23=25-14}
3. c3 Nf6 {+11=20-4}
3. Bb5+ Bd7 {+19=83-14}
3. ... Nc6 {+6=9-11}
3. ... Nd7 {+5=11-7}
3. Nc3 {+7=14-10}
2. Nc3 e6 3. Nf3 {+8=16-7}
2. ... d6 3. g3 Nc6 {+5=12-3}
3. f4 {+6=20-4}
2. ... Nc6 3. g3 g6 {+18=35-15}
3. Nf3 {+6=16-10}
3. Nge2 {+12=13-2}
3. f4 {+7=7-6}
2. c3 e6 3. d4 d5 {+5=14-4}
2. ... d5 3. exd5 Qxd5 {+15=26-7}
2. ... Nf6 3. e5 Nd5 {+10=38-10}
1. ... c6 2. d4 d5 3. Nd2 dxe4 {+62=127-34}
3. Nc3 dxe4 {+43=95-25}
3. e5 Bf5 {+58=83-31}
3. exd5 cxd5 {+40=72-21}
2. c4 d5 3. exd5 cxd5 {+3=20-3}
2. Nc3 d5 3. Nf3 Bg4 {+4=17-6}
2. d3 d5 3. Nd2 {+8=18-8}
1. ... g6 2. d4 Bg7 3. Nc3 c6 {+16=11-13}
3. ... d6 {+18=15-4}
3. Nf3 d6 {+9=21-5}
1. ... d6 2. d4 Nf6 3. Nc3 g6 {+66=104-31}
2. ... g6 3. Nc3 Bg7 {+15=19-8}
1. ... Nf6 2. e5 Nd5 3. d4 d6 {+39=39-18}
1. ... d5 2. exd5 Qxd5 3. Nc3 Qa5 {+30=16-10}
1. ... Nc6 {+12=12-3}
1. d4 Nf6 2. c4 e6 3. Nf3 d5 {+142=357-91}
3. ... b6 {+333=743-177}
3. ... Bb4+ {+84=198-44}
3. ... c5 {+42=52-25}
3. Nc3 Bb4 {+375=721-258}
3. ... d5 {+51=99-22}
3. ... c5 {+14=10-5}
3. g3 c5 {+8=22-10}
3. ... d5 {+28=108-22}
3. ... Bb4+ {+23=36-14}
2. ... g6 3. Nc3 d5 {+171=292-110}
3. ... Bg7 {+274=384-173}
3. g3 c6 {+5=25-3}
3. ... Bg7 {+31=53-14}
3. Nf3 Bg7 {+55=111-27}
2. ... c5 3. d5 b5 {+47=70-37}
3. ... g6 {+17=26-13}
3. ... e6 {+21=24-12}
3. ... e5 {+14=7-5}
3. ... d6 {+9=15-8}
3. Nf3 cxd4 {+13=10-10}
2. ... c6 3. Nc3 d5 {+15=21-5}
2. ... d6 3. Nc3 Nbd7 {+12=21-4}
2. ... e5 3. dxe5 Ng4 {+5=14-2}
2. Nf3 g6 3. Bf4 Bg7 {+4=16-12}
3. c4 Bg7 {+69=136-53}
3. g3 Bg7 {+24=58-11}
3. ... d5 {+4=16-0}
3. Bg5 Bg7 {+10=53-23}
3. c3 Bg7 {+4=14-3}
2. ... e6 3. c4 b6 {+50=156-39}
3. ... Bb4+ {+13=39-11}
3. ... c5 {+17=22-13}
3. ... d5 {+11=36-6}
3. e3 c5 {+3=16-3}
3. ... b6 {+4=14-5}
3. Bg5 h6 {+5=17-6}
3. ... c5 {+11=37-9}
3. g3 b6 {+9=17-8}
3. ... b5 {+10=29-6}
2. ... d5 3. c4 e6 {+24=81-14}
3. ... c6 {+12=19-5}
2. ... c5 3. d5 b5 {+10=9-4}
3. ... g6 {+10=12-3}
2. ... b6 {+4=23-1}
2. ... d6 {+11=12-3}
2. Bg5 Ne4 3. Bf4 {+9=18-7}
2. ... e6 {+11=11-9}
1. ... d6 2. c4 e5 3. Nf3 e4 {+8=16-3}
2. Nf3 Bg4 3. c4 Nd7 {+9=15-3}
2. ... g6 3. c4 Bg7 {+7=10-6}
2. e4 Nf6 3. f3 {+5=10-5}
3. Nc3 g6 {+17=25-12}
2. ... g6 3. Nc3 {+7=12-2}
1. ... d5 2. c4 e6 3. Nc3 Be7 {+52=113-14}
3. ... c5 {+10=28-8}
3. ... c6 {+14=30-9}
3. ... Nf6 {+37=78-18}
3. ... Bb4 {+6=11-4}
3. Nf3 c6 {+5=16-2}
3. ... Nf6 {+29=73-18}
3. ... c5 {+14=13-2}
2. ... dxc4 3. e3 Nf6 {+15=28-11}
3. Nf3 a6 {+16=35-8}
3. ... Nf6 {+25=79-23}
3. e4 Nf6 {+18=36-15}
3. ... c5 {+8=5-8}
3. ... Nc6 {+9=11-4}
3. ... e5 {+16=32-3}
2. ... c6 3. e3 Nf6 {+11=35-7}
3. Nc3 Nf6 {+100=228-73}
3. ... e5 {+8=8-6}
3. Nf3 Nf6 {+118=281-85}
3. cxd5 cxd5 {+8=30-6}
2. Nf3 Nf6 3. c4 c6 {+21=43-14}
3. ... dxc4 {+13=48-3}
3. ... e6 {+4=23-5}
2. ... c6 3. c4 {+7=18-3}
2. ... e6 3. c4 dxc4 {+5=14-2}
2. ... c5 {+4=14-4}
2. Bg5 {+11=17-7}
1. ... e6 2. c4 b6 {+10=16-9}
2. ... Bb4+ 3. Bd2 {+10=20-2}
2. ... Nf6 3. Nf3 b6 {+10=18-4}
3. Nc3 Bb4 {+8=19-7}
2. ... d5 3. Nc3 {+9=8-4}
2. ... f5 3. g3 Nf6 {+22=13-7}
2. Nf3 Nf6 {+7=13-4}
2. ... f5 {+7=11-3}
2. e4 d5 3. Nd2 {+5=15-0}
3. Nc3 {+2=16-6}
1. ... f5 2. Nc3 {+8=11-5}
2. g3 Nf6 3. Bg2 g6 {+19=30-14}
2. c4 Nf6 {+13=12-6}
2. Nf3 Nf6 {+3=20-8}
1. ... g6 2. e4 Bg7 {+9=17-6}
2. c4 Bg7 {+9=12-6}
1. ... c5 2. d5 {+6=10-4}
1. c4 Nf6 2. Nc3 g6 3. g3 Bg7 {+9=15-5}
3. e4 d6 {+16=14-12}
2. ... e5 3. Nf3 Nc6 {+25=51-25}
2. ... c5 3. Nf3 d5 {+11=7-4}
3. ... e6 {+11=25-6}
3. ... Nc6 {+7=10-3}
3. g3 e6 {+10=15-3}
2. ... d5 3. cxd5 Nxd5 {+14=20-4}
2. ... e6 3. Nf3 b6 {+16=27-6}
3. ... d5 {+18=32-6}
3. ... c5 {+7=15-3}
3. e4 {+9=21-3}
3. d4 Bb4 {+8=12-2}
2. Nf3 g6 {+7=17-4}
2. ... c6 {+3=16-1}
2. ... c5 3. Nc3 {+6=11-4}
2. ... e6 3. g3 {+5=20-2}
2. ... b6 3. g3 Bb7 {+2=16-2}
2. g3 {+16=25-7}
2. d4 e6 {+4=15-8}
1. ... c6 2. e4 d5 3. exd5 cxd5 {+5=19-6}
2. Nf3 d5 {+6=17-2}
2. d4 d5 3. Nf3 Nf6 {+7=13-2}
3. Nc3 {+7=12-4}
1. ... e5 2. g3 Nf6 3. Bg2 d5 {+7=12-7}
2. ... Nc6 3. Bg2 g6 {+7=18-8}
2. Nc3 Nc6 3. g3 g6 {+15=55-12}
3. Nf3 Nf6 {+5=20-9}
2. ... Bb4 3. Nd5 Be7 {+10=6-5}
2. ... d6 3. Nf3 {+9=11-4}
3. g3 {+12=13-2}
2. ... Nf6 3. Nf3 Nc6 {+46=119-37}
3. g3 Bb4 {+4=16-4}
3. ... d5 {+10=5-5}
1. ... c5 2. Nf3 Nf6 3. g3 {+3=17-5}
3. Nc3 Nc6 {+19=41-5}
3. ... e6 {+19=41-9}
3. ... d5 {+9=19-4}
2. ... Nc6 3. d4 cxd4 {+7=16-4}
3. Nc3 Nf6 {+6=13-2}
2. ... g6 {+13=13-3}
2. g3 g6 3. Bg2 Bg7 {+11=31-6}
2. Nc3 g6 {+2=16-5}
2. ... Nc6 {+4=14-3}
1. ... e6 2. Nf3 d5 3. d4 Nf6 {+7=15-3}
2. ... Nf6 3. Nc3 {+4=12-4}
3. g3 {+3=17-3}
2. g3 d5 3. Bg2 Nf6 {+10=22-6}
2. Nc3 d5 3. d4 Be7 {+20=38-11}
3. ... Nf6 {+24=45-11}
2. d4 d5 3. Nc3 {+7=13-3}
1. ... g6 2. d4 Bg7 3. Nc3 {+5=11-4}
2. ... Nf6 {+13=11-2}
2. Nc3 Bg7 3. g3 {+3=23-11}
2. e4 Bg7 3. d4 d6 {+7=16-7}
1. ... f5 {+12=16-2}
1. ... b6 {+12=13-4}
1. Nf3 d5 2. d4 Nf6 3. c4 e6 {+33=96-14}
3. ... dxc4 {+6=55-5}
3. ... c6 {+26=52-7}
2. ... e6 3. c4 {+11=16-1}
2. ... c6 3. c4 Nf6 {+9=9-4}
2. ... Bf5 3. c4 e6 {+6=13-3}
2. c4 e6 3. g3 {+7=11-3}
2. ... d4 {+8=16-9}
2. ... c6 3. d4 Nf6 {+5=17-3}
3. e3 {+3=15-3}
2. g3 Nf6 3. Bg2 c6 {+4=12-4}
2. ... Bg4 3. Bg2 {+3=13-7}
2. ... c6 3. Bg2 Bg4 {+12=24-6}
1. ... Nf6 2. c4 g6 3. Nc3 Bg7 {+54=83-21}
3. ... d5 {+13=46-5}
3. g3 Bg7 {+31=69-9}
2. ... e6 3. Nc3 Bb4 {+44=75-14}
3. ... d5 {+22=71-8}
3. g3 d5 {+26=69-16}
3. ... b6 {+5=29-4}
3. d4 b6 {+12=18-6}
2. ... c5 3. Nc3 Nc6 {+28=43-7}
3. ... d5 {+4=30-5}
3. ... e6 {+11=38-8}
3. g3 b6 {+6=24-4}
3. ... d5 {+6=14-0}
2. ... b6 3. g3 Bb7 {+19=63-11}
3. ... c5 {+9=26-12}
3. d4 e6 {+5=14-1}
3. Nc3 Bb7 {+11=13-1}
2. ... c6 3. Nc3 d5 {+8=16-4}
2. d4 g6 {+8=31-4}
2. ... e6 3. c4 {+7=13-5}
2. ... d5 {+3=17-2}
2. g3 b6 3. Bg2 Bb7 {+2=15-6}
2. ... d5 3. Bg2 c6 {+12=31-13}
2. ... g6 3. Bg2 Bg7 {+13=28-9}
3. b3 Bg7 {+5=14-2}
1. ... c5 2. c4 Nc6 3. Nc3 Nf6 {+9=12-3}
3. d4 cxd4 {+6=10-5}
2. ... Nf6 3. Nc3 e6 {+5=25-4}
3. ... Nc6 {+6=16-0}
3. g3 b6 {+6=12-3}
2. ... g6 3. d4 {+8=11-4}
2. g3 Nc6 {+4=14-4}
2. e4 {+12=11-3}
2. b3 {+5=8-8}
1. ... e6 {+6=23-7}
1. ... d6 2. d4 Bg4 {+7=16-8}
1. ... g6 2. d4 Bg7 {+14=15-7}
2. e4 Bg7 3. d4 d6 {+8=7-9}
2. c4 Bg7 {+8=12-6}
1. ... f5 2. g3 Nf6 3. Bg2 {+11=19-2}
1. b3 e5 2. Bb2 {+7=7-6}
1. g3 d5 2. Bg2 {+8=23-10}
2. Nf3 {+4=16-3}
1. ... g6 2. Bg2 Bg7 {+15=11-6}
1. ... e5 {+7=9-7}
- Is there a standard for {+win=draw-loss} numbers inside PGN comments?
- Is there a standard for time, depth, score inside PGN comments?
If I do not find one I will define my own PGN extension.
- How do other handle the comments without the braces?
They are syntax errors and exceptions now.
I found things like this:
Code: Select all
1. e4 {0} e5 {0.01/0 1}
1.Nf3 Both last book move 0.16/12 4
10. e3 {+0.14/12}
12. Na4 {(Acb5) 0.10/15 7} Bxd4 {-0.02/13 0}
stored data like this.
Code: Select all
{pre comment of game}
[{c1} tag_key {c1} "tag_value" {c1}] {c1} ;c1 are tag comments
[{c2} tag_key {c2} "tag_value" {c2}] {c2} ;c2 are tag comments
{comment of last tag}
{comment of main variant} 1. {cm1 comment of move 1} e4 {cm1} $ann {cm1}
({comment of variant} 1. {cm2} d4 {cm2} ... ) {cm1} (other variants)
2. {next and following moves} {comment belonging to last move}
1-0 {comments after result are game post comments}
Code: Select all
Move :: from, to, piece, promoted, captured, ep, castling, check, mate
(coded in bits of an integer)
MoveInfo :: number, color,
Move,
annotation, comment,
list of Variant
optional: number of win, draw, loss
optional: time, depth, score (not yet implemented)
Variant :: comment,
list of MoveInfo
Game :: pre_comment, post_comment,
Board (opening position or from the FEN-tag,
dictionary of tags, result,
Variant
Database :: list of Game (not yet implemented)
Any comments?
Harald
(Sorry for the long post, but it is shorter than some moderation threads.)