From bab038a16a7bf6265c8442fa3c184efc7d48badc Mon Sep 17 00:00:00 2001 From: Brian Chu Date: Fri, 24 Dec 2021 23:04:29 -0800 Subject: solution for day 25 --- day25.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 day25.py (limited to 'day25.py') diff --git a/day25.py b/day25.py new file mode 100644 index 0000000..3d1bcb1 --- /dev/null +++ b/day25.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python + +import numpy as np +with open('day25.txt') as data: + to_num = { + '.': 0, + '>': 1, + 'v': 3 + } + cucumbers = np.stack([list(map(lambda x: to_num[x], list(line.strip()))) for line in data]) + +def shift(line, char): + changed = True + shifted = np.roll(line, 1) + diff = line - shifted + if np.count_nonzero(diff == -char) == 0: + changed = False + line[diff == -char] = char + idx = np.nonzero(diff == -char)[0] + idx -= 1 + line[idx] = 0 + return changed + +count = 0 +while True: + count += 1 + changed = False + for row in cucumbers[:]: + changed |= shift(row, 1) + for col in cucumbers.T: + changed |= shift(col, 3) + if not changed: + print(count) + break + -- cgit 1.4.1-2-gfad0