Files
AoC-2020/day10/day10.py
2020-12-11 21:38:34 +01:00

61 lines
1.0 KiB
Python

def part1():
file = open("input.txt")
lines = [int(i) for i in file.readlines()]
lines = sorted(lines)
diffs = {1: 0, 3: 0}
diffs[lines[0]] += 1
lines.append(max(lines) + 3)
for i in range(1, len(lines)):
diff = lines[i] - lines[i - 1]
diffs[diff] += 1
print("Part 1 %d " % (diffs[1] * diffs[3]))
cache = {
}
def count_options(og, adapters):
if og in cache:
return cache[og]
amount = 0
adap = list.copy(adapters)
if len(adap) == 1:
return 1
while True:
num = adap.pop(0)
if num > og + 3:
break
amount += count_options(num, adap)
cache[og] = amount
return amount
def part2():
file = open("input.txt")
adapters = [0]
[adapters.append(int(i)) for i in file.readlines()]
adapters.append(max(adapters) + 3)
adapters = sorted(adapters)
og = adapters.pop(0)
ans = count_options(og, adapters)
print("Part 2: %d" % ans)
if __name__ == "__main__":
part1()
part2()