From 52142da3f340058cb5fe3eca2b3693b58dd7b3ae Mon Sep 17 00:00:00 2001 From: Alfred Baumann Date: Tue, 9 Jun 2026 11:16:31 +0200 Subject: [PATCH] einfaches timen vom brute-force --- src/algorithms/bruteforce.py | 8 -------- src/algorithms/profile.py | 24 ++++++++++++++++++++++++ 2 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 src/algorithms/profile.py diff --git a/src/algorithms/bruteforce.py b/src/algorithms/bruteforce.py index 1dc0c77..60338d8 100644 --- a/src/algorithms/bruteforce.py +++ b/src/algorithms/bruteforce.py @@ -15,16 +15,8 @@ class BruteForceSolver: self.game.set_direction(x, y, Direction.UP) def solve(self) -> Generator[None]: - attempts = 0 - required = 4 ** (self.game.width * self.game.height) while not self.game.solved(): yield - attempts += 1 - - print( - f"{attempts:0>{len(str(required))}}/{required} ({attempts / required * 100}%) ", - end="\r", - ) self.game.turn_cw(0, 0) for prev, curr in pairwise( chain( diff --git a/src/algorithms/profile.py b/src/algorithms/profile.py new file mode 100644 index 0000000..7383547 --- /dev/null +++ b/src/algorithms/profile.py @@ -0,0 +1,24 @@ +import time +from multiprocessing import Pool + +from src.algorithms.bruteforce import BruteForceSolver +from src.net import NetGame + + +def test_run() -> float: + game = NetGame(3, 3) + solver = BruteForceSolver(game) + a = time.perf_counter() + for _ in solver.solve(): + pass + b = time.perf_counter() + return b - a + + +if __name__ == "__main__": + total = 0 + with Pool() as p: + processes = [p.apply_async(test_run) for _ in range(100)] + for proc in processes: + total += proc.get() + print(total)