Compare commits
5 Commits
a3e4290ccd
...
831d8e4f23
Author | SHA1 | Date | |
---|---|---|---|
831d8e4f23 | |||
4ea896feeb | |||
2888e82c6b | |||
a635d3f5db | |||
bfcffc614c |
@ -15,3 +15,94 @@ sample
|
|||||||
+/, vis4 sample
|
+/, vis4 sample
|
||||||
+/, vis4 input
|
+/, vis4 input
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
op pady a = -1, a, -1
|
||||||
|
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
|
||||||
|
|
||||||
|
# takes from v while v[i] is less than x
|
||||||
|
op x shorter v =
|
||||||
|
empty v: v
|
||||||
|
(and\ x > v) sel v
|
||||||
|
|
||||||
|
# returns 1 if any v[i] blocks x
|
||||||
|
op x blocked v =
|
||||||
|
empty v: 0
|
||||||
|
or/ x <= v
|
||||||
|
|
||||||
|
v = 1 2 3 4 3 2 5 6 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 =
|
||||||
|
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 =
|
||||||
|
x = p[1]
|
||||||
|
y = p[2]
|
||||||
|
e = A[y;x]
|
||||||
|
row = A[y]
|
||||||
|
col = A[;x]
|
||||||
|
n = 1
|
||||||
|
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 =
|
||||||
|
i[2] > (rho A)[2]: 0
|
||||||
|
(i score A) max (i + 0 1) loopY A
|
||||||
|
|
||||||
|
op i loopX A =
|
||||||
|
i[1] > (rho A)[1]: 0
|
||||||
|
(i loopY A) max (i + 1 0) loopX A
|
||||||
|
|
||||||
|
op solve A = 1 1 loopX A
|
||||||
|
|
||||||
|
|
||||||
|
1 1 score sample
|
||||||
|
2 2 score sample
|
||||||
|
3 4 score 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
|
||||||
|
29
day08/sol2b.py
Normal file
29
day08/sol2b.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
data = []
|
||||||
|
for line in open("input"):
|
||||||
|
data.append(list(map(int, line.strip())))
|
||||||
|
|
||||||
|
def count(top, ii, jj):
|
||||||
|
n = 0
|
||||||
|
for i in ii:
|
||||||
|
for j in jj:
|
||||||
|
n += 1
|
||||||
|
if data[i][j] >= top:
|
||||||
|
return n
|
||||||
|
return n
|
||||||
|
|
||||||
|
scores = []
|
||||||
|
for ii in range(len(data)):
|
||||||
|
for jj in range(len(data[ii])):
|
||||||
|
top = data[ii][jj]
|
||||||
|
a = count(top, [ii], range(jj+1, len(data[ii])))
|
||||||
|
b = count(top, [ii], reversed(range(0, jj)))
|
||||||
|
c = count(top, range(ii+1, len(data)), [jj])
|
||||||
|
d = count(top, reversed(range(0, ii)), [jj])
|
||||||
|
|
||||||
|
#print(ii,jj,a,b,c,d)
|
||||||
|
score = a*b*c*d
|
||||||
|
scores.append(score)
|
||||||
|
|
||||||
|
#print(visible)
|
||||||
|
#print(sum(sum(x) for x in visible))
|
||||||
|
print(max(scores))
|
138
day10/input
Normal file
138
day10/input
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
addx 1
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
addx -1
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 29
|
||||||
|
addx -1
|
||||||
|
addx -21
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
addx -20
|
||||||
|
addx 21
|
||||||
|
addx 2
|
||||||
|
addx 8
|
||||||
|
addx -1
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 6
|
||||||
|
addx -1
|
||||||
|
addx -37
|
||||||
|
addx 40
|
||||||
|
addx -10
|
||||||
|
addx -25
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 21
|
||||||
|
addx -20
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 2
|
||||||
|
addx -5
|
||||||
|
addx 12
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx 3
|
||||||
|
addx -2
|
||||||
|
addx -37
|
||||||
|
addx 1
|
||||||
|
addx 5
|
||||||
|
addx 3
|
||||||
|
addx -2
|
||||||
|
addx 2
|
||||||
|
addx 29
|
||||||
|
addx -22
|
||||||
|
addx 13
|
||||||
|
noop
|
||||||
|
addx -8
|
||||||
|
addx -6
|
||||||
|
addx 7
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
addx 7
|
||||||
|
addx -2
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx -26
|
||||||
|
addx -11
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 6
|
||||||
|
addx 1
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 4
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -2
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx -22
|
||||||
|
addx 27
|
||||||
|
addx -1
|
||||||
|
addx 1
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
addx -39
|
||||||
|
addx 22
|
||||||
|
noop
|
||||||
|
addx -15
|
||||||
|
addx 3
|
||||||
|
addx -2
|
||||||
|
addx 2
|
||||||
|
addx -2
|
||||||
|
addx 9
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx 3
|
||||||
|
addx -2
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
addx -17
|
||||||
|
addx 24
|
||||||
|
addx -7
|
||||||
|
addx 8
|
||||||
|
addx -36
|
||||||
|
addx 2
|
||||||
|
addx 3
|
||||||
|
addx 33
|
||||||
|
addx -32
|
||||||
|
addx 4
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 20
|
||||||
|
addx -15
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 4
|
||||||
|
addx 6
|
||||||
|
addx -30
|
||||||
|
addx 30
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
146
day10/sample
Normal file
146
day10/sample
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
addx 15
|
||||||
|
addx -11
|
||||||
|
addx 6
|
||||||
|
addx -3
|
||||||
|
addx 5
|
||||||
|
addx -1
|
||||||
|
addx -8
|
||||||
|
addx 13
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
addx -1
|
||||||
|
addx 5
|
||||||
|
addx -1
|
||||||
|
addx 5
|
||||||
|
addx -1
|
||||||
|
addx 5
|
||||||
|
addx -1
|
||||||
|
addx 5
|
||||||
|
addx -1
|
||||||
|
addx -35
|
||||||
|
addx 1
|
||||||
|
addx 24
|
||||||
|
addx -19
|
||||||
|
addx 1
|
||||||
|
addx 16
|
||||||
|
addx -11
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 21
|
||||||
|
addx -15
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -3
|
||||||
|
addx 9
|
||||||
|
addx 1
|
||||||
|
addx -3
|
||||||
|
addx 8
|
||||||
|
addx 1
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -36
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx 6
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 7
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx -13
|
||||||
|
addx 13
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
addx -33
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 8
|
||||||
|
noop
|
||||||
|
addx -1
|
||||||
|
addx 2
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 17
|
||||||
|
addx -9
|
||||||
|
addx 1
|
||||||
|
addx 1
|
||||||
|
addx -3
|
||||||
|
addx 11
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -13
|
||||||
|
addx -19
|
||||||
|
addx 1
|
||||||
|
addx 3
|
||||||
|
addx 26
|
||||||
|
addx -30
|
||||||
|
addx 12
|
||||||
|
addx -1
|
||||||
|
addx 3
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -9
|
||||||
|
addx 18
|
||||||
|
addx 1
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 9
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -1
|
||||||
|
addx 2
|
||||||
|
addx -37
|
||||||
|
addx 1
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
addx 15
|
||||||
|
addx -21
|
||||||
|
addx 22
|
||||||
|
addx -6
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx -10
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 20
|
||||||
|
addx 1
|
||||||
|
addx 2
|
||||||
|
addx 2
|
||||||
|
addx -6
|
||||||
|
addx -11
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
39
day10/sol.py
Normal file
39
day10/sol.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
import itertools
|
||||||
|
import time
|
||||||
|
|
||||||
|
def run(input):
|
||||||
|
x = 1
|
||||||
|
for line in input:
|
||||||
|
ins = line.strip()
|
||||||
|
if ins == "noop":
|
||||||
|
yield x
|
||||||
|
else: # addx <num>
|
||||||
|
yield x
|
||||||
|
yield x
|
||||||
|
x += int(line.split()[1])
|
||||||
|
|
||||||
|
def signal(xs):
|
||||||
|
t = 0
|
||||||
|
for cycle, x in enumerate(xs, start=1):
|
||||||
|
if cycle % 40 == 20:
|
||||||
|
signal_strength = cycle * x
|
||||||
|
t += signal_strength
|
||||||
|
return t
|
||||||
|
|
||||||
|
def render(xs):
|
||||||
|
xs = iter(xs)
|
||||||
|
while True:
|
||||||
|
img = []
|
||||||
|
for pos, x in enumerate(itertools.islice(xs, 40)):
|
||||||
|
visible = x-1 <= pos <= x+1
|
||||||
|
img.append(' #'[visible])
|
||||||
|
if not img: return
|
||||||
|
yield ''.join(img)
|
||||||
|
|
||||||
|
xs = list(run(open("input")))
|
||||||
|
print(signal(xs))
|
||||||
|
|
||||||
|
img = render(xs)
|
||||||
|
for line in img:
|
||||||
|
print(line)
|
||||||
|
time.sleep(.1)
|
Loading…
x
Reference in New Issue
Block a user