A very neat solution.

Consider

  george2=:3 :0
     y =. ({~ ?~&#) y        NB. shuffle
     tree=. (<@{~ ?~&#)\ y
     ;@|."1 ' '&,&.> tree    NB. pad
  )

Compare

    (george ,. george ,. george ,. george) 'abcde'
      a         a         a         a
     b a       a b       a b       a b
    b a c     c b a     c b a     c b a
   c b a d   a c b d   a b d c   a b c d
  b c e a d d e a b c c d e a b b a d c e

    (george2 ,. george2 ,. george2 ,. george2) 'abcde'
      c         d         c         a
     c b       d b       c e       a b
    d c b     d b e     c e a     e a b
   e b d c   e b a d   e b c a   a e d b
  e b a d c d a b c e b d e c a a b e c d


On 2/28/2012 12:46 PM, Raul Miller wrote:
> Here is my first attempt at solving this:
>
> george=:3 :0
>     tree=. (<@{~ ?~&#)\ y
>     ;@|."1 ' '&,&.>  tree    NB. pad
> )
>
>     george 'abcde'
>      a
>     a b
>    c b a
>   d c b a
> e a d b c
>
> Hopefully it is clear that the first line generates a scrambled tree,
> and the second line formats it for display.
>
> I think I prefer explicit definitions over other tacit forms, for
> implementations that use long chains of monads, because of the
> concatenative quality of explicit definitions.
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to