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