diff --git a/day08/sol.ivy b/day08/sol.ivy index ea374ed..f63a4c5 100644 --- a/day08/sol.ivy +++ b/day08/sol.ivy @@ -39,22 +39,20 @@ i slice -d op empty v = 0 == rho v -# takes from v while v[i] is less than v[0] -op shorter v = +# takes from v while v[i] is less than x +op x shorter v = empty v: v - x = v[1] - v = 1 flip v (and\ x > v) sel v -# returns 1 if any v[i] blocks v -op blocked v = +# returns 1 if any v[i] blocks x +op x blocked v = empty v: 0 - or/ v[1] <= 1 drop v + or/ x <= v -v = 5 1 2 3 4 3 2 5 6 1 2 3 +v = 1 2 3 4 3 2 5 6 1 2 3 -shorter v -shorter 1 2 3 +5 shorter v +0 shorter 1 2 3 # takes from v while v[i] is less than v[0] op shorter2 v = @@ -69,7 +67,8 @@ op shorter2 v = sample "-" -op viewDistance v = (blocked v) + rho shorter v +op x viewDistance v = (x blocked v) + rho x shorter v +op viewDistance v = v[1] viewDistance 1 drop v viewDistance 1 2 3 viewDistance 5 1 2 3 @@ -82,10 +81,10 @@ op p score A = row = A[y] col = A[;x] n = 1 - n = n * viewDistance flip x take row - n = n * viewDistance e, x drop row - n = n * viewDistance flip y take col - n = n * viewDistance e, y drop col + n = n * e viewDistance flip (x-1) take row + n = n * e viewDistance x drop row + n = n * e viewDistance flip (y-1) take col + n = n * e viewDistance y drop col n op i loopY A = @@ -96,13 +95,14 @@ op i loopX A = i[1] > (rho A)[1]: 0 (i loopY A) max (i + 1 0) loopX A -op solve A = 5 5 loopY A +op solve A = 1 1 loopX A 1 1 score sample 2 2 score sample 3 4 score sample -#solve sample +solve sample -#1 1 score sample; 1 2 score sample; 1 3 score sample; 1 4 score sample; 1 5 score sample -#2 1 score sample; 2 2 score sample; 2 3 score sample; 2 4 score sample; 2 5 score sample +1 1 score sample; 1 2 score sample; 1 3 score sample; 1 4 score sample; 1 5 score sample +2 1 score sample; 2 2 score sample; 2 3 score sample; 2 4 score sample; 2 5 score sample +solve input