If you have an inverse for "A." : 375540904969390575462x A. 'newyorkcityjusersgroup' citysojournersupwrykeg
On Mon, Jun 8, 2015 at 1:18 PM, Mike Day <[email protected]> wrote: > This is a fairly neat anagram checker: > > anag =: -:&(/:~@:(0 27-.~27<.32|64>.123<.a.&i.)) > > 'Dr. K. E. Iverson' anag 'Knives Or Red' > > 1 > > > 'city sojourners up wry keg' anag 'New York City J Users Group' > > 1 > > > It checks the sorts of the indices of the arguments' elements > in the atomic vector, a. , without needing to put them back > into character form. It needs a little care to get rid of > these characters, '<=>?@[]^_`' , which is why the 27<. is needed. > 123<. ensures '{|}...' are ignored, once 0 27 -.~ is performed, so > that: > > #(0 27 -.~(27<.32|64>.123<.a.&i.))'<=>?@[]^_`',123 124 125{a. > > 0 > > > So also: > '<=>~@Dr. K. E. Iverson' anag 'Knives Or Red[\]{|}' > > 1 > > > In the old days, one couldn't take the location of alphabetical > characters for granted, but the atomic vector has been stable > for many years, so this should be fairly safe for the next few > releases of J! > > > Any use? > > > Mike > > > On 08/06/2015 14:46, Devon McCormick wrote > > > Using stdlib noun "Alpha_j_" and verb "tolower": > str=. 'Dr. K. E. Iverson' > Alpha_j_ > ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz > str-.alpha_j_ > 'Dr. K. E. Iverson' -. alpha_j_ > str-.Alpha_j_ > . . . > str-.str-.Alpha_j_ > DrKEIverson > > tolower str-.str-.Alpha_j_ > drkeiverson > > So, > standardizeStr=: Alpha_j_&([: tolower ] -. -.~) > and > isAnagramOf=: ([: /:~ [: standardizeStr ]) -: [: /:~ [: standardizeStr [ > 'Dr. K. E. Iverson' isAnagramOf 'Knives Or Red' > 1 > 'city sojourners up wry keg' isAnagramOf 'New York City J Users Group' > 1 > > > On Mon, Jun 8, 2015 at 9:33 AM, Roger Hui <[email protected]> > wrote: > > Strings x and y are anagrams if x -:&(/:~)&(-.&'. ')&tolower y . That is, >> compare them after reducing them to a standard form, by (converting to >> lower case, then deleting spaces and dots (and whatever), then sorting >> them). >> >> >> >> >> >> >> On Mon, Jun 8, 2015 at 6:27 AM, Gian Medri <[email protected]> wrote: >> >> > Is there a shorter or better method of finding >> > if 2 strings are an anagram in one line code? >> > >> > Write an idiom that takes two character vectors as its left and right >> > arguments and returns 1 if they are anagrams of each other. An anagram >> > of a string uses all of the letters >> > >> > of the string ignoring word spacing, capitalisation, and dot. >> > >> > >> > >> > anagram=: 13 : '(/:~(B,a.) {~ (A,a.) i.~~ (-.&'' .'')y)-: >> > /:~(B=.((97+i.26){a.),a.) {~ (A=.((65+i.26){a.),a.) i.~~ (-.&'' >> > .'')x' >> > >> > >> > >> > >> > >> > 'Dr. K. E. Iverson' anagram 'Knives Or Red' >> > >> > 1 >> > >> > >> > Gian Medri >> > ---------------------------------------------------------------------- >> > For information about J forums see http://www.jsoftware.com/forums.htm >> > >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm >> >> > > > -- > Devon McCormick, CFA > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > > > > > --- > This email has been checked for viruses by Avast antivirus software. > https://www.avast.com/antivirus > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > -- Devon McCormick, CFA ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
