day 8 ivy part 2 cleanup
still don't love this, but i can't think of a better approachmain
parent
aeaf4f524c
commit
f15e68e65e
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
sample = 5 5 rho 3 0 3 7 3 2 5 5 1 2 6 5 3 3 2 3 3 5 4 9 3 5 3 9 0
|
sample = 5 5 rho 3 0 3 7 3 2 5 5 1 2 6 5 3 3 2 3 3 5 4 9 3 5 3 9 0
|
||||||
|
|
||||||
|
########
|
||||||
|
"part 1"
|
||||||
|
|
||||||
op visible r =
|
op visible r =
|
||||||
r = -1, r
|
r = -1, r
|
||||||
r = transp max\ transp r
|
r = transp max\ transp r
|
||||||
|
@ -16,63 +19,22 @@ sample
|
||||||
+/, vis4 input
|
+/, vis4 input
|
||||||
|
|
||||||
|
|
||||||
|
##########
|
||||||
op pady a = -1, a, -1
|
"\npart 2"
|
||||||
op padx a = transp pady transp a
|
|
||||||
op pad a = pady padx a
|
|
||||||
|
|
||||||
A = pad sample
|
|
||||||
|
|
||||||
|
|
||||||
i = 3 3
|
|
||||||
d = 1 0
|
|
||||||
|
|
||||||
op i slice d =
|
|
||||||
t = A[i[1];i[2]]
|
|
||||||
t < 0: 0 rho 0
|
|
||||||
t, (i+d) slice d
|
|
||||||
|
|
||||||
A
|
|
||||||
A[3;3]
|
|
||||||
i slice d
|
|
||||||
i slice -d
|
|
||||||
|
|
||||||
op empty v = 0 == rho v
|
op empty v = 0 == rho v
|
||||||
|
|
||||||
# takes from v while v[i] is less than x
|
# count how many elements at the start of v are less than x
|
||||||
op x shorter v =
|
op x shorter v =
|
||||||
empty v: v
|
empty v: 0
|
||||||
(and\ x > v) sel v
|
+/ (and\ x > v)
|
||||||
|
|
||||||
# returns 1 if any v[i] blocks x
|
# returns 1 if any v[i] blocks x
|
||||||
op x blocked v =
|
op x blocked v =
|
||||||
empty v: 0
|
empty v: 0
|
||||||
or/ x <= v
|
or/ x <= v
|
||||||
|
|
||||||
v = 1 2 3 4 3 2 5 6 1 2 3
|
op x viewDistance v = (x blocked v) + x shorter v
|
||||||
|
|
||||||
5 shorter v
|
|
||||||
0 shorter 1 2 3
|
|
||||||
|
|
||||||
# takes from v while v[i] is less than v[0]
|
|
||||||
op shorter2 v =
|
|
||||||
x = v[1]
|
|
||||||
v = 1 flip v
|
|
||||||
v, +/ (and\ transp x > v)
|
|
||||||
|
|
||||||
#shorter2 transp (1, rho v) rho v
|
|
||||||
#shorter2 3 3 rho flip iota 9
|
|
||||||
|
|
||||||
""
|
|
||||||
sample
|
|
||||||
"-"
|
|
||||||
|
|
||||||
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
|
|
||||||
viewDistance 5 5
|
|
||||||
|
|
||||||
op p score A =
|
op p score A =
|
||||||
x = p[1]
|
x = p[1]
|
||||||
|
@ -88,21 +50,17 @@ op p score A =
|
||||||
n
|
n
|
||||||
|
|
||||||
op i loopY A =
|
op i loopY A =
|
||||||
i[2] > (rho A)[2]: 0
|
x = i score A
|
||||||
(i score A) max (i + 0 1) loopY A
|
i[2] >= (rho A)[2]: x
|
||||||
|
x , (i + 0 1) loopY A
|
||||||
|
|
||||||
op i loopX A =
|
op i loopX A =
|
||||||
i[1] > (rho A)[1]: 0
|
x = i loopY A
|
||||||
(i loopY A) max (i + 1 0) loopX A
|
i[1] >= (rho A)[1]: x
|
||||||
|
x , (i + 1 0) loopX A
|
||||||
|
|
||||||
op solve A = 1 1 loopX A
|
op solve A = max/ 1 1 loopX A
|
||||||
|
|
||||||
|
sample
|
||||||
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
|
|
||||||
solve input
|
solve input
|
||||||
|
|
Loading…
Reference in New Issue