assuming you want all dedoubled on a pass and not just first match,
;@:(_2&(,`([,'X',])@.=/each@<\))^:_ 'THEEQUICKBROWFFOOOX' THEXEQUICKBROWFXFOXOXOX ;@:(_2&(,`([,'X',])@.=/each@<\)) 'THEEQUICKBROWFFOOOX' THEXEQUICKBROWFFOOXOX On Wednesday, February 3, 2021, 11:02:49 p.m. EST, Ric Sherlock <tikk...@gmail.com> wrote: 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 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm