def test_solver_can_find8_path_from_partially_solved_reddit_puzzle3(): # puzzle [7, 6, 4, None, 8, 1, 2, 3, 5] # after moves [7, 6, 4, 1, 8, 3, 5, 8, 3, 4, 1, 3, 4, 7, 2, 5] puzzle = Solver([6, 1, 3, 2, 7, 4, 5, None, 8]) puzzle.solve() print("I solved it in {} moves!\n{}".format(len(puzzle.solution_path), puzzle.solution_path)) assert puzzle.board.solved()
def test_solver_can_handle_reddit_puzzle_1(): # see # https://www.reddit.com/r/dailyprogrammer/comments/62ktmx/20170331_challenge_308_hard_slider_game_puzzle/ # for original puzzles for next 3 tests puzzle = Solver([None, 1, 2, 4, 8, 3, 7, 6, 5]) puzzle.solve() assert puzzle.board.solved() assert puzzle.shortest_solution == [1, 2, 3, 5, 6, 8, 5, 6]
def test_solver_can_solve_a_3x3_when_6_out_of_place(): player = Solver([1, 2, 3, 4, 5, None, 7, 8, 6]) player.solve() assert player.shortest_solution == [6] assert player.board.solved()
def test_2x2_with_1_out_of_place_solved_in_2_moves(): player = Solver([None, 2, 1, 3]) assert player.solve() assert player.shortest_solution == [1, 3]
def test_2x2_with_2_out_of_place_solved_in_1_move(): player = Solver([1, None, 3, 2]) assert player.solve() assert player.shortest_solution == [2]
def test_solver_can_handle_reddit_puzzle_3(): puzzle = Solver([7, 6, 4, None, 8, 1, 2, 3, 5]) puzzle.solve() print("I solved it in {} moves!\n{}".format(len(puzzle.solution_path), puzzle.solution_path)) assert puzzle.board.solved()
def test_solver_can_find_path_from_partially_solved_reddit_puzzle(): puzzle = Solver([6, 4, 1, 7, 8, None, 2, 3, 5]) puzzle.solve() print("I solved it in {} moves!\n{}".format(len(puzzle.solution_path), puzzle.solution_path)) assert puzzle.board.solved()
def test_solver_can_solve_a_game_requiring_rotation(): player = Solver([1, None, 3, 2]) player.solve() assert player.board.solved()
def test_solver_can_handle_reddit_puzzle_2(): puzzle = Solver([1, 8, 2, None, 4, 3, 7, 6, 5]) puzzle.solve() assert puzzle.board.solved() assert puzzle.shortest_solution == [4, 8, 2, 3, 5, 6, 8, 5, 6]
def test_solver_can_solve_a_3x3_requiring_10_moves(): player = Solver([5, 1, 2, 4, 6, 3, None, 7, 8]) player.solve() print("I solved it in {} moves!\n{}".format(len(player.solution_path), player.solution_path)) assert player.board.solved()
def test_solver_can_solve_a_3x3_requiring_5_moves(): player = Solver([1, 2, 3, 4, 6, 8, 7, None, 5]) player.solve() assert player.shortest_solution == [5, 8, 6, 5, 8] assert player.board.solved()
def test_can_solve_a_3x3_with_a_hole_in_the_middle(): player = Solver([1, 2, 3, 4, None, 5, 7, 8, 6]) player.solve() assert player.shortest_solution == [5, 6] assert player.board.solved()
def test_can_solve_a_3x3_requiring_4_moves(): player = Solver([None, 1, 2, 4, 5, 3, 7, 8, 6]) player.solve() assert player.shortest_solution == [1, 2, 3, 6] assert player.board.solved()
def test_can_solve_a_3x3_requiring_2_moves(): player = Solver([1, 2, 3, 4, 5, 6, None, 7, 8]) player.solve() assert player.shortest_solution == [7, 8] assert player.board.solved()
def test_solver_chooses_the_move_that_solves_game(): player = Solver([1, 2, None, 3]) player.solve() assert player.board.solved()