Day 6
This commit is contained in:
56
6.py
56
6.py
@@ -0,0 +1,56 @@
|
|||||||
|
from argparse import ArgumentParser
|
||||||
|
from collections import defaultdict
|
||||||
|
|
||||||
|
NEW_FISH = 8
|
||||||
|
RELOAD_FISH = 6
|
||||||
|
|
||||||
|
|
||||||
|
def simulate_slow(days):
|
||||||
|
fishes = [int(x) for x in input().split(",")]
|
||||||
|
|
||||||
|
for _ in range(days):
|
||||||
|
new_fish = []
|
||||||
|
for i, _ in enumerate(fishes):
|
||||||
|
fishes[i] -= 1
|
||||||
|
if fishes[i] == -1:
|
||||||
|
fishes[i] = RELOAD_FISH
|
||||||
|
new_fish.append(NEW_FISH)
|
||||||
|
fishes += new_fish
|
||||||
|
|
||||||
|
return len(fishes)
|
||||||
|
|
||||||
|
|
||||||
|
def simulate(days):
|
||||||
|
fishes_list = [int(x) for x in input().split(",")]
|
||||||
|
fishes: defaultdict[int, int] = defaultdict(int)
|
||||||
|
|
||||||
|
for fish in fishes_list:
|
||||||
|
fishes[fish] += 1
|
||||||
|
|
||||||
|
for _ in range(days):
|
||||||
|
next = defaultdict(int)
|
||||||
|
|
||||||
|
for timer, n in fishes.items():
|
||||||
|
if timer == 0:
|
||||||
|
next[NEW_FISH] += n
|
||||||
|
next[RELOAD_FISH] += n
|
||||||
|
else:
|
||||||
|
next[timer - 1] += n
|
||||||
|
|
||||||
|
fishes = next
|
||||||
|
|
||||||
|
return sum(fishes.values())
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = ArgumentParser()
|
||||||
|
parser.add_argument("days", nargs="?", default=80, type=int)
|
||||||
|
parser.add_argument("--slow", "-s", action="store_true")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
if args.slow:
|
||||||
|
if args.days > 80:
|
||||||
|
print("Are you sure?")
|
||||||
|
print(simulate_slow(args.days))
|
||||||
|
else:
|
||||||
|
print(simulate(args.days))
|
||||||
|
|||||||
Reference in New Issue
Block a user