35 lines
829 B
Python
Executable File
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]))))
|