adventofcode2020/10/10.py

35 lines
829 B
Python
Executable File

#!/usr/bin/env python3
import networkx as nx
import sys
L = []
with open(sys.argv[1], 'r') as f:
L = f.readlines()
L = [int(x.strip()) for x in L]
L.sort()
# part 1
jdiff = {'1': 0, '2': 0, '3': 0}
for i in range(len(L)):
if i == 0:
jdiff[str(L[i])] += 1
else:
jdiff[str(L[i] - L[i - 1])] += 1
jdiff['3'] += 1
#print(jdiff['1'] * jdiff['3'])
# part 2
G = nx.DiGraph()
L.insert(0, 0)
L.append(L[-1] + 3)
for i in range(len(L)):
if i < len(L) - 1 and L[i + 1] in [L[i] + 1, L[i] + 2, L[i] + 3]:
G.add_edge(L[i], L[i + 1])
if i < len(L) - 2 and L[i + 2] in [L[i] + 1, L[i] + 2, L[i] + 3]:
G.add_edge(L[i], L[i + 2])
if i < len(L) - 3 and L[i + 3] in [L[i] + 1, L[i] + 2, L[i] + 3]:
G.add_edge(L[i], L[i + 3])
print(len(list(nx.all_simple_paths(G, L[0], L[-1]))))