--- /dev/null
+#!/usr/bin/python3
+
+import sys
+
+filename=(len(sys.argv) > 1) and sys.argv[1] or "22_10.txt"
+
+cur_jolts=0
+adaptors=[int(line.rstrip()) for line in open(filename, "r")]
+adaptors.sort()
+end_jolts=adaptors[-1]+3
+
+diff_counts={}
+
+for adaptor in adaptors:
+ if adaptor-cur_jolts == 3:
+ if 3 not in diff_counts:
+ diff_counts[3]=0
+ diff_counts[3]+=1
+ elif adaptor-cur_jolts == 1:
+ if 1 not in diff_counts:
+ diff_counts[1]=0
+ diff_counts[1]+=1
+ else:
+ raise Exception("Diff is not 1 or 3!")
+ cur_jolts=adaptor
+
+diff_counts[3]+=1
+print(diff_counts)
+print(diff_counts[1] * diff_counts[3])
--- /dev/null
+#!/usr/bin/python3
+
+import sys
+
+filename=(len(sys.argv) > 1) and sys.argv[1] or "22_10.txt"
+
+adaptors=[int(line.rstrip()) for line in open(filename, "r")]
+adaptors.sort()
+end_jolts=adaptors[-1]+3
+
+adaptors.insert(0, 0)
+adaptors.append(end_jolts)
+
+cur_configs=1
+
+def get_choices():
+ choice_count=1
+ can_reach={}
+ paths={0:1}
+ for adaptor in adaptors:
+ can_reach[adaptor]=[a for a in adaptors if (a >= adaptor+1 and a <= adaptor+3)]
+
+ for adaptor in adaptors:
+ for adaptor2 in can_reach[adaptor]:
+ if adaptor2 not in paths:
+ paths[adaptor2]=0
+ paths[adaptor2]+=paths[adaptor]
+
+ return paths[adaptors[-1]]
+
+total = get_choices()
+
+print("Maybe possibly all the configs")
+print(total)