獲取陣列的所有組合排列
當使用塊呼叫時,permutation
方法產生二維陣列,該陣列由數字集合的所有有序序列組成。
如果在沒有塊的情況下呼叫此方法,它將返回 enumerator
。要轉換為陣列,請呼叫 to_a
方法。
例 | 結果 |
---|---|
[1,2,3].permutation |
#<Enumerator: [1,2,3]:permutation |
[1,2,3].permutation.to_a |
[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] |
[1,2,3] .permutation(2).to_a |
[[1,2],[1,3],[2,1],[2,3],[3,1],[3,2]] |
[1,2,3] .permutation(4).to_a |
[] - >沒有長度排列 4 |
另一方面,combination
方法在用塊呼叫時產生二維陣列,該陣列由數字集合的所有序列組成。與排列不同,順序被忽略不計。例如,[1,2,3]
與 [3,2,1]
相同
例 | 結果 |
---|---|
[1,2,3].combination(1) |
#<Enumerator: [1,2,3]:combination |
[1,2,3] .combination(1).to_a |
[[1],[2],[3]] |
[1,2,3] .combination(3).to_a |
[[1,2,3]] |
[1,2,3] .combination(4).to_a |
[] - >沒有長度 4 的組合 |
單獨呼叫組合方法將生成一個列舉器。要獲取陣列,請呼叫 to_a
方法。
repeated_combination
和 repeated_permutation
方法是相似的,除了相同的元素可以重複多次。
例如,序列 [1,1]
,[1,3,3,1]
,[3,3,3]
在常規組合和排列中無效。
例 | #Combos |
---|---|
[1,2,3] .combination(3).to_a.length |
1 |
[1,2,3] .repeated_combination(3).to_a.length |
6 |
[1,2,3,4,5] .combination(5).to_a.length |
1 |
[1,2,3] .repeated_combination(5).to_a.length |
126 |