我試圖找到一種方法來爲y值的x值生成唯一的排列組合。我希望能夠做的是一樣的東西:大集合的唯一排列
[0,1].unique_permutations(15)
# => [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],
# ... massive snip
# [1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1],
# [1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1],
# ... massive snip
# [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
# [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
要清楚,我知道這是可能的:
[0, 0, 0, 1, 1, 1].permutation.count
# => 720
[0, 0, 0, 1, 1, 1].permutation.to_a.uniq.count
# => 20
但正如我在尋找什麼,這是不太一樣的對於和性能的長列表變得不切實際:
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1].permutation.count
# => 479001600 (after a long wait...)
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1].permutation.to_a.uniq.count
# => 1 (didn't actually run this - answer is obvious)
我能找到的最接近的事是this answer for python,但遺憾的是我不知道蟒蛇,並不能完全弄清楚如何端口到Ruby。
我確定有這種類型的問題的其他算法,但我真的很喜歡保持它在Ruby中。
「{0,1}」的元素只有兩個排列:「0 1」和「1 0」。我不確定你在這裏算什麼。 – phs
@phs請參閱我希望實現的輸出的第一個代碼塊。如果對我的預期產出有更準確的術語,我很樂意修正術語。 – Cade
'[0,0,0,0,0,0,0,0,0,0,0,0,1,0]'是否也在您想要的集合中?是否有任何長度爲15的「1」和「0」列表? – phs