day 4 ivy

main
magical 2022-12-04 21:40:37 -08:00
parent e7afa95c6d
commit d6333ce7e8
4 changed files with 1055 additions and 0 deletions

1000
day04/input 100644

File diff suppressed because it is too large Load Diff

1
day04/input.ivy 100644

File diff suppressed because one or more lines are too long

20
day04/sol.ivy 100644
View File

@ -0,0 +1,20 @@
sample = 6 4 rho 2 4 6 8 2 3 4 5 5 7 7 9 2 8 3 7 6 6 4 6 2 6 4 8
) get "input.ivy"
op r overlaps s = not (r[2] < s[1]) or (s[2] < r[1])
op r contains s = (r[1] <= s[1]) and (s[2] <= r[2])
op contains x = (x[1 2] contains x[3 4]) or (x[3 4] contains x[1 2])
op overlaps x = (x[1 2] overlaps x[3 4])
#1 3 overlaps 4 5
#1 5 overlaps 2 7
#contains 1 2 3 4
#contains 5 10 7 8
+/ contains transp sample
+/ contains transp input
+/ overlaps transp sample
+/ overlaps transp input

34
day04/toivy.py 100755
View File

@ -0,0 +1,34 @@
#!/usr/bin/env python3
"""
Converts a text file containing a list of integers
into a format that can be loaded by ivy.
"""
with open("input") as f:
lines = f.read().splitlines()
data = []
for line in lines:
line = line.replace("-", ",")
data.append(line.split(","))
def count(row):
n = 0
for x in row:
if x.isdigit():
n += 1
else:
n += len(x)
return n
cols = max(map(count, data))
print("input = {} {} rho".format(len(data), cols), end="")
for row in data:
print("", " ".join(
x if x.isdigit() else repr(x)
for x in row), end="")
n = count(row)
if n < cols:
print(" 0" * (cols - n), end="")