gpt4 book ai didi

python - 使用itertools获得大量独特的排列

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:15 25 4
gpt4 key购买 nike

我有一个这样的问题:有多少种方法可以改变“avocadojuice”中的字母顺序,以便元音首先出现,例如“ovacadojuice”就是一个解决方案?出发点——“牛油果汁”也是一个解决方案。我知道itertools.permutations可以做这样的事情,但如果单词太长,就会弹出内存错误。有没有办法防止这种情况,或者也许有另一个内置模块可以解决这个问题?先感谢您!附:我知道如何将排列元组转换为字符串。

最佳答案

这是一个暴力破解问题可能不可行的情况。您需要计算 n 个元素的唯一排列数量,并考虑到某些元素是重复的。

对此有一个数学公式,并且 some excellent answers在其他堆栈交换站点上。

只有 ao 重复,因此 avocadojuice 的唯一排列数为

(12!) / (2!2!)

119750400

每 12 个字符的字符串大约需要 45 个字节(至少在我的机器上),仅存储近 1.2 亿个排列就需要超过 5 GB 的内存!您会明白为什么暴力破解并不是一个好主意。

不过,您的问题还有一个额外要求,即排列必须以元音开头。鉴于只有 5 个元音,您应该能够计算出每个给定元音作为第一个字符的可能排列。

(11! / 2!) +      # a (only o is repeated)
(11! / (2!2!)) + # e
(11! / (2!2!)) + # i
(11! / 2!) + # o (only a is repeated)
(11! / (2!2!)) + # u

关于python - 使用itertools获得大量独特的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36871110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com