仅使用单个列表进行单词的所有可能置换

问题描述 投票:-1回答:1

我对编码尚不十分了解(正在研究),这是我第一次使用此站点,但并非完全是我第一次使用这样的站点(所以,对我好一点,哈哈),我发现将是最好的地方。因此,我现在要完成的工作是尝试使用每个可能长度的单个单词集来实现每个排列,而不会在一个结果中重复相同的单词。我找不到完全一样的东西,因为我见过的大多数人制造或想要的东西都有一定的局限性,即他们只能在每个单词中设置一定数量的单词而不是所有可能的长度的单词集,例如有五个词,我希望结果中每个集合有尽可能多的词,这意味着我希望有一个包含一个,两个,三个,四个和五个词的集合,当然要用这些集合进行所有可能的排列。

例如,每个数字是每套单词的数量(它应该自动找到,以便它能处理所有长度),它应该以每套一个单词开始,以每套五个单词结束,而无需重复单个词集相同:

1

Alpha
Beta
Charlie
Delta

2

Alpha Beta
Alpha Charlie
Alpha Delta
Beta Alpha
Beta Charlie
Beta Delta
Charlie Alpha
Charlie Beta
Charlie Delta
Delta Alpha
Delta Beta
Delta Charlie

3

Alpha Beta Charlie
Alpha Beta Delta
Alpha Charlie Beta
Alpha Charlie Delta
Alpha Delta Beta
Alpha Delta Charlie
Beta Alpha Charlie
Beta Alpha Delta
Beta Charlie Alpha
Beta Charlie Delta
Beta Delta Alpha
Beta Delta Charlie
etc.
.
.
.

4

Alpha Beta Charlie Delta
Alpha Beta Delta Charlie
Alpha Charlie Beta Delta
Alpha Charlie Delta Beta
Alpha Delta Beta Charlie
Alpha Delta Charlie Beta
Beta Alpha Charlie Delta
Beta Alpha Delta Charlie
Beta Charlie Alpha Delta
Beta Charlie Delta Alpha
Beta Delta Alpha Charlie
Beta Delta Charlie Alpha
etc.
.
.
.

另外,我也不想让这一点变得太荒谬了,但是有没有一种方法可以过滤掉所有刚创建的行并只提取其中有特定出现的行呢?例如,仅拉出其中包含Alpha的行,如果我有,则采用这种方式:

Alpha Beta
Alpha Charlie
Alpha Delta
Beta Alpha
Beta Charlie
Beta Delta
Charlie Alpha
Charlie Beta
Charlie Delta
Delta Alpha
Delta Beta
Delta Charlie

我可以专门抓住:

Alpha Beta
Alpha Charlie
Alpha Delta
Beta Alpha
Charlie Alpha
Delta Alpha

所以,基本上,这就是我要在这里完成的工作,从我所看到的还没有人做到这一点,或者至少从未要求过,我希望这里不要问太多。预先感谢您提供的任何帮助,尤其是如果您可以给我提供代码或链接到可以完成所有操作的代码,则尤其感谢。

java python string algorithm permutation
1个回答
0
投票

thiis是单词的permutation

from itertools import permutations
l = ['Alpha',
'Beta',
'Charlie',
'Delta']

leng = len(l)
res  =[]
for i in range(1, leng+1):

    res.extend(list(permutations(l, i)))

for v  in res:
    print(*v)
© www.soinside.com 2019 - 2024. All rights reserved.