old=: 0 2 7 0
   n  =: #old
   max=: >./old
   i  =: old i. max

   ] s=: (-n) ]\ ((1+i)$0), max#1
0 0 0 1
1 1 1 1
1 1 0 0
   +/s
2 2 1 2

   ] new=: (0 i}y) + +/s
2 4 1 2

   assert (+/old) -: +/new
1



On Thu, Dec 7, 2017 at 7:03 AM, Daniel Lyons <[email protected]> wrote:

> On Dec 7, 2017, at 7:48 AM, Joe Bogner <[email protected]> wrote:
> >
> > I'm still working on day 6 and I'm looking for a tip on a specific part
> I'm
> > trying (not the whole solution)
> >
> > I'd like to define a verb that cycles through a list N times and adds 1
> to
> > each element
> >
> > 3 addCycle (4#0) -: 1 1 1 0
> >
> > 4 addCycle (4#0) -: 1 1 1 1
> >
> > 5 addCycle (4#0) -: 2 1 1 1
> >
> > 6 addCycle (4#0) -: 2 2 1 1
> >
> > 7 addCycle (4#0) -: 2 2 2 1
> >
> > I was initially messing around with variants of this (clearly wrong)
> >
> > ((1 (0) } ]) + |.)^:3 (0 0 0 0)
> >
> > I also wonder if there's some antibase pattern or odometer solution
>
>
> I also got hung up on this part and haven’t solved it yet.
>
> My thought was to use copy to generate a bunch of 1s, up to the size of
> the number of buckets, and fill in with 0s beyond the number in the bucket,
> and then do iterated sums. All this under a rotation for the location of
> the number. In my mind it would look like this:
>
> 3 |. 0 2 0 0 = 0 0 2 0
>    0 0 2 0 + 1 1 1 1 = 1 1 3 1   NB. 4 gen 7 = 1 1 1 1 ; 3
>    1 1 3 1 + 1 1 1 0 = 2 2 4 1   NB. 4 gen 3 = 1 1 1 1 ; 0, the second
> value being zero terminates the loop
> _3 |. 2 2 4 1 = 2 4 1 2
>
> This was the best I could imagine but I don’t have any idea if it’s
> reasonable or less work than just going around item-by-item, and I haven’t
> coded it up yet.
>
> --
> Daniel Lyons
>
>
>
>
> ----------------------------------------------------------------------
> 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