summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--src/runchess.hs7
-rw-r--r--test/database/1.in61
-rw-r--r--test/database/1924-wilson-ewing.pgn22
-rw-r--r--test/database/m0.in (renamed from test/database/1956-byrne-fischer.pgn)0
-rw-r--r--test/database/m0.out740
6 files changed, 763 insertions, 69 deletions
diff --git a/.gitignore b/.gitignore
index 3bc1877..9c60a59 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,7 +31,7 @@ cabal.project.local
*.log
*.lot
*.fls
-*.out
+#*.out
*.toc
*.fmt
*.fot
diff --git a/src/runchess.hs b/src/runchess.hs
index 5854e57..d1a86d2 100644
--- a/src/runchess.hs
+++ b/src/runchess.hs
@@ -21,17 +21,14 @@ readPGN = do
Right games -> return games
applyPGN :: PGN -> IO ()
-applyPGN pgn = mapM_ printBoard (seqList [moveSAN m | m <- moves pgn] $ Right defaultBoard)
+applyPGN pgn = printPGN pgn >> mapM_ printBoard (seqList [moveSAN m | m <- moves pgn] $ Right defaultBoard)
where
seqList (f:fs) (Right io) = f io:seqList fs (f io)
seqList _ (Left _) = []
seqList [] _ = []
-printGame :: Either MoveError Board -> PGN -> IO ()
-printGame b pgn = printPGN pgn >> printBoard b
-
printBoard (Left e) = putStrLn $ show e
-printBoard (Right b) = putStr $ show b
+printBoard (Right b) = putStrLn $ show b
printPGN :: PGN -> IO ()
printPGN pgn = do
diff --git a/test/database/1.in b/test/database/1.in
index 49264ce..f8b87ed 100644
--- a/test/database/1.in
+++ b/test/database/1.in
@@ -1,43 +1,22 @@
-[Event "Third Rosenwald Trophy"]
-[Site "New York, NY USA"]
-[Date "1956.10.17"]
-[EventDate "1956.10.07"]
-[Round "8"]
+[Event "CAN ch"]
+[Site "Hamilton"]
+[Date "1924.08.20"]
+[Round "6"]
+[White "Wilson, Stanley B"]
+[Black "Ewing, John M"]
[Result "0-1"]
-[White "Donald Byrne"]
-[Black "Robert James Fischer"]
-[ECO "D92"]
-[WhiteElo "?"]
-[BlackElo "?"]
-[PlyCount "82"]
+[ECO "B01"]
+[PlyCount "118"]
+[EventDate "1924.08.18"]
-1. a8 Nf6 2. c4 g6 3. Nc3 Bg7 4. d4 O-O 5. Bf4 d5 6. Qb3 dxc4
-7. Qxc4 c6 8. e4 Nbd7 9. Rd1 Nb6 10. Qc5 Bg4 11. Bg5 {11. Be2
-followed by 12. O-O would have been more prudent. The bishop
-move played allows a sudden crescendo of tactical points to be
-uncovered by Fischer. -- Wade} Na4 {!} 12. Qa3 {On 12. Nxa4
-Nxe4 and White faces considerable difficulties.} Nxc3 {At
-first glance, one might think that this move only helps White
-create a stronger pawn center; however, Fischer's plan is
-quite the opposite. By eliminating the Knight on c3, it
-becomes possible to sacrifice the exchange via Nxe4 and smash
-White's center, while the King remains trapped in the center.}
-13. bxc3 Nxe4 {The natural continuation of Black's plan.}
-14. Bxe7 Qb6 15. Bc4 Nxc3 16. Bc5 Rfe8+ 17. Kf1 Be6 {!! If
-this is the game of the century, then 17...Be6!! must be the
-counter of the century. Fischer offers his queen in exchange
-for a fierce attack with his minor pieces. Declining this
-offer is not so easy: 18. Bxe6 leads to a 'Philidor Mate'
-(smothered mate) with ...Qb5+ 19. Kg1 Ne2+ 20. Kf1 Ng3+
-21. Kg1 Qf1+ 22. Rxf1 Ne2#. Other ways to decline the queen
-also run into trouble: e.g., 18. Qxc3 Qxc5} 18. Bxb6 Bxc4+
-19. Kg1 Ne2+ 20. Kf1 Nxd4+ {This tactical scenario, where a
-king is repeatedly revealed to checks, is sometimes called a
-"windmill."} 21. Kg1 Ne2+ 22. Kf1 Nc3+ 23. Kg1 axb6 24. Qb4
-Ra4 25. Qxb6 Nxd1 26. h3 Rxa2 27. Kh2 Nxf2 28. Re1 Rxe1
-29. Qd8+ Bf8 30. Nxe1 Bd5 31. Nf3 Ne4 32. Qb8 b5 {Every piece
-and pawn of the black camp is defended. The white queen has
-nothing to do.} 33. h4 h5 34. Ne5 Kg7 35. Kg1 Bc5+ 36. Kf1
-Ng3+ {Now Byrne is hopelessly entangled in Fischer's mating
-net.} 37. Ke1 Bb4+ 38. Kd1 Bb3+ 39. Kc1 Ne2+ 40. Kb1 Nc3+
-41. Kc1 Rc2# 0-1
+1. e4 d5 2. exd5 Qxd5 3. Nc3 Qd8 4. Nf3 c6 5. b3 Nf6 6. Bb2 Bf5 7. Be2 e6 8.
+O-O Bd6 9. Nh4 Bg6 10. h3 Nbd7 11. Rc1 Nd5 12. Nxd5 Qxh4 13. Ne3 O-O 14. d4 Nf6
+15. Bf3 Nd5 16. Nxd5 exd5 17. c4 dxc4 18. bxc4 Be4 19. Bxe4 Qxe4 20. Re1 Qf4
+21. g3 Qf5 22. Kg2 Rfe8 23. Qb3 b6 24. Re3 Rxe3 25. Qxe3 Qe6 26. Qf3 Rc8 27. d5
+Qd7 28. dxc6 Qxc6 29. Qd5 Qxd5+ 30. cxd5 Rxc1 31. Bxc1 f5 32. Kf3 Kf7 33. Ke2
+Ke7 34. Kd3 Bc5 35. Be3 Kd6 36. Kc4 Bxe3 37. fxe3 Ke5 38. a4 a6 39. a5 bxa5 40.
+Kc5 a4 41. d6 Ke6 42. Kc6 a3 43. d7 a2 44. d8=Q a1=Q 45. Qd5+ Ke7 46. Qd7+ Kf8
+47. Qd6+ (47. Qxf5+ Qf6+ 48. Qxf6+ gxf6 49. Kb6) 47... Kf7 48. Qd7+ Kg6 49.
+Qe8+ Kh6 50. Qe6+ g6 51. Kb6 Qa4 52. Qe5 a5 53. Qxa5 Qxa5+ 54. Kxa5 Kg5 55. Kb4
+h5 56. Kc3 h4 57. gxh4+ Kxh4 58. Kd3 Kxh3 59. Ke2 59... Kg2 {(Le Pion 1924)}
+0-1
diff --git a/test/database/1924-wilson-ewing.pgn b/test/database/1924-wilson-ewing.pgn
deleted file mode 100644
index f8b87ed..0000000
--- a/test/database/1924-wilson-ewing.pgn
+++ /dev/null
@@ -1,22 +0,0 @@
-[Event "CAN ch"]
-[Site "Hamilton"]
-[Date "1924.08.20"]
-[Round "6"]
-[White "Wilson, Stanley B"]
-[Black "Ewing, John M"]
-[Result "0-1"]
-[ECO "B01"]
-[PlyCount "118"]
-[EventDate "1924.08.18"]
-
-1. e4 d5 2. exd5 Qxd5 3. Nc3 Qd8 4. Nf3 c6 5. b3 Nf6 6. Bb2 Bf5 7. Be2 e6 8.
-O-O Bd6 9. Nh4 Bg6 10. h3 Nbd7 11. Rc1 Nd5 12. Nxd5 Qxh4 13. Ne3 O-O 14. d4 Nf6
-15. Bf3 Nd5 16. Nxd5 exd5 17. c4 dxc4 18. bxc4 Be4 19. Bxe4 Qxe4 20. Re1 Qf4
-21. g3 Qf5 22. Kg2 Rfe8 23. Qb3 b6 24. Re3 Rxe3 25. Qxe3 Qe6 26. Qf3 Rc8 27. d5
-Qd7 28. dxc6 Qxc6 29. Qd5 Qxd5+ 30. cxd5 Rxc1 31. Bxc1 f5 32. Kf3 Kf7 33. Ke2
-Ke7 34. Kd3 Bc5 35. Be3 Kd6 36. Kc4 Bxe3 37. fxe3 Ke5 38. a4 a6 39. a5 bxa5 40.
-Kc5 a4 41. d6 Ke6 42. Kc6 a3 43. d7 a2 44. d8=Q a1=Q 45. Qd5+ Ke7 46. Qd7+ Kf8
-47. Qd6+ (47. Qxf5+ Qf6+ 48. Qxf6+ gxf6 49. Kb6) 47... Kf7 48. Qd7+ Kg6 49.
-Qe8+ Kh6 50. Qe6+ g6 51. Kb6 Qa4 52. Qe5 a5 53. Qxa5 Qxa5+ 54. Kxa5 Kg5 55. Kb4
-h5 56. Kc3 h4 57. gxh4+ Kxh4 58. Kd3 Kxh3 59. Ke2 59... Kg2 {(Le Pion 1924)}
-0-1
diff --git a/test/database/1956-byrne-fischer.pgn b/test/database/m0.in
index 3fe5a09..3fe5a09 100644
--- a/test/database/1956-byrne-fischer.pgn
+++ b/test/database/m0.in
diff --git a/test/database/m0.out b/test/database/m0.out
new file mode 100644
index 0000000..25a44c9
--- /dev/null
+++ b/test/database/m0.out
@@ -0,0 +1,740 @@
+New York, NY USA 1956.10.17: Donald Byrne vs. Robert James Fischer
+Just BlackWon
+rnbqkbnr
+pppppppp
+........
+........
+........
+.....N..
+PPPPPPPP
+RNBQKB.R
+
+rnbqkb.r
+pppppppp
+.....n..
+........
+........
+.....N..
+PPPPPPPP
+RNBQKB.R
+
+rnbqkb.r
+pppppppp
+.....n..
+........
+..P.....
+.....N..
+PP.PPPPP
+RNBQKB.R
+
+rnbqkb.r
+pppppp.p
+.....np.
+........
+..P.....
+.....N..
+PP.PPPPP
+RNBQKB.R
+
+rnbqkb.r
+pppppp.p
+.....np.
+........
+..P.....
+..N..N..
+PP.PPPPP
+R.BQKB.R
+
+rnbqk..r
+ppppppbp
+.....np.
+........
+..P.....
+..N..N..
+PP.PPPPP
+R.BQKB.R
+
+rnbqk..r
+ppppppbp
+.....np.
+........
+..PP....
+..N..N..
+PP..PPPP
+R.BQKB.R
+
+rnbq.rk.
+ppppppbp
+.....np.
+........
+..PP....
+..N..N..
+PP..PPPP
+R.BQKB.R
+
+rnbq.rk.
+ppppppbp
+.....np.
+........
+..PP.B..
+..N..N..
+PP..PPPP
+R..QKB.R
+
+rnbq.rk.
+ppp.ppbp
+.....np.
+...p....
+..PP.B..
+..N..N..
+PP..PPPP
+R..QKB.R
+
+rnbq.rk.
+ppp.ppbp
+.....np.
+...p....
+..PP.B..
+.QN..N..
+PP..PPPP
+R...KB.R
+
+rnbq.rk.
+ppp.ppbp
+.....np.
+........
+..pP.B..
+.QN..N..
+PP..PPPP
+R...KB.R
+
+rnbq.rk.
+ppp.ppbp
+.....np.
+........
+..QP.B..
+..N..N..
+PP..PPPP
+R...KB.R
+
+rnbq.rk.
+pp..ppbp
+..p..np.
+........
+..QP.B..
+..N..N..
+PP..PPPP
+R...KB.R
+
+rnbq.rk.
+pp..ppbp
+..p..np.
+........
+..QPPB..
+..N..N..
+PP...PPP
+R...KB.R
+
+r.bq.rk.
+pp.nppbp
+..p..np.
+........
+..QPPB..
+..N..N..
+PP...PPP
+R...KB.R
+
+r.bq.rk.
+pp.nppbp
+..p..np.
+........
+..QPPB..
+..N..N..
+PP...PPP
+...RKB.R
+
+r.bq.rk.
+pp..ppbp
+.np..np.
+........
+..QPPB..
+..N..N..
+PP...PPP
+...RKB.R
+
+r.bq.rk.
+pp..ppbp
+.np..np.
+..Q.....
+...PPB..
+..N..N..
+PP...PPP
+...RKB.R
+
+r..q.rk.
+pp..ppbp
+.np..np.
+..Q.....
+...PPBb.
+..N..N..
+PP...PPP
+...RKB.R
+
+r..q.rk.
+pp..ppbp
+.np..np.
+..Q...B.
+...PP.b.
+..N..N..
+PP...PPP
+...RKB.R
+
+r..q.rk.
+pp..ppbp
+..p..np.
+..Q...B.
+n..PP.b.
+..N..N..
+PP...PPP
+...RKB.R
+
+r..q.rk.
+pp..ppbp
+..p..np.
+......B.
+n..PP.b.
+Q.N..N..
+PP...PPP
+...RKB.R
+
+r..q.rk.
+pp..ppbp
+..p..np.
+......B.
+...PP.b.
+Q.n..N..
+PP...PPP
+...RKB.R
+
+r..q.rk.
+pp..ppbp
+..p..np.
+......B.
+...PP.b.
+Q.P..N..
+P....PPP
+...RKB.R
+
+r..q.rk.
+pp..ppbp
+..p...p.
+......B.
+...Pn.b.
+Q.P..N..
+P....PPP
+...RKB.R
+
+r..q.rk.
+pp..Bpbp
+..p...p.
+........
+...Pn.b.
+Q.P..N..
+P....PPP
+...RKB.R
+
+r....rk.
+pp..Bpbp
+.qp...p.
+........
+...Pn.b.
+Q.P..N..
+P....PPP
+...RKB.R
+
+r....rk.
+pp..Bpbp
+.qp...p.
+........
+..BPn.b.
+Q.P..N..
+P....PPP
+...RK..R
+
+r....rk.
+pp..Bpbp
+.qp...p.
+........
+..BP..b.
+Q.n..N..
+P....PPP
+...RK..R
+
+r....rk.
+pp...pbp
+.qp...p.
+..B.....
+..BP..b.
+Q.n..N..
+P....PPP
+...RK..R
+
+r...r.k.
+pp...pbp
+.qp...p.
+..B.....
+..BP..b.
+Q.n..N..
+P....PPP
+...RK..R
+
+r...r.k.
+pp...pbp
+.qp...p.
+..B.....
+..BP..b.
+Q.n..N..
+P....PPP
+...R.K.R
+
+r...r.k.
+pp...pbp
+.qp.b.p.
+..B.....
+..BP....
+Q.n..N..
+P....PPP
+...R.K.R
+
+r...r.k.
+pp...pbp
+.Bp.b.p.
+........
+..BP....
+Q.n..N..
+P....PPP
+...R.K.R
+
+r...r.k.
+pp...pbp
+.Bp...p.
+........
+..bP....
+Q.n..N..
+P....PPP
+...R.K.R
+
+r...r.k.
+pp...pbp
+.Bp...p.
+........
+..bP....
+Q.n..N..
+P....PPP
+...R..KR
+
+r...r.k.
+pp...pbp
+.Bp...p.
+........
+..bP....
+Q....N..
+P...nPPP
+...R..KR
+
+r...r.k.
+pp...pbp
+.Bp...p.
+........
+..bP....
+Q....N..
+P...nPPP
+...R.K.R
+
+r...r.k.
+pp...pbp
+.Bp...p.
+........
+..bn....
+Q....N..
+P....PPP
+...R.K.R
+
+r...r.k.
+pp...pbp
+.Bp...p.
+........
+..bn....
+Q....N..
+P....PPP
+...R..KR
+
+r...r.k.
+pp...pbp
+.Bp...p.
+........
+..b.....
+Q....N..
+P...nPPP
+...R..KR
+
+r...r.k.
+pp...pbp
+.Bp...p.
+........
+..b.....
+Q....N..
+P...nPPP
+...R.K.R
+
+r...r.k.
+pp...pbp
+.Bp...p.
+........
+..b.....
+Q.n..N..
+P....PPP
+...R.K.R
+
+r...r.k.
+pp...pbp
+.Bp...p.
+........
+..b.....
+Q.n..N..
+P....PPP
+...R..KR
+
+r...r.k.
+.p...pbp
+.pp...p.
+........
+..b.....
+Q.n..N..
+P....PPP
+...R..KR
+
+r...r.k.
+.p...pbp
+.pp...p.
+........
+.Qb.....
+..n..N..
+P....PPP
+...R..KR
+
+....r.k.
+.p...pbp
+.pp...p.
+........
+rQb.....
+..n..N..
+P....PPP
+...R..KR
+
+....r.k.
+.p...pbp
+.Qp...p.
+........
+r.b.....
+..n..N..
+P....PPP
+...R..KR
+
+....r.k.
+.p...pbp
+.Qp...p.
+........
+r.b.....
+.....N..
+P....PPP
+...n..KR
+
+....r.k.
+.p...pbp
+.Qp...p.
+........
+r.b.....
+.....N.P
+P....PP.
+...n..KR
+
+....r.k.
+.p...pbp
+.Qp...p.
+........
+..b.....
+.....N.P
+r....PP.
+...n..KR
+
+....r.k.
+.p...pbp
+.Qp...p.
+........
+..b.....
+.....N.P
+r....PPK
+...n...R
+
+....r.k.
+.p...pbp
+.Qp...p.
+........
+..b.....
+.....N.P
+r....nPK
+.......R
+
+....r.k.
+.p...pbp
+.Qp...p.
+........
+..b.....
+.....N.P
+r....nPK
+....R...
+
+......k.
+.p...pbp
+.Qp...p.
+........
+..b.....
+.....N.P
+r....nPK
+....r...
+
+...Q..k.
+.p...pbp
+..p...p.
+........
+..b.....
+.....N.P
+r....nPK
+....r...
+
+...Q.bk.
+.p...p.p
+..p...p.
+........
+..b.....
+.....N.P
+r....nPK
+....r...
+
+...Q.bk.
+.p...p.p
+..p...p.
+........
+..b.....
+.......P
+r....nPK
+....N...
+
+...Q.bk.
+.p...p.p
+..p...p.
+...b....
+........
+.......P
+r....nPK
+....N...
+
+...Q.bk.
+.p...p.p
+..p...p.
+...b....
+........
+.....N.P
+r....nPK
+........
+
+...Q.bk.
+.p...p.p
+..p...p.
+...b....
+....n...
+.....N.P
+r.....PK
+........
+
+.Q...bk.
+.p...p.p
+..p...p.
+...b....
+....n...
+.....N.P
+r.....PK
+........
+
+.Q...bk.
+.....p.p
+..p...p.
+.p.b....
+....n...
+.....N.P
+r.....PK
+........
+
+.Q...bk.
+.....p.p
+..p...p.
+.p.b....
+....n..P
+.....N..
+r.....PK
+........
+
+.Q...bk.
+.....p..
+..p...p.
+.p.b...p
+....n..P
+.....N..
+r.....PK
+........
+
+.Q...bk.
+.....p..
+..p...p.
+.p.bN..p
+....n..P
+........
+r.....PK
+........
+
+.Q...b..
+.....pk.
+..p...p.
+.p.bN..p
+....n..P
+........
+r.....PK
+........
+
+.Q...b..
+.....pk.
+..p...p.
+.p.bN..p
+....n..P
+........
+r.....P.
+......K.
+
+.Q......
+.....pk.
+..p...p.
+.pbbN..p
+....n..P
+........
+r.....P.
+......K.
+
+.Q......
+.....pk.
+..p...p.
+.pbbN..p
+....n..P
+........
+r.....P.
+.....K..
+
+.Q......
+.....pk.
+..p...p.
+.pbbN..p
+.......P
+......n.
+r.....P.
+.....K..
+
+.Q......
+.....pk.
+..p...p.
+.pbbN..p
+.......P
+......n.
+r.....P.
+....K...
+
+.Q......
+.....pk.
+..p...p.
+.p.bN..p
+.b.....P
+......n.
+r.....P.
+....K...
+
+.Q......
+.....pk.
+..p...p.
+.p.bN..p
+.b.....P
+......n.
+r.....P.
+...K....
+
+.Q......
+.....pk.
+..p...p.
+.p..N..p
+.b.....P
+.b....n.
+r.....P.
+...K....
+
+.Q......
+.....pk.
+..p...p.
+.p..N..p
+.b.....P
+.b....n.
+r.....P.
+..K.....
+
+.Q......
+.....pk.
+..p...p.
+.p..N..p
+.b.....P
+.b......
+r...n.P.
+..K.....
+
+.Q......
+.....pk.
+..p...p.
+.p..N..p
+.b.....P
+.b......
+r...n.P.
+.K......
+
+.Q......
+.....pk.
+..p...p.
+.p..N..p
+.b.....P
+.bn.....
+r.....P.
+.K......
+
+.Q......
+.....pk.
+..p...p.
+.p..N..p
+.b.....P
+.bn.....
+r.....P.
+..K.....
+
+.Q......
+.....pk.
+..p...p.
+.p..N..p
+.b.....P
+.bn.....
+..r...P.
+..K.....
+