Here's a version that works with duplicated values (except note that
there was no specification for what the behavior should be in this
case):

   (,@(#~"0"1) (+.|.)@=)'abcde'
a   e
 b d
  c
 b d
a   e

   (,@(#~"0"1) (+.|.)@=)'abcdedcba'
a   e   a
 b d d b
  c   c
 b d d b
a   e   a

-- 
Raul

On Mon, Dec 10, 2012 at 1:21 PM, Roger Hui <rogerhui.can...@gmail.com> wrote:
> The expression fails if the argument has duplicate items. e.g.
>
>    ((+.|.)@={"0 1 ' '&,.)'aabbb'
> |length error
> |       ((+.|.)@={"0 1' '&,.)'aabbb'
>
>
>
> On Mon, Dec 10, 2012 at 10:18 AM, bob therriault <bobtherria...@mac.com>wrote:
>
>> That is lovely Arie,
>>
>> It is that kind of elegance that I was chasing with my rougher attempts.
>>
>> Using the (+.|.) hook simplifies (|.+.]) precisely and the {" 0 1
>>  combined with ' '&,. means that the selection of the string becomes a
>> choice in each row of displaying either the corresponding element of the
>> string or a blank.
>>
>> Cheers, bob
>>
>> On 2012-12-10, at 1:11 AM, Aai wrote:
>>
>> >  ((+.|.)@={"0 1 ' '&,.)'abcde'
>>
>> ----------------------------------------------------------------------
>> 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