2011-09-01 6 views
4

가능한 중복 :
Generate all combinations of arbitrary alphabet up to arbitrary lengthPHP에서 가능한 모든 단어를 작성하는 방법은 무엇입니까?

나는 쓰기를 만들기 위해 노력하고있어 PHP에서 10 개 문자 (zzzzzzzzzz)의 모든 가능한 단어. 어떻게해야합니까? 그것은 그 다음과 같이 표시됩니다

http://i.imgur.com/sgUnL.png 나는 그것에 몇 가지 방법을 시도하지만, 그들은 단지 한 편지에서 증가하지 무작위로 10 개 문자를하고 있습니다. 그런데 실행 시간과 방법은 큰 문제가 아닙니다. 난 그냥 .. 누군가가 물론 더 도움이 될 것입니다 코드로 보여 주면, 그것을 위해 산법 필요

+12

26^10 개의 가능성 = 141 167 095 653 376, 시간이 걸릴 수 있도록. –

+0

모두 낮습니까? – NullUserException

+0

@ NullUserException 문제가되지 않습니다. – xecute

답변

6

버전 1 : 아래의 의견에 바울이 언급 한 바와 같이

for($s = 'a'; $s <= 'zzzzzzzzzz'; print $s++.PHP_EOL); 

것은, 이것은 단지로 이동합니다 zzzzzzzzyz. 비트 (사람이 관심 경우) 느리지 만 올바른 버전은 다음과 같습니다

//modified to include arnaud576875's method of checking exit condition 
for($s = 'a'; !isset($s[10]); print $s++.PHP_EOL); 
+0

인상적이다. 그것은 정말로 성능 적이다. @ arnaud576875의 답변은 기능상의 기능입니다. 이것은 정말 간단하고 성과가 좋은 대답입니다, 감사합니다. – xecute

+0

OP의 질문에 따르면'$ s = 'aaaaaaaaaa'는 아마도 그가 원하는 것일 것입니다. 그럼에도 불구하고 실제로 가장 좋은 대답은 +1입니다. – netcoder

+2

이들 중 어느 것도 기대하는 바를하지 않습니다. zz는 zyz로가는 목록을 제공하고 aaaaaaaaaa는 a만을 제공합니다. – Paul

7
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); 

는 여기를보십시오 : http://codepad.org/zdTGLtjY을 (즉 최대로 3 글자)

+0

나는 행 16549에있는 단어를 좋아한다 : D – hoppa

0
<?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); 
} 

?> 
관련 문제