d6
This commit is contained in:
parent
64c888dc50
commit
0ea4056bb2
47
day06.py
Normal file
47
day06.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
from tools.aoc import AOCDay
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
|
||||||
|
class Day(AOCDay):
|
||||||
|
inputs = [
|
||||||
|
[
|
||||||
|
(5, "input6_test"),
|
||||||
|
(12841, "input6")
|
||||||
|
],
|
||||||
|
[
|
||||||
|
(4, "input6_test"),
|
||||||
|
(8038, "input6")
|
||||||
|
]
|
||||||
|
]
|
||||||
|
|
||||||
|
def distribute(self, p2: bool = False) -> int:
|
||||||
|
bank = self.getInputAsArraySplit("\t", int)
|
||||||
|
count = 0
|
||||||
|
seen = [",".join(map(str, bank))]
|
||||||
|
while True:
|
||||||
|
count += 1
|
||||||
|
i, c = bank.index(max(bank)), max(bank)
|
||||||
|
bank[i] = 0
|
||||||
|
while c > 0:
|
||||||
|
i += 1
|
||||||
|
bank[i%len(bank)] += 1
|
||||||
|
c -= 1
|
||||||
|
seq = ",".join(map(str, bank))
|
||||||
|
if seq in seen:
|
||||||
|
if p2:
|
||||||
|
return count - seen.index(seq)
|
||||||
|
else:
|
||||||
|
return count
|
||||||
|
else:
|
||||||
|
seen.append(seq)
|
||||||
|
|
||||||
|
def part1(self) -> Any:
|
||||||
|
return self.distribute()
|
||||||
|
|
||||||
|
def part2(self) -> Any:
|
||||||
|
return self.distribute(True)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
day = Day(2017, 6)
|
||||||
|
day.run(verbose=True)
|
||||||
1
inputs/input5_test
Normal file
1
inputs/input5_test
Normal file
@ -0,0 +1 @@
|
|||||||
|
0 2 7 0
|
||||||
1
inputs/input6
Normal file
1
inputs/input6
Normal file
@ -0,0 +1 @@
|
|||||||
|
4 10 4 1 8 4 9 14 5 1 14 15 0 15 3 5
|
||||||
1
inputs/input6_test
Normal file
1
inputs/input6_test
Normal file
@ -0,0 +1 @@
|
|||||||
|
0 2 7 0
|
||||||
Loading…
Reference in New Issue
Block a user