コード例 #1
0
 def test_lance_moves(self):
     sfen = "4p4/4L2P1/5L2l/6l2/9/7L1/5l2L/4l1p2/4P4 b - 1"
     # answer keys
     sente_moves = [
         "L16(17)", "L15(17)", "L14(17)", "L13(17)", "L13(17)+", "L25(26)",
         "L24(26)", "L23(26)", "L23(26)+", "L42(43)", "L42(43)+",
         "L41(43)+", "L51(52)+"
     ]
     gote_moves = [
         "L14(13)", "L15(13)", "L16(13)", "L17(13)", "L17(13)+", "L35(34)",
         "L36(34)", "L37(34)", "L37(34)+", "L48(47)", "L48(47)+",
         "L49(47)+", "L59(58)+"
     ]
     self.position.from_sfen(sfen)
     mvlist_sente = rules.generate_valid_moves(pos=self.position,
                                               side=Side.SENTE,
                                               ktype=KomaType.KY)
     mvlist_gote = rules.generate_valid_moves(pos=self.position,
                                              side=Side.GOTE,
                                              ktype=KomaType.KY)
     mvset_sente = set((move.to_latin() for move in mvlist_sente))
     mvset_gote = set((move.to_latin() for move in mvlist_gote))
     # check answers
     self.assertEqual(mvset_sente, set(sente_moves))
     self.assertEqual(mvset_gote, set(gote_moves))
コード例 #2
0
 def test_silver_moves(self):
     sfen = "8S/7s1/7S1/6S2/9/6s2/7s1/7S1/8s b - 1"
     # answer keys
     sente_moves = [
         "S22(11)", "S22(11)+", "S22(23)", "S22(23)+", "S12(23)",
         "S12(23)+", "S32(23)", "S32(23)+", "S14(23)", "S14(23)+",
         "S33(34)", "S33(34)+", "S43(34)", "S43(34)+", "S25(34)", "S45(34)",
         "S17(28)", "S27(28)", "S37(28)", "S19(28)", "S39(28)"
     ]
     gote_moves = [
         "S28(19)", "S28(19)+", "S28(27)", "S28(27)+", "S18(27)",
         "S18(27)+", "S38(27)", "S38(27)+", "S16(27)", "S16(27)+",
         "S37(36)", "S37(36)+", "S47(36)", "S47(36)+", "S25(36)", "S45(36)",
         "S13(22)", "S23(22)", "S33(22)", "S11(22)", "S31(22)"
     ]
     self.position.from_sfen(sfen)
     mvlist_sente = rules.generate_valid_moves(pos=self.position,
                                               side=Side.SENTE,
                                               ktype=KomaType.GI)
     mvlist_gote = rules.generate_valid_moves(pos=self.position,
                                              side=Side.GOTE,
                                              ktype=KomaType.GI)
     mvset_sente = set((move.to_latin() for move in mvlist_sente))
     mvset_gote = set((move.to_latin() for move in mvlist_gote))
     # check answers
     self.assertEqual(mvset_sente, set(sente_moves))
     self.assertEqual(mvset_gote, set(gote_moves))
コード例 #3
0
 def test_rook_moves(self):
     sfen = "9/3p5/9/9/2Pr1Rp2/9/9/5P3/9 b - 1"
     # answer keys
     sente_moves = [
         "R41(45)", "R41(45)+", "R42(45)", "R42(45)+", "R43(45)",
         "R43(45)+", "R44(45)", "R55(45)", "R65(45)", "R35(45)", "R46(45)",
         "R47(45)"
     ]
     gote_moves = [
         "R69(65)", "R69(65)+", "R68(65)", "R68(65)+", "R67(65)",
         "R67(65)+", "R66(65)", "R55(65)", "R45(65)", "R75(65)", "R64(65)",
         "R63(65)"
     ]
     self.position.from_sfen(sfen)
     mvlist_sente = rules.generate_valid_moves(pos=self.position,
                                               side=Side.SENTE,
                                               ktype=KomaType.HI)
     mvlist_gote = rules.generate_valid_moves(pos=self.position,
                                              side=Side.GOTE,
                                              ktype=KomaType.HI)
     mvset_sente = set((move.to_latin() for move in mvlist_sente))
     mvset_gote = set((move.to_latin() for move in mvlist_gote))
     # check answers
     self.assertEqual(mvset_sente, set(sente_moves))
     self.assertEqual(mvset_gote, set(gote_moves))
コード例 #4
0
 def test_bishop_moves(self):
     sfen = "9/7P1/9/5B3/9/3b5/9/1p7/9 b - 1"
     # answer keys
     sente_moves = [
         "B71(44)", "B71(44)+", "B62(44)", "B62(44)+", "B53(44)",
         "B53(44)+", "B33(44)", "B33(44)+", "B55(44)", "B66(44)", "B35(44)",
         "B26(44)", "B17(44)"
     ]
     gote_moves = [
         "B39(66)", "B39(66)+", "B48(66)", "B48(66)+", "B57(66)",
         "B57(66)+", "B77(66)", "B77(66)+", "B55(66)", "B44(66)", "B75(66)",
         "B84(66)", "B93(66)"
     ]
     self.position.from_sfen(sfen)
     mvlist_sente = rules.generate_valid_moves(pos=self.position,
                                               side=Side.SENTE,
                                               ktype=KomaType.KA)
     mvlist_gote = rules.generate_valid_moves(pos=self.position,
                                              side=Side.GOTE,
                                              ktype=KomaType.KA)
     mvset_sente = set((move.to_latin() for move in mvlist_sente))
     mvset_gote = set((move.to_latin() for move in mvlist_gote))
     # check answers
     self.assertEqual(mvset_sente, set(sente_moves))
     self.assertEqual(mvset_gote, set(gote_moves))
コード例 #5
0
 def test_gold_moves(self):
     sfen = "8G/7G1/7g1/9/9/9/7G1/7g1/8g b - 1"
     # answer keys
     sente_moves = [
         "G12(11)", "G21(11)", "G31(22)", "G21(22)", "G32(22)", "G12(22)",
         "G23(22)", "G36(27)", "G26(27)", "G16(27)", "G37(27)", "G17(27)",
         "G28(27)"
     ]
     gote_moves = [
         "G18(19)", "G29(19)", "G39(28)", "G29(28)", "G38(28)", "G18(28)",
         "G27(28)", "G34(23)", "G24(23)", "G14(23)", "G33(23)", "G13(23)",
         "G22(23)"
     ]
     self.position.from_sfen(sfen)
     mvlist_sente = rules.generate_valid_moves(pos=self.position,
                                               side=Side.SENTE,
                                               ktype=KomaType.KI)
     mvlist_gote = rules.generate_valid_moves(pos=self.position,
                                              side=Side.GOTE,
                                              ktype=KomaType.KI)
     mvset_sente = set((move.to_latin() for move in mvlist_sente))
     mvset_gote = set((move.to_latin() for move in mvlist_gote))
     # check answers
     self.assertEqual(mvset_sente, set(sente_moves))
     self.assertEqual(mvset_gote, set(gote_moves))
コード例 #6
0
 def test_knight_moves(self):
     sfen = "N7N/4N1n2/9/5N3/n2n1N2N/3n5/9/2N1n4/n7n b - 1"
     # answer keys
     sente_moves = [
         "N23(15)", "N23(15)+", "N32(44)+", "N53(45)", "N53(45)+",
         "N33(45)", "N33(45)+", "N66(78)", "N86(78)"
     ]
     gote_moves = [
         "N24(32)", "N44(32)", "N57(65)", "N57(65)+", "N77(65)", "N77(65)+",
         "N78(66)+", "N87(95)", "N87(95)+"
     ]
     self.position.from_sfen(sfen)
     mvlist_sente = rules.generate_valid_moves(pos=self.position,
                                               side=Side.SENTE,
                                               ktype=KomaType.KE)
     mvlist_gote = rules.generate_valid_moves(pos=self.position,
                                              side=Side.GOTE,
                                              ktype=KomaType.KE)
     mvset_sente = set((move.to_latin() for move in mvlist_sente))
     mvset_gote = set((move.to_latin() for move in mvlist_gote))
     # check answers
     self.assertEqual(mvset_sente, set(sente_moves))
     self.assertEqual(mvset_gote, set(gote_moves))
コード例 #7
0
 def test_pawn_moves(self):
     sfen = "p1p4P1/2P5P/3p3P1/3P4P/9/p4p3/1p3P3/p5p2/1p4P1P b - 1"
     # answer keys
     sente_moves = [
         "P18(19)", "P13(14)", "P13(14)+", "P11(12)+", "P22(23)",
         "P22(23)+", "P38(39)", "P46(47)", "P63(64)", "P63(64)+", "P71(72)+"
     ]
     gote_moves = [
         "P39(38)+", "P47(46)", "P47(46)+", "P64(63)", "P72(71)", "P88(87)",
         "P88(87)+", "P92(91)", "P97(96)", "P97(96)+", "P99(98)+"
     ]
     self.position.from_sfen(sfen)
     mvlist_sente = rules.generate_valid_moves(pos=self.position,
                                               side=Side.SENTE,
                                               ktype=KomaType.FU)
     mvlist_gote = rules.generate_valid_moves(pos=self.position,
                                              side=Side.GOTE,
                                              ktype=KomaType.FU)
     mvset_sente = set((move.to_latin() for move in mvlist_sente))
     mvset_gote = set((move.to_latin() for move in mvlist_gote))
     # check answers
     self.assertEqual(mvset_sente, set(sente_moves))
     self.assertEqual(mvset_gote, set(gote_moves))