I went with an explicit function for typing speed, but did the transform
tacitly. Full tacit had problems
b is a table where each row is a code, and x1,y1,x2,y2
p2 creates and returns the matrix.
Y =: (&{::)(@:])
X =: (&{::)(@:[)
b =. (2 , 0 ". every 3 5 7 9 { ])`(1 , 0 ". every 3 5 7 9 { ])@.('on' -: 2
Y)`(0 , 0 ". every 2 4 6 8 { ])@.(0 Y)"1( ],~ [: < 0:`1:@.('toggle' -: 0 Y))"1
;:"1 > cutLF a =. wd 'clippaste'
p2 =: 3 : 0
c =. 1000 1000 $ 0
for_i. y do.
d =. (0 Y) i
b =. (,@:(<"1)@(( 2 Y + 4 Y i.@>:@- 2 Y) ,.~"0 1 ( 1 Y + 3 Y i.@>:@- 1 Y))) i
if. d = 1 do. c =. (1 + b{c) b} c
elseif. d = 2 do. c=. ( <:^:(0 < ])"0 b{c) b} c
elseif. 1 do. c =. (2 + b{c) b} c end.
end.
)
+/ +/ p2 b
----- Original Message -----
From: Ryan Eckbo <[email protected]>
To: programming <[email protected]>
Sent: Sunday, December 6, 2015 4:46 PM
Subject: Re: [Jprogramming] adventofcode 6
How do your on/off/toggle functions work? My solution also updates a
global matrix,
but my implementation doesn't feel good. Looking forward to seeing
nicer solutions.
xind=: 3 : 0&{ + [: i. >:@:(-/)@:(2 0&{)
yind=: 3 : 1&{ + [: i. >:@:(-/)@:(3 1&{)
mkmask=: 3 : '1 inds} 1000 1000 $ 0 [ inds=: < (xind y);(yind y)'
on=: 3 : 'lights=: lights + mkmask y'
off=: 3 : 'lights=: 0 >. lights - mkmask y'
toggle=: 3 : 'lights=: lights + +: mkmask y'
instructions=: <;._2 (' through ';',';'turn ';'') stringreplace
fread'/tmp/input.txt'
lights=: 1000 1000$0
do each instructions
+/, lights
On 7 Dec 2015, at 6:35, David Lambert wrote:
> After tracking down the rank error my solution sentence became
>
> +/,on`off`toggle@.({.@identify)"1 A
>
> where A is a matrix containing one instruction per row, and the agenda
> item verbs modify a global matrix. Have you guessed my difficulty?
> Yes, identify returned a length one vector instead of a scalar.
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm