Here's my AoC Day 2 solution: https://adventofcode.com/2021/day/2
this problem seemed perfect for running sums (+/\)

n=.'b' freads 'depth2.txt' NB. Read in File
a=.'forward';'up';'down'
s=.;".ea{:ea n NB. Get numeric values (ea = each)
t=.+./@E.&.>  NB. string match mark each.
m=.s*"1[1 _1 1*>((0{a)t n),((1{a)t n),:((2{a)t n) NB. Set up for running
sums
   {:+/\+/1 2{m  NB. Get running depth sums
820
   {:+/\0{m NB. Get running distance sums.
2018

 820*2018
1654760     NB. Answer

Skip Cave
Cave Consulting LLC


On Wed, Dec 22, 2021 at 2:59 PM 'Michael Day' via Programming <
[email protected]> wrote:

> Apologies - more chat than programming,  but: fwiw,  for part 1,  I just
> defined simple
> one-liner functions "forward" etc which worked ok.  For part 2, they
> needed redefining,  and,
> yes, I used direct defs;  nothing as sophisticated as fold!
>
> I've done days 1-17,  mostly straightforward,  some very fiddly.
>
> But I'm stuck at 18,  which is v complicated in its explanation.  I
> started with boxes in J,
> but found navigation hard - I haven't used nested structures much in J -
> so resorted to
> working on the untranslated rows,  using ;: to separate the symbols &
> numbers,  but
> couldn't get all the examples to reproduce the stated results!    So
> I've wasted yet more time
> learning - or relearning - how to deal with nested arrays in Dyalog APL
> and remembering how
> to use John Scholes' dfns.  Managed to "reduce" the "addition" of the
> first pair of snailnumbers,
> but reducing the "addition" of the third line defeats me.  I suppose I'm
> sometimes inserting
> some result at the wrong depth.
>
> I've spent so much time on that that I'll probably give up the rest!
>
> Cheers,
>
> Mike
>
>
> On 22/12/2021 14:59, Raul Miller wrote:
> > (responding to
> http://jsoftware.com/pipermail/programming/2021-December/059436.html#)
> >
> > I am not sure that I thought this example out well enough for it to be
> > good on an examples page.
> >
> > For instance, after thinking about it for just a few minutes, I realized
> that
> >
> > b2fold=: 0 0 0&(}.F..{{
> >    'dH0 dA0 N'=. x
> >    'A H D'=. y
> >    dA=: N*dA0
> >    dH=: N*dH0
> >    dD=: A*dH
> >    y+dA,dH,dD
> > }})
> >
> > b2=: {{*/b2fold y}}
> >
> > would have been clearer.
> >
> > (Originally I was using ]F.. and commenting that I needed to drop the
> > first item of the result. But isn't it clearer to include that drop
> > mechanism with the fold implementation?)
> >
> > But (and this is worse): this particular example lacks utility, which
> > means that it's not going to be very interesting for anyone.
> >
> > Other opportunities will arise, though. And I think that your concept
> > of linked example pages is a good one and worth following up on.
> >
> > Thanks,
> >
>
>
> --
> This email has been checked for viruses by Avast antivirus software.
> https://www.avast.com/antivirus
>
> ----------------------------------------------------------------------
> 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