From 9e10061c2bb5eeae84d9a1bfadd625c121f94cb4 Mon Sep 17 00:00:00 2001 From: kwout Date: Sun, 4 Sep 2022 15:38:58 -0400 Subject: [PATCH] solved 4b (in 4a solver), fixed readme --- 2021/day4/4a.py | 34 +++++++++++++++++++++++++--------- README.md | 18 +++++++++--------- 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/2021/day4/4a.py b/2021/day4/4a.py index 0a04111..ed87761 100644 --- a/2021/day4/4a.py +++ b/2021/day4/4a.py @@ -6,6 +6,9 @@ for s in range(2, len(lines),6): earliestWin = len(draw) winBoard = 0 +winsOn = [-1] * len(boards) + +# i should really make an attempt to optimize this for b in range(0, len(boards)): for i in range(0, 5): @@ -13,27 +16,40 @@ for b in range(0, len(boards)): for j in range(0, 5): if boards[b][i][j] not in draw: break - index = draw.index(boards[b][i][j]) - if index > latest: - latest = index + drawIndex = draw.index(boards[b][i][j]) + if drawIndex > latest: + latest = drawIndex if latest < earliestWin and latest != 0: earliestWin = latest - winBoard = int(b) + winBoard = b + if winsOn[b] == -1 or winsOn[b] > latest: + winsOn[b] = latest latest = 0 for j in range(0, 5): if boards[b][j][i] not in draw: break - index = draw.index(boards[b][j][i]) - if index > latest: - latest = index + drawIndex = draw.index(boards[b][j][i]) + if drawIndex > latest: + latest = drawIndex if latest < earliestWin and latest != 0: earliestWin = latest winBoard = b + if winsOn[b] > latest : + winsOn[b] = latest summa = 0 +summaLose = 0 +winBoard = winsOn.index(min(winsOn)) +loseBoard = winsOn.index(max(winsOn)) for row in boards[winBoard]: for n in row: - if n not in draw[:earliestWin+1]: + if n not in draw[:winsOn[winBoard]+1]: summa += n -print(draw[earliestWin]*summa) +for row in boards[loseBoard]: + for n in row: + if n not in draw[:winsOn[loseBoard]+1]: + summaLose += n + +print(draw[winsOn[winBoard]]*summa) +print(draw[winsOn[loseBoard]]*summaLose) diff --git a/README.md b/README.md index 790125e..017ab44 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ my solutions for the [Advent of Code](https://adventofcode.com/) -in progress: +in progress: 2021 (python) -planned: -2022 (swift) -2020 (rust?) -2019 -2018 -2017 -2016 -2015 +planned: +2022 (swift) +2020 (rust?) +2019 +2018 +2017 +2016 +2015