Thanks, yes that works!
Here's a slightly simpler take on the same approach:
{{ ((+ idx&<)#y) {. y ({. ,'X', }.)~ idx =. >:+: 1 i.~ (=/"1) _2 ]\y }}^:_

On Thu, Feb 4, 2021 at 8:48 PM Ben Gorte <bgo...@gmail.com> wrote:

> Think I've got it:
>
> data1 =: 'THEEQUICKBROWFFOX'
>
> data2 =: 'THEEQUICKBROWFOOX'
>
> {{ ((+where&<)#y) {. ({.&y ,'X', }.&y) where =. >: +: 1 i.~ _2 =/\
> y,'XX',(2|#y){.'X' }}^:_ data1
>
> THEXEQUICKBROWFXFOX
>
> {{ ((+where&<)#y) {. ({.&y ,'X', }.&y) where =. >: +: 1 i.~ _2 =/\
> y,'XX',(2|#y){.'X' }}^:_ data2
>
> THEXEQUICKBROWFOOX
>
>
> Ben
>
> On Thu, 4 Feb 2021 at 17:02, Hauke Rehr <hauke.r...@uni-jena.de> wrote:
>
> > 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
> >
> ----------------------------------------------------------------------
> 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