I haven't read the code you posted yet, but if you have a list of arrays and want to find the unique permutations, you almost certainly want
(#~ [: ~: /:~"_1) . If you can accept a list of sorted arrays as the output (some of which may not be present in sorted form in the original input) rather than the first instance of each equivalence class in the input, you can use ~.@:(/:~"_1) Marshall On Thu, Jul 10, 2014 at 09:07:21AM +0100, Jon Hough wrote: > The following two 4x4 arrays are rearrangements of each other's rows. > > > 3 2 1 0 > > > > 1 0 3 2 > > > > 2 3 0 1 > > > > 0 0 0 0 > > > > > > > > > 2 3 0 1 > > > > 3 2 1 0 > > > > 1 0 3 2 > > > > 0 0 0 0 > > > I would like to know a way to acknowledge two arrays as being rearrangements > of each other. Eventually my goal is to compare long lists of such arrays and > nub out duplicates - duplicates being rearrangements. > > > The only way I can think to do this is to cycle through all permutations of > the row of one of the arrays and test for equality with the other array, > using A. . Of course, there are 24 permutations to test for 4x4 arrays, but > obviously for bigger arrays things get worse. > > > Is there a faster way to check two arrays are (ignoring row permutations) > equivalent? > > > > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
