I wanted to do it without looping.
But my solution was incorrect.
The error just didn’t show with
the examples given.
Maybe I’ll find a better way.
Or at least refactor it a bit.
For now, this is at least correct:
i =: 0 -.~ (* i.@#)
s =: 2 : 0
a =. i m=y
n a} y
)
NB. ugly, repetitive junk solution
res1 -: '?'s'X' (] ((+ #\)@(2 I.@:=]) ((i.@#@] e. [) {"0 1 'X',.~]) #~)
(i.@# >:@e. 0 -.~ (* 2 }.@:-.@:| 0 , (+ i.@#))@i@(2&(=/@|:@]\))))
'X's'?' data1
res2 -: '?'s'X' (] ((+ #\)@(2 I.@:=]) ((i.@#@] e. [) {"0 1 'X',.~]) #~)
(i.@# >:@e. 0 -.~ (* 2 }.@:-.@:| 0 , (+ i.@#))@i@(2&(=/@|:@]\))))
'X's'?' data2
Am 04.02.21 um 08:48 schrieb Ben Gorte:
> 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 <[email protected]> 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
>
--
----------------------
mail written using NEO
neo-layout.org
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm