문제

나는 알파벳 편 24 특성:"A B C D E F G H I J K L M N O P Q R S T U V W X"

내가 원하는 모든 경우:3 독특한 문자입니다.

첫 번째 경우:ABC,DEF,GHI,JKL,MNO,PQR,스튜,VWX

도움이 되었습니까?

해결책

가 1:1 사이의 관계열을 표시하는 알파벳과 당신의 세트 목록이 있습니다.기본적으로,당신은 알파벳의 순열,당신은 전화 array_chunk 을 얻을 설정합니다.

지금,24!의 아무것도(즉 620448401733239439360000)이지 메모리에 맞(수 RAM 또는 디스크),그래서 당신이 할 수 있는 최고의 숫자를 생성 n124! (en 수)그리고 생성하는 그러한 순열.에 대한 이 마지막 단계,예를 들어,참조 세대의 순열은 다음과 웰 Lehmer 고의 논문이 많습니다.

다른 팁

$alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$c = strlen($alphabet);
$result = array();

for ($i = 0; $i < $c; ++$i) {
    $current0 = $i;
    for ($j = 0; $j < $c; ++$j) {
        if ($current0 == $j) continue;
        $current1 = $j;
        for ($k = 0; $k < $c; ++$k) {
            if (isset($current0 == $k || $current1 == $k)) continue;
            $result[] = $alphabet[$i].$alphabet[$j].$alphabet[$k];
        }
    }
}
.

나는 당신의 질문을 옳은 것을 알고 있기를 바랍니다.이 하나는 3 개의 루프에서 알파벳을 반복하고 항상 이미 사용되는 문자를 건너 뜁니다.그런 다음 결과를 $ 결과로 밀어 넣습니다.

그러나 5 개의 글자로 스크립트를 시도하십시오.) alls strlen ($ 알파벳) (지금 셀 수 없어 ...)을 사용하여 믿을 수 없을만큼 많은 메모리가 필요합니다.

(나는 그보다 더 빨리의 해킹 버전이 있다고 확신합니다. 그러나 이것은 내가 생각하는 것이 가장 간단합니다.)

이것은 조금 늦은 것입니다. 그러나이 부분을 읽는 다른 누구에게는 문자열을 3 자의 덩어리로 분할하려는 경우 PHP가 str_split () 기능.$string$split_length 인수를 사용합니다.예 :

$alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWX';
$grouped  = str_split($alphabet, 3);

var_export( $grouped );
.

이것은 다음 배열을 출력합니다.

array ( 0 => 'ABC', 1 => 'DEF', 2 => 'GHI', 
        3 => 'JKL', 4 => 'MNO', 5 => 'PQR', 
        6 => 'STU', 7 => 'VWX', )
.

이 문제에 주어진 예제에서 작동합니다.24 글자의 가능한 모든 조합을 원한다면 Artefacto의 대답은 더 의미가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top