2017-04-09 69 views
-1

我有52種元素的卡片組列表中特定的順序生成一副牌組的所有排列?

​​

列表中的每個元素可以放在5中的一個可用時隙:時隙1,2,3,4或5 如何我可以生成5個插槽的所有可能的排列嗎?例如,一個排列是插槽1中的所有52個卡,另一個是插槽1中的第一個卡,插槽2中的第二個卡等等。 我一直在考慮使用itertools的排列函數,但我無法弄清楚如何將它應用於5插槽概念。

+0

那麼,你想分成最多五個部分的甲板?你想保留每個部分的訂單嗎?部分之間?你必須更具體。首先,你有什麼嘗試?告訴我們您嘗試解決問題,預期產出以及您獲得的結果,然後我們可以幫助您! –

回答

1

如果我正確理解你的話,你的套牌的一個分配可以被看作是一個函數,它將每個元素從套牌映射到數字1,2,3,4,5。鑑於輸入總是相同的,它可以表示爲52元素的列表,其中每個元素是在15之間的數字,該數字指示該元素被分配到哪個槽。

itertools的product函數可能會對您有所幫助。您可以將其稱爲:

for x in itertools.product((1,2,3,4,5), repeat=52): 
    print(x) 

但是,生成的元素的數量將是5^52=O(10^36)。這是很多元素,並且很可能你永遠無法及時完成打印。如果你每秒打印一百萬,那麼要花費十億年才能完成所有這些。