我正在寻找一种智能的方法来将具有相似值的任意数量的数组分组(不一定按相同的顺序)。我使用的语言是红宝石,但我猜这个问题与语言无关。
鉴于
a = ['foo', 'bar']
b = ['bar', 'foo']
c = ['foo', 'bar', 'baz']
d = ['what', 'ever', 'else']
e = ['foo', 'baz', 'bar']
我想要一个告诉我
的功能我可以想到一些不那么聪明的方法来做这个非常低效的方法,比如我可以将每个数组的值与每个其他数组的值进行比较。 或者我可以检查((a - b)+(b - a))。length == 0对于所有数组的组合,并将那些结果分组。或者我可以检查是否a.sort == b.sort对于所有阵列组合。
我确信在我之前有人能更有效地解决这个问题。我似乎无法找到如何。
答案 0 :(得分:2)
对于所有数组组合,你可以使用sort
而不执行此操作“但只对所有数组执行(Schwartzian变换)。
arrays = [a, b, c, d, e]
arrays.group_by{|array| array.sort}.values