From d77b88ef9f47856dc3278dba24a4ea6dc3b32188 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matt=C3=A9o=20Delabre?= Date: Wed, 27 Jan 2021 19:26:06 +0100 Subject: [PATCH] Write in separate folders --- autogolf/__init__.py | 15 ++++++++--- run.py | 64 ++++++++++++++++++++++---------------------- 2 files changed, 44 insertions(+), 35 deletions(-) diff --git a/autogolf/__init__.py b/autogolf/__init__.py index 429e047..b225068 100644 --- a/autogolf/__init__.py +++ b/autogolf/__init__.py @@ -90,8 +90,8 @@ def find_script( max_length, processes, timeout, + invalid_prefix, out_log, - out_invalid, ) -> List[str]: """ Find scripts that satisfy the given set of test cases. @@ -100,13 +100,19 @@ def find_script( :param max_length: maximum script length to test :param processes: number of parallel processes to spawn :param timeout: maximum allowed time in seconds for each script run + :param invalid_prefix: prefix to the files in which invalid scripts + are to be stored, one file per script length :param out_log: stream to which progress logs are written - :param out_invalid: stream to which invalid scripts are saved :returns: list of matching scripts """ candidates = [] bound_check_script = partial(check_script, pairs, timeout) + out_invalid = [] + + for i in range(max_length + 1): + out_invalid.append(open(invalid_prefix + str(i), "w")) + chars_count = len(chars) num_tasks = int((chars_count ** (max_length + 1) - 1) / (chars_count - 1)) done_tasks = 0 @@ -134,6 +140,9 @@ def find_script( candidates.append(script) if status == Status.Invalid: - print(script, file=out_invalid) + print(script, file=out_invalid[len(script)]) + + for file in out_invalid: + file.close() return candidates diff --git a/run.py b/run.py index d86c05a..4be2b4f 100644 --- a/run.py +++ b/run.py @@ -1,37 +1,37 @@ import autogolf import sys -with open("output/invalid_scripts", "w") as out_invalid: - processes = 8 - timeout = 5 # seconds - out_log = sys.stdout +processes = 8 +timeout = 5 # seconds +invalid_prefix = "output/invalid_scripts_" +out_log = sys.stdout - print("\nSearching for identity") - identity = autogolf.find_script( - ( - ("1", "1"), - ("42", "42"), - ("1984", "1984"), - ), - max_length=3, - processes=processes, - timeout=timeout, - out_log=out_log, - out_invalid=out_invalid - ) - print("Candidates:", identity) +print("\nSearching for identity") +identity = autogolf.find_script( + ( + ("1", "1"), + ("42", "42"), + ("1984", "1984"), + ), + max_length=3, + processes=processes, + timeout=timeout, + invalid_prefix=invalid_prefix, + out_log=out_log, +) +print("Candidates:", identity) - print("\nSearching for successor") - successor = autogolf.find_script( - ( - ("1", "2"), - ("42", "43"), - ("1984", "1985"), - ), - max_length=5, - processes=processes, - timeout=timeout, - out_log=out_log, - out_invalid=out_invalid - ) - print("Candidates:", successor) +print("\nSearching for successor") +successor = autogolf.find_script( + ( + ("1", "2"), + ("42", "43"), + ("1984", "1985"), + ), + max_length=5, + processes=processes, + timeout=timeout, + invalid_prefix=invalid_prefix, + out_log=out_log, +) +print("Candidates:", successor)