Well... since r constructs a single verb which it then evaluates with
x and y, I would be tempted to remove x and y from inside the
definition:

   R=: {{ #.F..((] #~ [: (= -:@# u +/) {"1)^:(1<#@])) }}

It's probably possible to make R fully tacit, but (because u is buried
so deeply), that approach would involve a lot of "busy work".

First you would have to construct the (= -:@# u +/) train. Then you
would have to construct the (] #~ [: (= -:@# u +/) {"1) train
presumably using a similar approach. Then you would have to construct
the ^: derived verb, and finally you would have to construct the F..
derived verb.

I think your explicit definition here is easier to read.

I hope this helps,

-- 
Raul

On Fri, Dec 24, 2021 at 5:31 AM Stefan Baumann <[email protected]> wrote:
>
> Hello Raul,
> Not day 2 but the day 3 puzzle lead me to practicing the fold conjunction:
>
> rd=: "."0;._2
> ]d=: rd 0 : 0
> 00100
> 11110
> 10110
> 10111
> 10101
> 01111
> 00111
> 11100
> 10000
> 11001
> 00010
> 01010
> )
> (*&#. -.) (-:@# < +/) d NB. (*) power consumption
> NB. Rating adverb r: u=.<: oxygen generator, u=.> CO2 scrubber
> r=: {{ x #.F..((] #~ [: (= -:@# u +/) {"1)^:(1<#@])) y }}
> ((<:r * >r) i.@{:@$) d  NB. (**) life support rating
>
> Was only wondering if the r adverb could be written tacitly - currently
> have a hard time understanding
> these modifier trains...
>
> Thanks. Stefan.
>
>
>
>
> On Thu, Dec 23, 2021 at 5:35 PM Raul Miller <[email protected]> wrote:
>
> > previous message:
> > http://jsoftware.com/pipermail/programming/2021-December/059435.html
> > AoC day 3 details: https://adventofcode.com/2021/day/3
> >
> > This is a somewhat cleaned up version of my AoC day 3 implementation.
> > (This was my first "midnight attempt" which lends itself to illegible
> > code.)
> >
> > parse=: {{_".1j1#y}};._2
> > sample=: parse {{)n
> > 00100
> > 11110
> > 10110
> > 10111
> > 10101
> > 01111
> > 00111
> > 11100
> > 10000
> > 11001
> > 00010
> > 01010
> > }}
> >
> > NB. "part a"
> > a3=: powerConsumption=:{{
> >   gamma=. (0.5 < +/%#) y
> >   (*&#. -.) gamma
> > }}
> >
> > NB. "part b"
> > b3=: lifeSupportRating=:{{
> >   (<: filter y) *&#. > filter y
> > }}
> >
> > NB. recursive
> > filter=:{{
> >   if. 1=#y do. ,y return.end.
> >   bits=. {."1 y
> >   bit=. (0.5 u +/%#) bits
> >   if. 1 < {:$y do.
> >     bit,u filter (bit=bits)#}."1 y
> >   else.
> >     bit
> >   end.
> > }}
> >
> > The part b puzzle smells an awful lot like a median or mode
> > calculation, and there might be a simpler approach.
> >
> > Nothing fancy here, but it works...
> >
> > --
> > 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
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to