diff options
-rwxr-xr-x | solver.py | 27 | ||||
-rw-r--r-- | tests_solver/test_solver.py | 33 |
2 files changed, 48 insertions, 12 deletions
@@ -354,6 +354,20 @@ def print_score_over(node, target_score): print_score_over(child, target_score) +def search_all_solution(args, kanagrid, target_score, max_actions): + grids = {} + generate_all_possible_grids(kanagrid, grids=grids, max_actions=max_actions) + for grid in grids.values(): + grid.update_score() + if grid.score >= target_score and grid.myst_count == 0: + print("="*80) + if args['-p']: + print(repr_grid_with_parents(grid)) + else: + print(grid) + return grid + + def main(): args = docopt.docopt(__doc__) @@ -371,18 +385,7 @@ def main(): if args['--print']: return - del input_dict - - grids = {} - generate_all_possible_grids(kanagrid, grids=grids, max_actions=max_actions) - for grid in grids.values(): - grid.update_score() - if grid.score >= target_score and grid.myst_count == 0: - print("="*80) - if args['-p']: - print(repr_grid_with_parents(grid)) - else: - print(grid) + search_all_solution(args, kanagrid, target_score, max_actions) if __name__ == '__main__': diff --git a/tests_solver/test_solver.py b/tests_solver/test_solver.py index 1f178cc..1d441ff 100644 --- a/tests_solver/test_solver.py +++ b/tests_solver/test_solver.py @@ -195,3 +195,36 @@ def test_kana_arrow_swap(): else: assert kanagrid_test is None + +def test_solver_load_and_type_1(): + # ./solver.py tests_solver/level_test_type.yaml + + kanagrid_orig = KanaGrid((6, 2), [ + Kana("ar_r", "sa"), Kana("norm" ), Kana("norm", "so"), Kana("rock", "se"), Kana("myst", "ka"), Kana("ar_d", "na"), + Kana("ar_u", "su"), Kana("ar_l", "nu"), Kana("void" ), Kana("void" ), Kana("froz" ), Kana("froz", "ke"), + ]) + + expected_grid = KanaGrid((6, 2), [ + Kana("ar_u", "su"), Kana("ar_r", "sa"), Kana("norm", "so"), Kana("rock", "se"), Kana("froz", "ke"), Kana("norm", "ka"), + Kana("ar_l", "nu"), Kana("norm" ), Kana("void" ), Kana("void" ), Kana("froz" ), Kana("ar_d", "na"), + ], action_count=6, score=8) + + type_yaml_level_file = 'tests_solver/level_test_type.yaml' + with open(type_yaml_level_file, encoding='utf8') as stream: + input_dict = yaml.safe_load(stream) + loaded_grid = KanaGrid.load(input_dict) + target_score = input_dict['target_score'] + max_actions = input_dict['max_actions'] + + mock_args = {'--help': False, + '--print': False, + '-p': False, + 'YAML_GRID': type_yaml_level_file, + } + + assert loaded_grid == kanagrid_orig + + kanagrid_new = search_all_solution(mock_args, loaded_grid, target_score, max_actions) + + assert kanagrid_new == expected_grid + |