0

我正在寻找一种智能方法来对具有相似值的任意数量的数组进行分组(不一定以相同的顺序)。我使用的语言是 ruby​​,但我想这个问题与语言无关。

给定

a = ['foo', 'bar']
b = ['bar', 'foo']
c = ['foo', 'bar', 'baz']
d = ['what', 'ever', 'else']
e = ['foo', 'baz', 'bar']

我想要一个功能告诉我

  • a & b 在一组
  • c & e 在一组
  • d 是它自己的组

我可以想到一些不太聪明的方法来做这件事,效率很低,就像我可以将每个数组的值与其他数组的值进行比较。或者我可以检查所有数组组合是否 ((a - b) + (b - a)).length == 0 并将结果为 0 的组合分组。或者我可以检查 a.sort == b.sort对于数组的所有组合。

我确信在我之前的某个人已经更有效地解决了这个问题。我似乎无法找到如何。

4

1 回答 1

2

You can do it with sort without doing it "for all combinations of arrays" but doing it only for all arrays (Schwartzian transform).

arrays = [a, b, c, d, e]
arrays.group_by{|array| array.sort}.values
于 2013-07-06T15:09:37.987 回答