簡體   English   中英

如何對具有相似值的數組進行分組

[英]How to group Arrays with similar values

我正在尋找一種智能的方法來組合具有相似值的任意數量的數組(不一定按相同的順序)。 我使用的語言是紅寶石,但我猜這個問題與語言無關。

特定

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對於所有數組的組合,並將那些結果分組。或者我可以檢查是否a.sort == b.sort適用於所有陣列組合。

我相信在我之前有人能更有效地解決這個問題。 我似乎無法找到如何。

您可以通過sort來執行此操作,而不是“對於所有陣列組合”,但僅對所有陣列(Schwartzian變換)執行此操作。

arrays = [a, b, c, d, e]
arrays.group_by{|array| array.sort}.values

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM