diff options
author | Tomasz Kramkowski <tk@the-tk.com> | 2021-12-04 13:34:59 +0000 |
---|---|---|
committer | Tomasz Kramkowski <tk@the-tk.com> | 2021-12-04 13:34:59 +0000 |
commit | aa6617eda20af145699894fbc588f9bdec1874a5 (patch) | |
tree | 24d268cf07c584d572eca1731e85ebb2544c6b04 | |
parent | 13be876c7a1b497e4b4b765fadc4d832844ad24a (diff) | |
download | aoc2021-aa6617eda20af145699894fbc588f9bdec1874a5.tar.gz aoc2021-aa6617eda20af145699894fbc588f9bdec1874a5.tar.xz aoc2021-aa6617eda20af145699894fbc588f9bdec1874a5.zip |
day 4: replace loops with list.index
-rw-r--r-- | 4.py | 24 |
1 files changed, 12 insertions, 12 deletions
@@ -1,4 +1,4 @@ -from itertools import product, chain +from itertools import chain from utils import open_day class Board: @@ -21,17 +21,17 @@ class Board: self.cells.append(cell) self.has_bingo = False def call(self, num: int): - for y, x in product(range(self.height), range(self.width)): - cell = self.cells[x + self.width * y] - if cell == num: - self.col_hits[x] += 1 - self.row_hits[y] += 1 - self.unmarked_sum -= cell - self.has_bingo = ( - any(hits == self.height for hits in self.col_hits) or - any(hits == self.width for hits in self.row_hits) - ) - return + try: + pos: int = self.cells.index(num) + self.col_hits[pos // self.width] += 1 + self.row_hits[pos // self.height] += 1 + self.unmarked_sum -= num + self.has_bingo = ( + any(hits == self.height for hits in self.col_hits) or + any(hits == self.width for hits in self.row_hits) + ) + except ValueError: + pass @staticmethod def from_string(s: str) -> 'Board': return Board([[int(n) for n in l.split()] for l in s.split('\n')]) |