Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用php编写所有可能的单词?_Php_Arrays_Letter - Fatal编程技术网

如何用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);
}

?>