Oops

  dv=: 0, 1+ [:; [:dv&.> 1}.]


Thanks,


-- 

Raul

On Mon, May 24, 2021 at 8:40 AM Raoul Schorer <raoul.scho...@gmail.com>
wrote:

> Hi and thanks to all for helpting!
>
> Raul, I think you forgot to copy your working verb in your last.
> Ethejiesa, good catch and great insight! Your verb yields a domain error on
> J902, though.
>
> Cheers,
> Raoul
>
> On Mon, May 24, 2021 at 2:35 PM Raul Miller <rauldmil...@gmail.com> wrote:
>
> > Thank you, that makes sense.
> >
> > And, I also see that I built a faulty value for ast.
> >
> > Here's a fixed ast and a working depth vector verb:
> >
> >    t=:'.'
> >
> >    ast=:t;(t;t);(t;(t;t);t);<(t;(t;t;t);(t;t;t);t)
> >
> >    ast
> >
> > +-+-----+-----------+---------------------+
> >
> > |.|+-+-+|+-+-----+-+|+-+-------+-------+-+|
> >
> > | ||.|.|||.|+-+-+|.|||.|+-+-+-+|+-+-+-+|.||
> >
> > | |+-+-+|| ||.|.|| ||| ||.|.|.|||.|.|.|| ||
> >
> > | |     || |+-+-+| ||| |+-+-+-+|+-+-+-+| ||
> >
> > | |     |+-+-----+-+|+-+-------+-------+-+|
> >
> > +-+-----+-----------+---------------------+
> >
> >    dv ast
> >
> > 0 1 2 1 2 3 2 1 2 3 3 2 3 3 2
> >
> >
> > (Apologies for any wonky formatting -- I am on a phone right now.)
> >
> >
> > Thanks,
> >
> >
> > --
> >
> > Raul
> >
> > On Mon, May 24, 2021 at 2:47 AM ethiejiesa via Programming <
> > programm...@jsoftware.com> wrote:
> >
> > > Raoul Schorer <raoul.scho...@gmail.com> wrote:
> > > > Dear all,
> > > >
> > > > I am struggling with the translation of the following APL dyad to J:
> > > >
> > > > ∊ 0 {(⊢,(⍺+1)∇⊣)/⌽⍺,1↓⍵} y
> > > >
> > > > which is the expression to yield a depth vector from a tree in record
> > > > format (drawn from Dr. Hsu's thesis). Demo:
> > >
> > > Oh cool! I have been (very sparingly) messing about with Hsu's tree
> > > representation. For purely selfish reasons, I haven't looked at the
> > thesis,
> > > trying to figure out the representation myself. However, I have only
> got
> > > so far
> > > as figuring out an algorithm for non-recursively generating random
> depth
> > > vectors.
> > >
> > > > t ← '∘'
> > > > ast ← t (t t) (t (t t) t) (t (t t t) (t t t) t)
> > > > ∊ 0 {(⊢,(⍺+1)∇⊣)/⌽⍺,1↓⍵} ast
> > > > 0 1 2 1 2 3 2 1 2 3 3 2 3 3 2
> > > >
> > > > In particular, I don't understand the control flow and termination
> > > > condition for the recursion. Dr. Hsu says that this uses tree
> reduction
> > > > with no base case.
> > >
> > > Anyway, my APL is pretty sketchy, but it looks like the ast
> > representation
> > > there is something like this:
> > >
> > > 1) First element of list is node content,
> > > 2) Following nodes are child subtrees.
> > >
> > > So the algorithm should be conceptually simple. Replace the head atom
> > with
> > > the
> > > current depth, bump current depth, and then recurse over the child
> > > subtrees. I
> > > believe that the "base case" is taken care of by (/), since at the
> leaves
> > > it
> > > should be operating on atoms.
> > >
> > > > dv =. {{ (];(>:x) dv [)/\ |.x;}.y }}
> > > >
> > > > results in an infinite loop. What am I missing? Is there some kind of
> > > > implicit termination condition in the ∇ primitive?
> > >
> > > The main problem is the (x;}.y) part. The recursion depends on the fact
> > > that
> > > (⍺,1↓⍵) equals ⍺ at the leaves, but (x;}.<'anything') is the same thing
> > as
> > > (x;a:). Thus when y is a leaf, (x;}.y) turns into a tree!
> > >
> > > We can brute for a fix by replacing the (;) in (x;}.y) with
> > > (;`(<@[)@.(0=#@])):
> > >
> > >        t=: '.'
> > >        ast=: t;(t;t);(t;(t;t);t);<(t;(t;t;t);(t;t;t);t)
> > >        f=: {{(],(>:x) f >@[)/ |. x ;`(<@[)@.(0=#@]) }.y}}
> > >        0 ;@f ast
> > >     0 1 2 1 2 3 2 1 2 3 3 2 3 3 2
> > >
> > > Hope that's somewhat comprehensible.
> > > ----------------------------------------------------------------------
> > > 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
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to