Yes,  a 9x9 Boolean matrix with an offset 1s diagonal and an extra 1.  It might 
have been worth using the high-power squaring technique,  if the power were 
really large, but for 256 I just took the direct 256th power.

Cheers,

Mike

Sent from my iPad

> On 27 Dec 2021, at 06:17, Raul Miller <[email protected]> wrote:
> 
> https://adventofcode.com/2021/day/6
> 
> For day 6, we had a list of numbers which represented a school of fish.
> 
> sample=: 3,4,3,1,2
> 
> Because this was just a comma separated list of digits, no special
> parsing routines were necessary.
> 
> The task was conceptually to generate a step function which would
> decrease each non-zero fish's number by 1. For fish represented by the
> value 0, we replace them with a 6 and also append an 8 to the end of
> the list. (And then we would run that step function the specified
> number of times and find the length of the result.)
> 
> So, the complication here is that we could not use modulo arithmetic,
> because that would interfere with fish represented by the number 7.
> (Though if we limited modulo to a prefix which did not include any
> values greater than 6...).
> 
> For this, I did not bother to create a step function. If I had, it
> might have looked like this:
> 
>   #((8#~0=]),<: |~ 7+]*7<])^:18] 3,4,3,1,2
> 26
>   #((8#~0=]),<: |~ 7+]*7<])^:80] 3,4,3,1,2
> 5934
> 
> But I did not feel like implementing that at the time, so instead I wrote 
> this:
> 
> aoc6a=: {{
>  l=. y
>  for.i.x do.
>    l=. ((7>.l)|<:l),(0=l)#8
>  end.
>  #l
> }}
> 
> What can I say? ... It worked.
> 
> For the second part, instead of 80 days, we needed to run for 256
> days. So, simulating individual fish, we simulate the count of each
> fish with each given value. And, I wanted to be able to quickly spot
> any problems, so I threw an echo statement into my code, for
> intermediate results:
> 
> aoc6=: {{
>  echo l=. _1 +#/.~(i.9),y
>  echo b=.6=i.9
>  for.i.x do.
>    echo l=.(1|.l)+b*{.l
>  end.
> +/l
> }}
> 
> Clearly, I could have instead used a step function here.
> 
> (Did I mention that AoC was sort of a bad habit for me?)
> 
> -- 
> Raul
> ----------------------------------------------------------------------
> 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