#!/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]))))