My solutions for Advent of Code.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
|
|
from aoc import get_input # AoC
|
|
|
|
from functools import lru_cache
|
|
|
|
|
|
|
|
|
|
|
|
minjolt, maxjolt = 1, 3
|
|
|
|
|
|
|
|
jolts = sorted(list(map(int, get_input(10).splitlines())))
|
|
|
|
|
|
|
|
jolts.insert(0, 0) # first one is allways 0
|
|
|
|
jolts.append( max(jolts)+3 ) # my adapter, allways higher than the highest by 3
|
|
|
|
|
|
|
|
used = []
|
|
|
|
|
|
|
|
def getBest(i, jolts):
|
|
|
|
num = jolts[i]
|
|
|
|
|
|
|
|
diffs = []
|
|
|
|
for i in range(len(jolts)):
|
|
|
|
|
|
|
|
if( i > 0 ):
|
|
|
|
bestdiff = jolts[i] - jolts[i-1]
|
|
|
|
diffs.append(bestdiff)
|
|
|
|
|
|
|
|
diff1, diff3 = diffs.count(1), diffs.count(3)
|
|
|
|
part1 = diff1 * diff3
|
|
|
|
|
|
|
|
|
|
|
|
# part 2
|
|
|
|
|
|
|
|
@lru_cache
|
|
|
|
def countCombos(i, count=0):
|
|
|
|
num = jolts[i]
|
|
|
|
|
|
|
|
if( num != max(jolts) ):
|
|
|
|
for diff in range(1, 4):
|
|
|
|
if((num + diff) in jolts):
|
|
|
|
index = jolts.index(num + diff)
|
|
|
|
print("####", count, diff, index)
|
|
|
|
count += countCombos( index )
|
|
|
|
|
|
|
|
return count
|
|
|
|
|
|
|
|
else:
|
|
|
|
print("end")
|
|
|
|
return 1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
part2 = countCombos(0)
|
|
|
|
|
|
|
|
print(part1, part2)
|