80 lines
1.5 KiB
Python
80 lines
1.5 KiB
Python
from contextlib import contextmanager
|
|
from timeit import default_timer
|
|
from pathlib import Path
|
|
|
|
spl = lambda y: [int(w) for w in y]
|
|
|
|
|
|
def load_rows(day):
|
|
return [row for row in load(day)]
|
|
|
|
|
|
def load(day):
|
|
path = Path(get_fname(day))
|
|
return path.read_text().rstrip().split("\n")
|
|
|
|
|
|
def get_fname(day: int) -> str:
|
|
import sys
|
|
|
|
if sys.argv[-1] == "--sample":
|
|
return f"../samples/day{day:02}.txt"
|
|
else:
|
|
return f"../full/day{day:02}.txt"
|
|
|
|
|
|
#############
|
|
def load_char_matrix(f):
|
|
my_file = []
|
|
for line in f:
|
|
my_file.append(line.rstrip())
|
|
return [list(x) for x in my_file]
|
|
|
|
|
|
def load_file_char_matrix(name):
|
|
with open(name, "r") as f:
|
|
return load_char_matrix(f)
|
|
|
|
|
|
def load_int_matrix(f):
|
|
my_file = []
|
|
for line in f:
|
|
my_file.append(line.rstrip())
|
|
return [list(map(int, x)) for x in my_file]
|
|
|
|
|
|
def load_file_int_matrix(name):
|
|
with open(name, "r") as f:
|
|
return load_int_matrix(f)
|
|
|
|
|
|
def load_word_matrix(f):
|
|
my_file = []
|
|
for line in f:
|
|
my_file.append(line.rstrip())
|
|
return [x.split(" ") for x in my_file]
|
|
|
|
|
|
def load_file_word_matrix(name):
|
|
with open(name, "r") as f:
|
|
return load_word_matrix(f)
|
|
|
|
|
|
#############
|
|
|
|
|
|
def rotate(WHAT, times=1):
|
|
what = WHAT
|
|
for x in range(times):
|
|
what = list(zip(*what[::-1]))
|
|
return what
|
|
|
|
|
|
@contextmanager
|
|
def elapsed_timer():
|
|
start = default_timer()
|
|
elapser = lambda: default_timer() - start
|
|
yield lambda: elapser()
|
|
end = default_timer()
|
|
elapser = lambda: end - start
|