diff options
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | src/runchess.hs | 7 | ||||
-rw-r--r-- | test/database/1.in | 61 | ||||
-rw-r--r-- | test/database/1924-wilson-ewing.pgn | 22 | ||||
-rw-r--r-- | test/database/m0.in (renamed from test/database/1956-byrne-fischer.pgn) | 0 | ||||
-rw-r--r-- | test/database/m0.out | 740 |
6 files changed, 763 insertions, 69 deletions
@@ -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..... + |