-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhelpers.py
31 lines (22 loc) · 809 Bytes
/
helpers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# heavily inspired by the stuff from Peter Norvig
cat = ''.join
def read_input(filename, datatype=str, sep='\n'):
filename = f"{filename:02d}" if isinstance(filename, int) else filename
with open(f"inputs/{filename}.txt") as f:
contents = f.read().strip().split(sep)
return list(map(datatype, contents))
def digits(filename):
return list(map(int, read_input(filename)[0]))
def count(iterable, pred=bool):
return sum(1 for item in iterable if pred(item))
def first(iterable, default=None):
return next(iter(iterable), default)
def filter_first(iterable, pred):
return first(el for el in iterable if pred(el))
def sign(n):
if n > 0: return 1
elif n < 0: return -1
else: return 0
def line_print(lines):
for line in lines:
print(cat(line))