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