amazing and hillarious,

2 {. i
+------------------------------------------+--------------------------------------------+
|y =. y (turn)(on)(887,9)(through)(959,629)|y =. y 
(turn)(on)(454,398)(through)(844,448)|
+------------------------------------------+--------------------------------------------+

i creates these boxes with 1 statement per line.

3 : i 


creates a verb equivalent to if each of those boxes were a line in a multiline 
definition.


'`off on toggle'

all are dyadic verbs, and turn adverb is set to just return y (no op) to serve 
as the x of the dyad.

through makes a matrix the same size as y, but with all of the cells in the 
rectangle set to 1.


'`off on toggle' =: >`+.`~:

is a simple cell comparison of current value to 1.


----- Original Message -----
From: Henry Rich <henryhr...@gmail.com>
To: programm...@jsoftware.com
Sent: Sunday, December 6, 2015 6:37 PM
Subject: Re: [Jprogramming] adventofcode 6

Part 1:

i =. <@('y =. y ' , ;@(<@('(' , ,&')');._2)@:(,&' '));._2 wd 'clippaste'

through =: (1000 1000 {. ({. ($&1)))/@(-~/\)@:-@(,:~ >:)

turn =: 1 : 'u'

'`off on toggle' =: >`+.`~:

+/@, 3 : i 1000 1000 $ 0


For part 2, use

'`off on toggle' =: (0 >. -)`+`(+ +:)




On 12/6/2015 6:03 PM, David Lambert wrote:
> Ryan made a mask shape 1000 1000 and applied it appropriately to a 
> cumulative array.  Pascal updated the accumulation array in place. I 
> did so likewise but used the dyadic form of amend with gerund m. 
> Pascal computed the index in one place, which I prefer to my 3 sites.
>
>    g
> [: r/ [: _&". {::"0 1
>
>    r   NB. absolute value not required
> ([ + i.@:|@:(-/)) >:
>
>
>    NB. noun L is the array of lights.
>
>    identify  NB. whoops!  returns a vector
> 0 1 2 #~ 'turn on'&({.@E.) , 'turn off'&({.@E.) , 'toggle'&({.@E.)
>
>    on
> 3 : 0
>  I=:([: < 2 6&g ; 4 8&g)@;:y
>  NB. L=:I (1:)`([)`(])}L
>  L=:I (>:@:{)`([)`(])}L
>  EMPTY
> )
>
>    off
> 3 : 0
>  I=:([: < 2 6&g ; 4 8&g)@;:y
>  NB.I (0:)`([)`(])}L
>  L=:I ((0>.<:)@:{)`([)`(])}L
>  EMPTY
> )
>
>    toggle
> 3 : 0
>  I=:([: < (<:2 6)&g ; (<:4 8)&g)@;:y
>  NB. L=:  I (-.@:{)`([)`(])}L
>  L=:I (2+{)`([)`(])}L
>  EMPTY
> )
>
>
>    NB. what the heck???  Why is this zero?
>
>    +/, L [ on`off`toggle@.({.@identify)@,;._2(1!:1)<'/tmp/a' [ L=:1000 
> 1000$0
> 0
>    +/,L
> 14110788
>
>
>
>
>> Date: Mon, 07 Dec 2015 08:46:59 +1100
>> From: "Ryan Eckbo"<ec...@cim.mcgill.ca>
>> To: programming<programm...@jsoftware.com>
>> Subject: Re: [Jprogramming] adventofcode 6
>> Message-ID:<b4007f86-91ad-409c-95d6-ba6d6966c...@cim.mcgill.ca>
>> Content-Type: text/plain; format=flowed
>>
>> 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
>>
>
> ----------------------------------------------------------------------
> 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

Reply via email to