FEN - Flipper for Windows

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

User avatar
Matthias Gemuh
Posts: 3245
Joined: Thu Mar 09, 2006 9:10 am

FEN - Flipper for Windows

Post by Matthias Gemuh »

FEN - Flipper for Windows

Give him your EPD folder, and the guy will flip the FENs, and best moves, and "avoid" moves, and PV.

He spits out *_flip.epd with only flipped positions, and *_x.epd with mixed.
The original EPD files remain untouched.

http://www.chess.hylogic.de/chess/FenFlipper.zip

[D]r2q1rk1/pp3ppp/1bpN1n2/4n3/1PP1P1b1/P1N2PP1/6BP/R1BQK2R b KQ - bm Bxf3

flips to

[D]r1bqk2r/6bp/p1n2pp1/1pp1p1B1/4N3/1BPn1N2/PP3PPP/R2Q1RK1 w kq - bm Bxf6

Matthias.
My engine was quite strong till I added knowledge to it.
http://www.chess.hylogic.de
Daniel Anulliero
Posts: 759
Joined: Fri Jan 04, 2013 4:55 pm
Location: Nice

Re: FEN - Flipper for Windows

Post by Daniel Anulliero »

It will be good to debug the eval and others things
Thanks for sharing !
Isa download :
User avatar
Matthias Gemuh
Posts: 3245
Joined: Thu Mar 09, 2006 9:10 am

Re: FEN - Flipper for Windows

Post by Matthias Gemuh »

Daniel Anulliero wrote:It will be good to debug the eval and others things
Thanks for sharing !
Yes, example

Code: Select all

0001 124 1br3k1/1p4p1/p3p2r/5pq1/3Nb3/P1B1PpP1/1P1R3P/2R1Q1K1 b - - bm f2;
0002 124 2r1q1k1/1p1r3p/p1b1pPp1/3nB3/5PQ1/P3P2R/1P4P1/1BR3K1 w - - bm  f7;
0003 110 1k1r1b1r/Rpp2ppp/4b3/1q2N3/5Q2/1PN5/2nP1PPP/2BKR3 b - - bm Bxb3;
0004 110 2bkr3/2Np1ppp/1pn5/5q2/1Q2n3/4B3/rPP2PPP/1K1R1B1R w - - bm  Bxb6;
0005 -134 1k1r1b1r/p1p1q3/2p1p3/4Ppp1/4nP2/P2BQ3/1PP3PB/2KR3R b - - bm Rxh2;
0006 -134 2kr3r/1pp3pb/p2bq3/4Np2/4pPP1/2P1P3/P1P1Q3/1K1R1B1R w - - bm  Rxh7;
0007 -40 1k1r2r1/p1p3q1/2p2p2/3pn3/1P1b2bB/1QN5/P4PPP/1R2RBK1 b - - bm Nf3;
0008 -40 1r2rbk1/p4ppp/1qn5/1p1B2Bb/3PN3/2P2P2/P1P3Q1/1K1R2R1 w - - bm  Nf6;
0009 -653 1k6/1p2p3/3p4/Qp1P1p2/2P2Pp1/P3Rn2/KP1q4/6r1 w - - bm Qd8;
0010 -653 6R1/kp1Q4/p3rN2/2p2pP1/qP1p1P2/3P4/1P2P3/1K6 b - - bm  Qd1;
0011 -9 1n2k2r/rp4pp/pN3p2/2n1p3/4P3/N7/PP2KPPP/R6R w k - bm Rac1;
0012 -9 r6r/pp2kppp/n7/4p3/2N1P3/Pn3P2/RP4PP/1N2K2R b K - bm  Rac8;
0013 75 1n2rr2/1pk3pp/pNn2p2/2N1p3/8/6P1/PP2PPKP/2RR4 w - - bm Nca4;
0014 75 2rr4/pp2ppkp/6p1/8/2n1P3/PnN2P2/1PK3PP/1N2RR2 b - - bm  Nca5;
0015 8 1nbq1r1k/3rbp1p/p1p1pp1Q/1p6/P1pPN3/5NP1/1P2PPBP/R4RK1 w - - bm Nfg5;
0016 8 r4rk1/1p2ppbp/5np1/p1Ppn3/1P6/P1P1PP1q/3RBP1P/1NBQ1R1K b - - bm  Nfg4;
My engine was quite strong till I added knowledge to it.
http://www.chess.hylogic.de
Dann Corbit
Posts: 12538
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: FEN - Flipper for Windows

Post by Dann Corbit »

My friend Les Fernandez wrote something like that for me using vb.net.

Given this input:
B2R4/1nQqQ3/1QrbrQ2/NqqkqqN1/1QqqqQ2/2QbQn2/3B2R1/3K4 w - - acd 17; acs 14040; bm Qcxc6+; c3 "Qcxc6+"; ce 32752; dm 8; pm Qcxc6+; pv Qcxc6+ Qbxc6 Q4xc5+ Qc4xc5 Qcxc5+ Qdxc5 Qexc5+ Qxc5 Bxb7+ Qcc6 Bxc6+ Qxc6 Qxc6+ Kd4 Nxf3#;
QqN1Q3/rqb1q3/1QqQ4/1n1Q3R/krq1Qq2/2Qb4/q1n2QR1/NqQqBB1K w - - acd 17; acs 6660; bm Qbxa7+; ce 32752; dm 8; pm Qbxa7+; pv Qbxa7+ Q8xa7 Qfxa7+ Qxa7 Qxa7+ Ba5 Nb6+ Qxb6 Qexb5+ Qcxb5 Qcxb4+ Nxb4 Rxa2+ Qxa2 Qxa2#;
1NKQ2N1/NNQQ1qqn/1N1Nq1q1/2Nnrrrk/6q1/r3qq2/8/8 b - - acd 17; acs 4680; bm Nxb6+; ce 32752; dm 8; id "Leonid.xxx"; pm Nxb6+; pv Nxb6+ Qxb6 Rxc5+ Nbc6 Qfxd7+ Kb8 Qexd6+ Nxd6 Qgxd6+ Qdc7 Q7xc7+ Qxc7 Qdxc7+ Ka8 Qxg8+;

It creates this output:
B2R4/1nQqQ3/1QrbrQ2/NqqkqqN1/1QqqqQ2/2QbQn2/3B2R1/3K4 w - - acd 17; acs 14040; bm Qcxc6+; c3 "Qcxc6+"; ce 32752; dm 8; pm Qcxc6+; pv Qcxc6+ Qbxc6 Q4xc5+ Qc4xc5 Qcxc5+ Qdxc5 Qexc5+ Qxc5 Bxb7+ Qcc6 Bxc6+ Qxc6 Qxc6+ Kd4 Nxf3#; id "P1a";
4R2B/3QqQn1/2QrbrQ1/1NqqkqqN/2QqqqQ1/2nQbQ2/1R2B3/4K3 w - - bm Qfxf6+; ce 32752; pm Qfxf6+; pv Qfxf6+ Qgxf6 Q4xf5+ Qf4xf5 Qfxf5+ Qexf5 Qdxf5+ Qxf5 Bxg7+ Qff6 Bxf6+ Qxf6 Qxf6+ Ke4 Nxc3#; id "P1b";
3k4/3b2r1/2qBqN2/1qQQQq2/nQQKQQn1/1qRBRq2/1NqQq3/b2r4 b - - bm Qcxc3+; ce 32752; pm Qcxc3+; pv Qcxc3+ Qbxc3 Q5xc4+ Qc5xc4 Qcxc4+ Qdxc4 Qexc4+ Qxc4 Bxb2+ Qcc3 Bxc3+ Qxc3 Qxc3+ Kd5 Nxf6#; id "P1c";
4k3/1r2b3/2NqBq2/2qQQQq1/1nQQKQQn/2qRBRq1/3qQqN1/4r2b b - - bm Qfxf3+; ce 32752; pm Qfxf3+; pv Qfxf3+ Qgxf3 Q5xf4+ Qf5xf4 Qfxf4+ Qexf4 Qdxf4+ Qxf4 Bxg2+ Qff3 Bxf3+ Qxf3 Qxf3+ Ke5 Nxc6#; id "P1d";
QqN1Q3/rqb1q3/1QqQ4/1n1Q3R/krq1Qq2/2Qb4/q1n2QR1/NqQqBB1K w - - acd 17; acs 6660; bm Qbxa7+; ce 32752; dm 8; pm Qbxa7+; pv Qbxa7+ Q8xa7 Qfxa7+ Qxa7 Qxa7+ Ba5 Nb6+ Qxb6 Qexb5+ Qcxb5 Qcxb4+ Nxb4 Rxa2+ Qxa2 Qxa2#; id "P2a";
3Q1NqQ/3q1bqr/4QqQ1/R3Q1n1/2qQ1qrk/4bQ2/1RQ2n1q/K1BBqQqN w - - bm Qgxh7+; ce 32752; pm Qgxh7+; pv Qgxh7+ Q8xh7 Qcxh7+ Qxh7 Qxh7+ Bh5 Ng6+ Qxg6 Qdxg5+ Qfxg5 Qfxg4+ Nxg4 Rxh2+ Qxh2 Qxh2#; id "P2b";
nQqQbb1k/Q1N2qr1/2qB4/KRQ1qQ2/1N1q3r/1qQq4/RQB1Q3/qQn1q3 b - - bm Qbxa2+; ce 32752; pm Qbxa2+; pv Qbxa2+ Q1xa2 Qfxa2+ Qxa2 Qxa2+ Ba4 Nb3+ Qxb3 Qexb4+ Qcxb4 Qcxb5+ Nxb5 Rxa7+ Qxa7 Qxa7#; id "P2c";
k1bbQqQn/1rq2N1Q/4Bq2/2Qq1QRK/r3q1N1/4qQq1/3Q1BQR/3q1nQq b - - bm Qgxh2+; ce 32752; pm Qgxh2+; pv Qgxh2+ Q1xh2 Qcxh2+ Qxh2 Qxh2+ Bh4 Ng3+ Qxg3 Qdxg4+ Qfxg4 Qfxg5+ Nxg5 Rxh7+ Qxh7 Qxh7#; id "P2d";
1NKQ2N1/NNQQ1qqn/1N1Nq1q1/2Nnrrrk/6q1/r3qq2/8/8 b - - acd 17; acs 4680; bm Nxb6+; ce 32752; dm 8; id "Leonid.xxx P3a"; pm Nxb6+; pv Nxb6+ Qxb6 Rxc5+ Nbc6 Qfxd7+ Kb8 Qexd6+ Nxd6 Qgxd6+ Qdc7 Q7xc7+ Qxc7 Qdxc7+ Ka8 Qxg8+;
1N2QKN1/nqq1QQNN/1q1qN1N1/krrrnN2/1q6/2qq3r/8/8 b - - bm Nxg6+; ce 32752; pm Nxg6+; pv Nxg6+ Qxg6 Rxf5+ Ngf6 Qcxe7+ Kg8 Qdxe6+ Nxe6 Qbxe6+ Qef7 Q7xf7+ Qxf7 Qexf7+ Kh8 Qxb8+; id "P3b";
8/8/R3QQ2/6Q1/2nNRRRK/1n1nQ1Q1/nnqq1QQN/1nkq2n1 w - - bm Nxb3+; ce 32752; pm Nxb3+; pv Nxb3+ Qxb3 Rxc4+ Nbc3 Qfxd2+ Kb1 Qexd3+ Nxd3 Qgxd3+ Qdc2 Q2xc2+ Qxc2 Qdxc2+ Ka1 Qxg1+; id "P3c";
8/8/2QQ3R/1Q6/KRRRNn2/1Q1Qn1n1/NQQ1qqnn/1n2qkn1 w - - bm Nxg3+; ce 32752; pm Nxg3+; pv Nxg3+ Qxg3 Rxf4+ Ngf3 Qcxe2+ Kg1 Qdxe3+ Nxe3 Qbxe3+ Qef2 Q2xf2+ Qxf2 Qexf2+ Kh1 Qxb1+; id "P3d";

But it has an additional feature called "sliders" that allows it to create this output:
B2R4/1nQqQ3/1QrbrQ2/NqqkqqN1/1QqqqQ2/2QbQn2/3B2R1/3K4 w - - pv Qcxc6+; ce 32752; id "P1aS1";
B1QR4/1n1qQ3/1QrbrQ2/NqqkqqN1/1QqqqQ2/2QbQn2/3B2R1/3K4 w - - pv Qcxc6+; ce 32752; id "P1aS2";
4R2B/3QqQn1/2QrbrQ1/1NqqkqqN/2QqqqQ1/2nQbQ2/1R2B3/4K3 w - - pv Qfxf6+; ce 32752; id "P1bS1";
4RQ1B/3Qq1n1/2QrbrQ1/1NqqkqqN/2QqqqQ1/2nQbQ2/1R2B3/4K3 w - - pv Qfxf6+; ce 32752; id "P1bS2";
3k4/3b2r1/2qBqN2/1qQQQq2/nQQKQQn1/1qRBRq2/1NqQq3/b2r4 b - - pv Qcxc3+; ce 32752; id "P1cS1";
3k4/3b2r1/2qBqN2/1qQQQq2/nQQKQQn1/1qRBRq2/1N1Qq3/b1qr4 b - - pv Qcxc3+; ce 32752; id "P1cS2";
4k3/1r2b3/2NqBq2/2qQQQq1/1nQQKQQn/2qRBRq1/3qQqN1/4r2b b - - pv Qfxf3+; ce 32752; id "P1dS1";
4k3/1r2b3/2NqBq2/2qQQQq1/1nQQKQQn/2qRBRq1/3qQ1N1/4rq1b b - - pv Qfxf3+; ce 32752; id "P1dS2";
QqN1Q3/rqb1q3/1QqQ4/1n1Q3R/krq1Qq2/2Qb4/q1n2QR1/NqQqBB1K w - - pv Qbxa7+; ce 32752; id "P2aS1";
QqN1Q3/rqb1q3/2qQ4/1nQQ3R/krq1Qq2/2Qb4/q1n2QR1/NqQqBB1K w - - pv Qcxa7+; ce 32752; id "P2aS2";
QqN1Q3/rqb1q3/2qQ4/1n1Q3R/krqQQq2/2Qb4/q1n2QR1/NqQqBB1K w - - pv Qdxa7+; ce 32752; id "P2aS3";
QqN1Q3/rqb1q3/2qQ4/1n1Q3R/krq1Qq2/2QbQ3/q1n2QR1/NqQqBB1K w - - pv Qexa7+; ce 32752; id "P2aS4";
3Q1NqQ/3q1bqr/4QqQ1/R3Q1n1/2qQ1qrk/4bQ2/1RQ2n1q/K1BBqQqN w - - pv Qgxh7+; ce 32752; id "P2bS1";
3Q1NqQ/3q1bqr/4Qq2/R3QQn1/2qQ1qrk/4bQ2/1RQ2n1q/K1BBqQqN w - - pv Qfxh7+; ce 32752; id "P2bS2";
3Q1NqQ/3q1bqr/4Qq2/R3Q1n1/2qQQqrk/4bQ2/1RQ2n1q/K1BBqQqN w - - pv Qexh7+; ce 32752; id "P2bS3";
3Q1NqQ/3q1bqr/4Qq2/R3Q1n1/2qQ1qrk/3QbQ2/1RQ2n1q/K1BBqQqN w - - pv Qdxh7+; ce 32752; id "P2bS4";
nQqQbb1k/Q1N2qr1/2qB4/KRQ1qQ2/1N1q3r/1qQq4/RQB1Q3/qQn1q3 b - - pv Qbxa2+; ce 32752; id "P2cS1";
nQqQbb1k/Q1N2qr1/2qB4/KRQ1qQ2/1Nqq3r/2Qq4/RQB1Q3/qQn1q3 b - - pv Qcxa2+; ce 32752; id "P2cS2";
nQqQbb1k/Q1N2qr1/2qB4/KRQqqQ2/1N1q3r/2Qq4/RQB1Q3/qQn1q3 b - - pv Qdxa2+; ce 32752; id "P2cS3";
nQqQbb1k/Q1N2qr1/2qBq3/KRQ1qQ2/1N1q3r/2Qq4/RQB1Q3/qQn1q3 b - - pv Qexa2+; ce 32752; id "P2cS4";
k1bbQqQn/1rq2N1Q/4Bq2/2Qq1QRK/r3q1N1/4qQq1/3Q1BQR/3q1nQq b - - pv Qgxh2+; ce 32752; id "P2dS1";
k1bbQqQn/1rq2N1Q/4Bq2/2Qq1QRK/r3qqN1/4qQ2/3Q1BQR/3q1nQq b - - pv Qfxh2+; ce 32752; id "P2dS2";
k1bbQqQn/1rq2N1Q/4Bq2/2QqqQRK/r3q1N1/4qQ2/3Q1BQR/3q1nQq b - - pv Qexh2+; ce 32752; id "P2dS3";
k1bbQqQn/1rq2N1Q/3qBq2/2Qq1QRK/r3q1N1/4qQ2/3Q1BQR/3q1nQq b - - pv Qdxh2+; ce 32752; id "P2dS4";
1NKQ2N1/NNQQ1qqn/1N1Nq1q1/2Nnrrrk/6q1/r3qq2/8/8 b - - pv Nxb6+; ce 32752; id "P3aS1";
1NKQ2N1/NNQQ1qqn/1N1Nq1q1/2N1rrrk/2n3q1/r3qq2/8/8 b - - pv Nxb6+; ce 32752; id "P3aS2";
1NKQ2N1/NNQQ1qqn/1N1Nq1q1/2N1rrrk/n5q1/r3qq2/8/8 b - - pv Nxb6+; ce 32752; id "P3aS3";
nNKQ2N1/NNQQ1qqn/1N1Nq1q1/2N1rrrk/6q1/r3qq2/8/8 b - - pv Nxb6+; ce 32752; id "P3aS4";
1N2QKN1/nqq1QQNN/1q1qN1N1/krrrnN2/1q6/2qq3r/8/8 b - - pv Nxg6+; ce 32752; id "P3bS1";
1N2QKN1/nqq1QQNN/1q1qN1N1/krrr1N2/1q3n2/2qq3r/8/8 b - - pv Nxg6+; ce 32752; id "P3bS2";
1N2QKN1/nqq1QQNN/1q1qN1N1/krrr1N2/1q5n/2qq3r/8/8 b - - pv Nxg6+; ce 32752; id "P3bS3";
1N2QKNn/nqq1QQNN/1q1qN1N1/krrr1N2/1q6/2qq3r/8/8 b - - pv Nxg6+; ce 32752; id "P3bS4";
8/8/R3QQ2/6Q1/2nNRRRK/1n1nQ1Q1/nnqq1QQN/1nkq2n1 w - - pv Nxb3+; ce 32752; id "P3cS1";
8/8/R3QQ2/2N3Q1/2n1RRRK/1n1nQ1Q1/nnqq1QQN/1nkq2n1 w - - pv Nxb3+; ce 32752; id "P3cS2";
8/8/R3QQ2/N5Q1/2n1RRRK/1n1nQ1Q1/nnqq1QQN/1nkq2n1 w - - pv Nxb3+; ce 32752; id "P3cS3";
8/8/R3QQ2/6Q1/2n1RRRK/1n1nQ1Q1/nnqq1QQN/Nnkq2n1 w - - pv Nxb3+; ce 32752; id "P3cS4";
8/8/2QQ3R/1Q6/KRRRNn2/1Q1Qn1n1/NQQ1qqnn/1n2qkn1 w - - pv Nxg3+; ce 32752; id "P3dS1";
8/8/2QQ3R/1Q3N2/KRRR1n2/1Q1Qn1n1/NQQ1qqnn/1n2qkn1 w - - pv Nxg3+; ce 32752; id "P3dS2";
8/8/2QQ3R/1Q5N/KRRR1n2/1Q1Qn1n1/NQQ1qqnn/1n2qkn1 w - - pv Nxg3+; ce 32752; id "P3dS3";
8/8/2QQ3R/1Q6/KRRR1n2/1Q1Qn1n1/NQQ1qqnn/1n2qknN w - - pv Nxg3+; ce 32752; id "P3dS4";
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
User avatar
Matthias Gemuh
Posts: 3245
Joined: Thu Mar 09, 2006 9:10 am

Re: FEN - Flipper for Windows 1.1

Post by Matthias Gemuh »

FEN - Flipper 1.1

I have just added the handling of the "pm" and "c0" tags.

The STS Testsuite uses the "c0" tag to score moves.
My engine was quite strong till I added knowledge to it.
http://www.chess.hylogic.de
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: FEN - Flipper for Windows

Post by Ferdy »

Nice converter :!:

Created a tool to read its output send eval command to engine and compare the score returned for every two succeeding positions.

Code: Select all

C:\chess\python\PositionFlipTest>pft.py d.exe sts_x.epd
:: Result summary ::
Test file             : sts_x.epd
Total Positions       : 3000
Number of Comparisons : 1500
Engine                : Deuterium v2017.1.35.402g
Errors                : 0

C:\chess\python\PositionFlipTest>pft.py sf.exe sts_x.epd
:: Result summary ::
Test file             : sts_x.epd
Total Positions       : 3000
Number of Comparisons : 1500
Engine                : Stockfish 180417 64 POPCNT
Errors                : 0 
BTW I am converting around 1.3 million positions (71 mb file) and it took now 35 minutes and is still running...

The epd format is just like this:

Code: Select all

r3rk2/p1p2ppp/b2b4/2P5/2PB2n1/P2B4/4NPPP/2KR3R b - - c9 "1/2-1/2";
Perhaps this can be optimized in the future.
User avatar
Matthias Gemuh
Posts: 3245
Joined: Thu Mar 09, 2006 9:10 am

Re: FEN - Flipper for Windows

Post by Matthias Gemuh »

Ferdy wrote:...

BTW I am converting around 1.3 million positions (71 mb file) and it took now 35 minutes and is still running...

The epd format is just like this:

Code: Select all

r3rk2/p1p2ppp/b2b4/2P5/2PB2n1/P2B4/4NPPP/2KR3R b - - c9 "1/2-1/2";
Perhaps this can be optimized in the future.
35+ minutes is really long.

If the conversion fails, let me know. Speed up possible.
My engine was quite strong till I added knowledge to it.
http://www.chess.hylogic.de
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: FEN - Flipper for Windows

Post by Ferdy »

Matthias Gemuh wrote:
Ferdy wrote:...

BTW I am converting around 1.3 million positions (71 mb file) and it took now 35 minutes and is still running...

The epd format is just like this:

Code: Select all

r3rk2/p1p2ppp/b2b4/2P5/2PB2n1/P2B4/4NPPP/2KR3R b - - c9 "1/2-1/2";
Perhaps this can be optimized in the future.
35+ minutes is really long.

If the conversion fails, let me know. Speed up possible.
Conversion was finally done after around 2 hrs and used a max of around 600 MB of memory.
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: FEN - Flipper for Windows

Post by Ferdy »

With selected 1.3 million pos, my new implementation of ending knowledge was busted quickly :).

Code: Select all

C:\chess\python\PositionFlipTest>pft.py d.exe train_1_x.epd

There is problem in Pos 1905 and 1906
pos1: 5, pos2: 381
There is problem in Pos 1945 and 1946
pos1: -6, pos2: -398
There is problem in Pos 2573 and 2574
pos1: -417, pos2: -6
There is problem in Pos 5645 and 5646
pos1: 7, pos2: 466
There is problem in Pos 7449 and 7450
pos1: -7, pos2: -504
User avatar
Matthias Gemuh
Posts: 3245
Joined: Thu Mar 09, 2006 9:10 am

Re: FEN - Flipper for Windows

Post by Matthias Gemuh »

Ferdy wrote: Conversion was finally done after around 2 hrs and used a max of around 600 MB of memory.
I lazily load the EPD files into a listbox before processing it.
That eats memory and limits size of EPD file the tool can handle.
I shall change that and speed things up.
My engine was quite strong till I added knowledge to it.
http://www.chess.hylogic.de