如何用php编写所有可能的单词?
可能重复:如何用php编写所有可能的单词?,php,arrays,letter,Php,Arrays,Letter,可能重复: 我正在尝试用php编写所有可能的10个字母的单词(zzzzz)。我该怎么做?看起来是这样的: 我尝试了一些方法,但他们只是随机生成10个字母,而不是从1个字母增加。顺便说一句,执行时间和它的规模都不是问题。我只需要知道它的算法,如果有人用代码展示它,当然会更有帮助 function words($length, $prefix='') { if ($length == 0) return; foreach(range('a', 'z') as $letter) {
我正在尝试用php编写所有可能的10个字母的单词(zzzzz)。我该怎么做?看起来是这样的: 我尝试了一些方法,但他们只是随机生成10个字母,而不是从1个字母增加。顺便说一句,执行时间和它的规模都不是问题。我只需要知道它的算法,如果有人用代码展示它,当然会更有帮助
function words($length, $prefix='') {
if ($length == 0) return;
foreach(range('a', 'z') as $letter) {
echo $prefix . $letter, "\n";
words($length-1, $prefix . $letter);
}
}
用法:
words(10);
在这里尝试:(最多3个字母的单词)第1版:
for($s = 'a'; $s <= 'zzzzzzzzzz'; print $s++.PHP_EOL);
26^10 posabilities=141 167 095 653 376,因此可能需要一段时间。@NullUserException这不是问题。关于Tim关于可能需要一段时间的评论:允许每个字符串使用一毫秒,我估计该程序运行大约需要4000年。(事实上,它实际上要长得多)。此外,如果您想将结果输出到磁盘,允许每个字符串有10个字节,则需要12 TB的存储空间。事实上,这更重要,因为你需要对文件进行某种结构,但我试图指出你所问问题的范围。可能的重复,我喜欢16549行中的单词:Dimpressive。。这真的很有表现力@arnaud576875的答案是函数中的函数。这真的是一个简单而有效的答案,谢谢你,麦克尔。根据OP的问题,$s='aaaaaaaa'
可能是他想要的+尽管如此,我还是想得到实际的最佳答案。这两个答案都没有达到你的预期。zz给出了一个到zyz的列表,AAAA只给出了a。第二个列表的速度比快4倍!isset($s[10])
而不是strlen($s)
//modified to include arnaud576875's method of checking exit condition
for($s = 'a'; !isset($s[10]); print $s++.PHP_EOL);
<?php
function makeWord($length, $prefix='')
{
if ($length <= 0)
{
echo $prefix . "\n";
return;
}
foreach(range('a', 'z') as $letter)
{
makeWord($length - 1, $prefix . $letter);
}
}
// Use the function to write the words.
$minSize = 1;
$maxSize = 3;
for ($i = $minSize; $i <= $maxSize; $i++)
{
makeWord($i);
}
?>