I show this only as a different way to deal with it.
There’s much space for improvement.
It works correctly with the two examples you gave.

data1 =: 'THEEQUICKBROWFFOX'
data2 =: 'THEEQUICKBROWFOOX'
res1  =: 'THEXEQUICKBROWFXFOX'
res2  =: 'THEXEQUICKBROWFOOX'

s =: 2 : 0
a =. 0 -.~ (* i.@#) m=y
n a} y
)

NB. ugly, repetitive junk solution
res1 = ('?'s'X') (] (>:@(+ i.@#)@(2 I.@:=]) (([e.~i.@#@]){"0 1'X',.~])
#~) (i.@# >:@e. (* -.@(- (0 1 $~ $))@(2&|))@(-.&0@(*
i.@#))@(2&(=/@|:@]\)))) ('X's'?') data1
res2 = ('?'s'X') (] (>:@(+ i.@#)@(2 I.@:=]) (([e.~i.@#@]){"0 1'X',.~])
#~) (i.@# >:@e. (* -.@(- (0 1 $~ $))@(2&|))@(-.&0@(*
i.@#))@(2&(=/@|:@]\)))) ('X's'?') data2


Am 04.02.21 um 05:02 schrieb Ric Sherlock:
> I need to separate any digraphs in a string, that consist of 2 letters the
> same, by inserting an 'X' between them.
>    _2 ]\ 'THEEQUICKBROWFFOX'
> TH
> EE
> QU
> IC
> KB
> RO
> WF
> FO
> X
> 
> 'EE' is a digraph that needs an 'X' inserted. Doing so will result in:
> 
> TH
> EX
> EQ
> UI
> CK
> BR
> OW
> FF
> OX
> 
> So now we also need to separate the 'FF' digraph.
> 
> I want to define a verb "dedouble" that will process a string so:
>    dedouble 'THEEQUICKBROWFFOX'
> THEXEQUICKBROWFXFOX
> But:
>    dedouble 'THEEQUICKBROWFOOX'
> THEXEQUICKBROWFOOX
> 
> I have implemented a solution at
> https://rosettacode.org/wiki/Playfair_cipher#J but am interested in
> alternative implementations.
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
> 

-- 
----------------------
mail written using NEO
neo-layout.org

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to