首页 > 解决方案 > 从字符列表生成单词

问题描述

我问了这个问题,我意识到我问错了,尽管@Zdim 提供的答案正是我所问的:所以现在我需要稍微改变一下这个问题。

my $str = 'aaaa';
print $str++, $/ while $str le 'dddd';

因此,上面的代码执行了从aaaadddd的每个组合,例如:

aaaa
aaab
aaac
...
daaa
...
dddd

但是,我们需要生成给定字符集的所有可能组合。它们是数字、特殊字符还是字母字符。所以如果我告诉脚本最小值2和最大值是4字母单词,我给出一个输入字符串:

abcdefG1234%#@

然后它将生成:

aa
aaa
aaaa
bb
aaab
bbbb
@@@@
abc@
ab@1
...

所以它应该使用每个字符并创建从最小2字符到最大4字符的每个可能的组合。

因此,即使我给出了整个字母数字和特殊字符,它也会在2to4字符范围内创建每个可能的单词或字符串。

如果我们举这个glob例子,它很接近,但它只会做所有 4 的集合,而不是来自2,然后3和然后的所有组合4

print, while glob '{A,B,C,D,#,@,a,d,e,f}'x4

标签: perl

解决方案


for my $i (2..4) {
   say while glob '{A,B,C,D,#,@,a,d,e,f}' x $i;
}

推荐阅读