[py] Port 2018_08

This commit is contained in:
Joscha 2022-12-06 15:32:15 +01:00
parent 1e2919b1a1
commit 26433b8618
4 changed files with 53 additions and 55 deletions

View file

@ -2,7 +2,7 @@ import sys
import argparse
from pathlib import Path
from .y2018 import d01, d02, d03, d04, d05, d06, d07
from .y2018 import d01, d02, d03, d04, d05, d06, d07, d08
from .y2020 import d10
from .y2021 import d14
from .y2022 import d01, d02, d03, d04, d05, d06
@ -15,6 +15,7 @@ DAYS = {
"2018_05": y2018.d05.solve,
"2018_06": y2018.d06.solve,
"2018_07": y2018.d07.solve,
"2018_08": y2018.d08.solve,
"2020_10": y2020.d10.solve,
"2021_14": y2021.d14.solve,
"2022_01": y2022.d01.solve,

51
py/aoc/y2018/d08.py Normal file
View file

@ -0,0 +1,51 @@
# PART 1
def load_stream(inputstr):
# Too lazy to do this properly
return list(reversed(list(map(int, inputstr[:-1].split(" ")))))
def parse_node(stream):
amt_nodes = stream.pop()
amt_meta = stream.pop()
nodes = []
for _ in range(amt_nodes):
nodes.append(parse_node(stream))
meta = []
for _ in range(amt_meta):
meta.append(stream.pop())
return (nodes, meta)
def sum_of_meta(node):
nodes, meta = node
return sum(meta) + sum(map(sum_of_meta, nodes))
# PART 2
def value_of(node):
nodes, meta = node
if nodes:
total = 0
for i in meta:
i -= 1
if i >= 0 and i < len(nodes):
total += value_of(nodes[i])
return total
else:
return sum(meta)
def solve(inputstr):
stream = load_stream(inputstr)
node = parse_node(stream)
meta = sum_of_meta(node)
print(f"Part 1: {meta}")
value = value_of(node)
print(f"Part 2: {value}")