|
5 | 5 | romania_problem = GraphProblem('Arad', 'Bucharest', romania_map)
|
6 | 6 | vacumm_world = GraphProblemStochastic('State_1', ['State_7', 'State_8'], vacumm_world)
|
7 | 7 | LRTA_problem = OnlineSearchProblem('State_3', 'State_5', one_dim_state_space)
|
| 8 | +eight_puzzle = EightPuzzle((1, 2, 3, 4, 5, 7, 8, 6, 0)) |
| 9 | +eight_puzzle2 = EightPuzzle((1, 0, 6, 8, 7, 5, 4, 2), (0, 1, 2, 3, 4, 5, 6, 7, 8)) |
8 | 10 |
|
9 | 11 | def test_find_min_edge():
|
10 | 12 | assert romania_problem.find_min_edge() == 70
|
@@ -64,6 +66,63 @@ def test_bidirectional_search():
|
64 | 66 |
|
65 | 67 | def test_astar_search():
|
66 | 68 | assert astar_search(romania_problem).solution() == ['Sibiu', 'Rimnicu', 'Pitesti', 'Bucharest']
|
| 69 | + assert astar_search(eight_puzzle).solution() == ['LEFT', 'LEFT', 'UP', 'RIGHT', 'RIGHT', 'DOWN', 'LEFT', 'UP', 'LEFT', 'DOWN', 'RIGHT', 'RIGHT'] |
| 70 | + assert astar_search(EightPuzzle((1, 2, 3, 4, 5, 6, 0, 7, 8))).solution() == ['RIGHT', 'RIGHT'] |
| 71 | + |
| 72 | + |
| 73 | +def test_find_blank_square(): |
| 74 | + assert eight_puzzle.find_blank_square((0, 1, 2, 3, 4, 5, 6, 7, 8)) == 0 |
| 75 | + assert eight_puzzle.find_blank_square((6, 3, 5, 1, 8, 4, 2, 0, 7)) == 7 |
| 76 | + assert eight_puzzle.find_blank_square((3, 4, 1, 7, 6, 0, 2, 8, 5)) == 5 |
| 77 | + assert eight_puzzle.find_blank_square((1, 8, 4, 7, 2, 6, 3, 0, 5)) == 7 |
| 78 | + assert eight_puzzle.find_blank_square((4, 8, 1, 6, 0, 2, 3, 5, 7)) == 4 |
| 79 | + assert eight_puzzle.find_blank_square((1, 0, 6, 8, 7, 5, 4, 2, 3)) == 1 |
| 80 | + assert eight_puzzle.find_blank_square((1, 2, 3, 4, 5, 6, 7, 8, 0)) == 8 |
| 81 | + |
| 82 | + |
| 83 | +def test_actions(): |
| 84 | + assert eight_puzzle.actions((0, 1, 2, 3, 4, 5, 6, 7, 8)) == ['DOWN', 'RIGHT'] |
| 85 | + assert eight_puzzle.actions((6, 3, 5, 1, 8, 4, 2, 0, 7)) == ['UP', 'LEFT', 'RIGHT'] |
| 86 | + assert eight_puzzle.actions((3, 4, 1, 7, 6, 0, 2, 8, 5)) == ['UP', 'DOWN', 'LEFT'] |
| 87 | + assert eight_puzzle.actions((1, 8, 4, 7, 2, 6, 3, 0, 5)) == ['UP', 'LEFT', 'RIGHT'] |
| 88 | + assert eight_puzzle.actions((4, 8, 1, 6, 0, 2, 3, 5, 7)) == ['UP', 'DOWN', 'LEFT', 'RIGHT'] |
| 89 | + assert eight_puzzle.actions((1, 0, 6, 8, 7, 5, 4, 2, 3)) == ['DOWN', 'LEFT', 'RIGHT'] |
| 90 | + assert eight_puzzle.actions((1, 2, 3, 4, 5, 6, 7, 8, 0)) == ['UP', 'LEFT'] |
| 91 | + |
| 92 | + |
| 93 | +def test_result(): |
| 94 | + assert eight_puzzle.result((0, 1, 2, 3, 4, 5, 6, 7, 8), 'DOWN') == (3, 1, 2, 0, 4, 5, 6, 7, 8) |
| 95 | + assert eight_puzzle.result((6, 3, 5, 1, 8, 4, 2, 0, 7), 'LEFT') == (6, 3, 5, 1, 8, 4, 0, 2, 7) |
| 96 | + assert eight_puzzle.result((3, 4, 1, 7, 6, 0, 2, 8, 5), 'UP') == (3, 4, 0, 7, 6, 1, 2, 8, 5) |
| 97 | + assert eight_puzzle.result((1, 8, 4, 7, 2, 6, 3, 0, 5), 'RIGHT') == (1, 8, 4, 7, 2, 6, 3, 5, 0) |
| 98 | + assert eight_puzzle.result((4, 8, 1, 6, 0, 2, 3, 5, 7), 'LEFT') == (4, 8, 1, 0, 6, 2, 3, 5, 7) |
| 99 | + assert eight_puzzle.result((1, 0, 6, 8, 7, 5, 4, 2, 3), 'DOWN') == (1, 7, 6, 8, 0, 5, 4, 2, 3) |
| 100 | + assert eight_puzzle.result((1, 2, 3, 4, 5, 6, 7, 8, 0), 'UP') == (1, 2, 3, 4, 5, 0, 7, 8, 6) |
| 101 | + assert eight_puzzle.result((4, 8, 1, 6, 0, 2, 3, 5, 7), 'RIGHT') == (4, 8, 1, 6, 2, 0, 3, 5, 7) |
| 102 | + |
| 103 | + |
| 104 | +def test_goal_test(): |
| 105 | + assert eight_puzzle.goal_test((0, 1, 2, 3, 4, 5, 6, 7, 8)) == False |
| 106 | + assert eight_puzzle.goal_test((6, 3, 5, 1, 8, 4, 2, 0, 7)) == False |
| 107 | + assert eight_puzzle.goal_test((3, 4, 1, 7, 6, 0, 2, 8, 5)) == False |
| 108 | + assert eight_puzzle.goal_test((1, 2, 3, 4, 5, 6, 7, 8, 0)) == True |
| 109 | + assert eight_puzzle2.goal_test((4, 8, 1, 6, 0, 2, 3, 5, 7)) == False |
| 110 | + assert eight_puzzle2.goal_test((3, 4, 1, 7, 6, 0, 2, 8, 5)) == False |
| 111 | + assert eight_puzzle2.goal_test((1, 2, 3, 4, 5, 6, 7, 8, 0)) == False |
| 112 | + assert eight_puzzle2.goal_test((0, 1, 2, 3, 4, 5, 6, 7, 8)) == True |
| 113 | + |
| 114 | + |
| 115 | +def test_check_solvability(): |
| 116 | + assert eight_puzzle.check_solvability((0, 1, 2, 3, 4, 5, 6, 7, 8)) == True |
| 117 | + assert eight_puzzle.check_solvability((6, 3, 5, 1, 8, 4, 2, 0, 7)) == True |
| 118 | + assert eight_puzzle.check_solvability((3, 4, 1, 7, 6, 0, 2, 8, 5)) == True |
| 119 | + assert eight_puzzle.check_solvability((1, 8, 4, 7, 2, 6, 3, 0, 5)) == True |
| 120 | + assert eight_puzzle.check_solvability((4, 8, 1, 6, 0, 2, 3, 5, 7)) == True |
| 121 | + assert eight_puzzle.check_solvability((1, 0, 6, 8, 7, 5, 4, 2, 3)) == True |
| 122 | + assert eight_puzzle.check_solvability((1, 2, 3, 4, 5, 6, 7, 8, 0)) == True |
| 123 | + assert eight_puzzle.check_solvability((1, 2, 3, 4, 5, 6, 8, 7, 0)) == False |
| 124 | + assert eight_puzzle.check_solvability((1, 0, 3, 2, 4, 5, 6, 7, 8)) == False |
| 125 | + assert eight_puzzle.check_solvability((7, 0, 2, 8, 5, 3, 6, 4, 1)) == False |
67 | 126 |
|
68 | 127 |
|
69 | 128 | def test_recursive_best_first_search():
|
|
0 commit comments