Hi,

" amend in place " , that's very cool

Thanks for demonstrating a practical use case.


Jimmy

PS you can use #.(base 2 decode) to replace +/1 2*





On Fri, Dec 18, 2020 at 4:36 PM Skip Cave <s...@caveconsulting.com> wrote:

> Using curlyrt: (amend in place)
>
> n=.'1+(2*3)+(4*(5+6))'
>
>
> |.(+/1 2*'()'=/n)}n,(17#')'),:(17#'(')
>
> ((6+5)*4)+(3*2)+1
>
>
>
> Skip Cave
> Cave Consulting LLC
>
>
> On Fri, Dec 18, 2020 at 12:21 PM 'Michael Day' via Programming <
> programm...@jsoftware.com> wrote:
>
> > Unlike in the K forum,  the J-wires have been virtually silent on this
> > year's Advent of Code...
> >
> > Anyway,  today's problem,  number 18,  might interest J & APLers as part
> > 1 is ALMOST
> > plug-it-in to J/APL;  there's just one twist,  so to speak,  namely we
> > need to reverse an
> > arithmetic expression,  eg
> >     1 + (2 * 3) + (4 * (5 + 6))
> > needs to be evaluated as
> >     ((6 + 5) * 4) + (3 * 2) + 1
> >
> > But, even though all numbers are single-digit,  just reversing the
> > string doesn't work,  fairly obviously:
> >     |.'1 + (2 * 3) + (4 * (5 + 6))'
> > ))6 + 5( * 4( + )3 * 2( + 1
> >
> > So the brackets need swapping.  The data is supplied as strings,  so I
> > expected to use stringreplace,
> > as found in strings.ijs
> >
> > But:
> >     |.    (  ')[' , '()' , '[('  ) stringreplace '1 + (2 * 3) + (4 * (5
> > + 6))'
> > [[6 + 5) * 4) + [3 * 2) + 1
> >
> > Why don't the intermediate '[' get changed to the final ')'  ?
> >
> > The second action in stringreplace is on the left hand argument:
> >     _2 [\ ,(')[' , '()' , '[(' )
> > )[
> > ()
> > [(
> >
> > The first column should be items of old text and the second column
> > their new replacements.  But the third pair seems to be ignored.
> >
> > I did of course get round this little difficulty,  but would have
> preferred
> > not to reinvent the wheel.
> >
> > NB. Part 2 is a little more challenging,  as + is defined there as taking
> > precedence over * .
> >
> > Thanks,
> >
> > Mike
> >
> > --
> > 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
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to