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