Optimization

This commit is contained in:
Lukas Wölfer
2019-04-20 02:17:08 +02:00
parent 7ebc254294
commit 90ab536240
4 changed files with 93 additions and 82 deletions

View File

@@ -2,7 +2,8 @@
import unittest
from .context import shenzhen_solitaire
from shenzhen_solitaire.board import NumberCard, SpecialCard, Board
from shenzhen_solitaire.board import NumberCard, SpecialCard, Board, Position
from shenzhen_solitaire.board_actions import MoveAction, BunkerizeAction, GoalAction, HuaKillAction
from shenzhen_solitaire import board_possibilities
from .boards import my_board
@@ -15,52 +16,57 @@ class ChainTestClass(unittest.TestCase):
self.assertTrue(my_board.check_correct())
sequence = [
0,
4,
0,
1,
0,
0,
8,
0,
1,
3,
0,
9,
0,
2,
0,
1,
1,
1,
2,
0,
2,
1,
6,
12,
0,
0,
1,
0,
0,
17,
11,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0]
for action_index in sequence:
MoveAction(
cards=[
NumberCard(
suit=NumberCard.Suit.Red,
number=7),
NumberCard(
suit=NumberCard.Suit.Green,
number=6)],
source_id=3,
destination_id=7),
BunkerizeAction(
card=NumberCard(
suit=NumberCard.Suit.Red,
number=6),
bunker_id=0,
field_id=2,
to_bunker=True),
GoalAction(
card=NumberCard(
suit=NumberCard.Suit.Green,
number=1),
source_id=2,
source_position=Position.Field),
MoveAction(
cards=[
NumberCard(
suit=NumberCard.Suit.Red,
number=4)],
source_id=2,
destination_id=5),
GoalAction(
card=NumberCard(
suit=NumberCard.Suit.Red,
number=1),
source_id=2,
source_position=Position.Field),
HuaKillAction(source_field_id=2),
MoveAction(
cards=[
NumberCard(
suit=NumberCard.Suit.Black, number=9),
NumberCard(suit=NumberCard.Suit.Red, number=8)],
source_id=6,
destination_id=2),
GoalAction(
card=NumberCard(
suit=NumberCard.Suit.Green, number=2),
source_id=6,
source_position=Position.Field)
]
for action in sequence:
step = list(board_possibilities.possible_actions(my_board))
step[action_index].apply(my_board)
self.assertIn(action, step)
action.apply(my_board)

View File

@@ -5,9 +5,9 @@ from .boards import my_board
def main() -> None:
A = solver.SolitaireSolver(my_board)
B = A.solve()
print(*B, sep='\n')
print(len(B))
for _, B in zip(range(1), A.solve()):
print(*B, sep='\n')
print(len(B))
if __name__ == "__main__":
main()