38 lines
767 B
Python
Executable File
38 lines
767 B
Python
Executable File
#!/usr/bin/env python3
|
|
from functools import reduce
|
|
import re, sys
|
|
import sys
|
|
import numpy as np
|
|
|
|
def tpl(l): # get nice tuple from line
|
|
return int(l)
|
|
|
|
def p(*args):
|
|
print(*args)
|
|
|
|
def threes(l):
|
|
return sum(x == 3 for x in l)
|
|
|
|
def onez(l):
|
|
return sum(x == 1 for x in l)
|
|
|
|
fn = sys.argv[1] if len(sys.argv) > 1 else 'input10'
|
|
with open(fn) as f:
|
|
|
|
lines = [l.strip() for l in f.readlines()]
|
|
n = [0, ] + sorted([tpl(l) for l in lines])
|
|
n += [n[-1] + 3]
|
|
d = [b - a for a, b in zip(n, n[1:])]
|
|
p(onez(d) * threes(d))
|
|
ways = 1
|
|
ones = 0
|
|
for r in d:
|
|
if r == 3:
|
|
ways *= (1, 1, 2, 4, 7)[ones]
|
|
ones = 0
|
|
elif r == 1:
|
|
ones += 1
|
|
else:
|
|
p('not 1 not 3')
|
|
p(ways)
|