I agree this is the nicest so far IMO.
I'd probably prefer to have the formating separated from the triangle,
but that makes it less concise:

shuffle=: {~ ?~@#
;@|."1 ' '&([ , -.~)&.> shuffle\shuffle 'cherrytree'

On Wed, Feb 29, 2012 at 11:26 AM, Kip Murray <k...@math.uh.edu> wrote:
> 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
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to