diff options
author | Thomas Voss <thomasvoss@live.com> | 2021-12-02 09:58:43 +0100 |
---|---|---|
committer | Thomas Voss <thomasvoss@live.com> | 2021-12-02 09:58:43 +0100 |
commit | 7fb03d975972887cdc42259bd849e9b808f72b7a (patch) | |
tree | 3aac16716a2be5b824ef6c77eba47034e531558e /2015/18/puzzle-2.py | |
parent | 641aa833290fb4ba76db692aa7346e6b136e8e34 (diff) |
Merge both solutions into one file
Diffstat (limited to '2015/18/puzzle-2.py')
-rwxr-xr-x | 2015/18/puzzle-2.py | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/2015/18/puzzle-2.py b/2015/18/puzzle-2.py deleted file mode 100755 index b57edb9..0000000 --- a/2015/18/puzzle-2.py +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env python3 - - -def neighbours(data: list[list[str]], x: int, y: int) -> int: - acc = 0 - - for x1, y1 in [ - (x - 1, y - 1), - (x - 1, y), - (x - 1, y + 1), - (x, y - 1), - (x, y + 1), - (x + 1, y - 1), - (x + 1, y), - (x + 1, y + 1), - ]: - try: - if x1 >= 0 and y1 >= 0 and data[x1][y1] == "#": - acc += 1 - except IndexError: - pass - - return acc - - -def simulate(data: list[list[str]]) -> list[list[str]]: - ndata = [["." for i in range(100)] for j in range(100)] - - for i in range(100): - for j in range(100): - if ( - ((i, j) in [(0, 0), (0, 99), (99, 0), (99, 99)]) - or (data[i][j] == "#" and neighbours(data, i, j) in [2, 3]) - or (data[i][j] == "." and neighbours(data, i, j) == 3) - ): - ndata[i][j] = "#" - - return ndata - - -def main() -> None: - with open("input", "r", encoding="utf-8") as f: - data = [list(l.strip()) for l in f.readlines()] - data[0][0], data[0][99], data[99][0], data[99][99] = "#", "#", "#", "#" - - for i in range(100): - data = simulate(data) - - print(sum(data[i].count("#") for i in range(100))) - - -if __name__ == "__main__": - main() |