diff --git a/Day19/ts/solution.ts b/Day19/ts/solution.ts index 909a58b..8b51648 100644 --- a/Day19/ts/solution.ts +++ b/Day19/ts/solution.ts @@ -7,7 +7,7 @@ type Workflows = { [key: string]: [WorkflowRules, string] }; function parseInput(filePath: string): Workflows { const lines = fs.readFileSync(filePath, 'utf-8').split('\n').filter(line => line); - let workflows: Workflows = {}; + const workflows: Workflows = {}; let currentWorkflow: string[] = []; for (const line of lines) { diff --git a/Day20/python/solution1.py b/Day20/python/solution1.py index 779dc23..a56d94e 100644 --- a/Day20/python/solution1.py +++ b/Day20/python/solution1.py @@ -1,5 +1,6 @@ from collections import deque + def process_modules(filename, debug=False): """ Reads the module configuration from a file, initializes the modules, and simulates the pulse propagation. @@ -40,7 +41,9 @@ def process_modules(filename, debug=False): name, target, pulse = queue.popleft() if debug: - print(f"Iteration {iteration}: Processing {target}, Pulse: {'High' if pulse else 'Low'}") + print( + f"Iteration {iteration}: Processing {target}, Pulse: {'High' if pulse else 'Low'}" + ) if target not in modules: continue @@ -65,19 +68,25 @@ def process_modules(filename, debug=False): low += 1 if debug: - print(f"Iteration {iteration}: {target} -> {'High' if new_pulse else 'Low'} to {module[2]}") + print( + f"Iteration {iteration}: {target} -> {'High' if new_pulse else 'Low'} to {module[2]}" + ) return low * high + def test(): """ Runs the process_modules function with the test input and checks if it meets the expected outcome. """ expected_result = 11687500 # Replace with the expected result of the test input test_result = process_modules("../test.txt", debug=True) - assert test_result == expected_result, f"Test failed: Expected {expected_result}, got {test_result}" + assert ( + test_result == expected_result + ), f"Test failed: Expected {expected_result}, got {test_result}" print(f"Test passed with result: {test_result}") + def main(): """ Main function to run the test and then process the actual puzzle input. @@ -94,5 +103,6 @@ def main(): except Exception as e: print(f"An error occurred: {e}") + if __name__ == "__main__": main() diff --git a/Day21/python/solution1.py b/Day21/python/solution1.py index 4326c11..fa0498e 100644 --- a/Day21/python/solution1.py +++ b/Day21/python/solution1.py @@ -1,14 +1,15 @@ from collections import deque + def read_grid(file_path): """Reads the grid from a file and returns it along with the starting position.""" - with open(file_path, 'r') as file: + with open(file_path, "r") as file: grid = [list(line.strip()) for line in file.readlines()] start = None for i, row in enumerate(grid): for j, cell in enumerate(row): - if cell == 'S': + if cell == "S": start = (i, j) break if start: @@ -18,6 +19,7 @@ def read_grid(file_path): print(f"Grid loaded from {file_path}. Start position: {start}") return grid, start + def bfs(grid, start): """Performs BFS on the grid to track the minimum steps to each plot.""" printf("Start BFS") @@ -33,18 +35,25 @@ def bfs(grid, start): else: for dx, dy in [(1, 0), (-1, 0), (0, 1), (0, -1)]: nx, ny = x + dx, y + dy - if 0 <= nx < len(grid) and 0 <= ny < len(grid[0]) and grid[nx][ny] == '.' and (nx, ny) not in distances: + if ( + 0 <= nx < len(grid) + and 0 <= ny < len(grid[0]) + and grid[nx][ny] == "." + and (nx, ny) not in distances + ): queue.append((nx, ny, step + 1)) print(f"BFS completed. Number of plots visited: {len(distances)}") return distances + def count_reachable_plots(distances, steps): """Counts the number of plots reachable in exactly the given number of steps.""" count = sum(1 for d in distances.values() if d == steps) print(f"Number of plots reachable in exactly {steps} steps: {count}") return count + def run_test(): """Runs the algorithm with the test data and asserts the result.""" print("Running test...") @@ -54,6 +63,7 @@ def run_test(): assert test_result == 16, f"Test failed: Expected 16, got {test_result}" print("Test passed successfully.") + def main(): """Main function to run the algorithm with the actual puzzle data.""" try: @@ -69,5 +79,6 @@ def main(): except Exception as e: print(f"Unexpected error: {e}") + if __name__ == "__main__": main()