Frage
Ich habe ein Alphabet-Array mit 24 Zeichen:„A B C D E F G H I J K L M N O P Q R S T U V W X“
Ich möchte alle Fälle sammeln mit:3 einzigartige Charaktere.
Erster Fall:ABC, DEF, GHI, JKL, MNO, PQR, STU, VWX
Lösung
Es gibt eine 1: 1-Beziehung zwischen den Permutationen der Buchstaben des Alphabets und Ihrer Sets.Im Grunde, sobald Sie eine Permutation des Alphabets haben, müssen Sie nur den generationspflichtigen Code anrufen, um die Sets zu erhalten.
Jetzt, 24!Von irgendetwas (das ist 6204484017333239439360000), passt niemals in den Speicher (sei es RAM oder Diskette), so dass das Beste, was Sie tun können, ist, eine Nummer generationspflichtig zu erstellen.Für diesen letzten Schritt finden Sie zum Beispiel Erzeugung von Permutationen nach Lehmer und Howell und die dort zitierten Papiere.
Andere Tipps
Ich hoffe, ich habe Ihre Frage richtig verstanden.Dieser itert über das Alphabet in drei Schleifen und überspringt immer die bereits verwendeten Zeichen.Dann drücke ich das Ergebnis auf $ Ergebnis.
Versuchen Sie jedoch besser das Skript mit nur fünf Buchstaben.) Verwenden von Alls Strlen ($ -Alle-Alphabet) (Willst du jetzt nicht gezählt werden ...) ist unglaublich viel Speicher.
(Ich bin sicher, dass es eine hackige Version gibt, die schneller ist als das, aber das ist am einfachsten, denke ich.)
Das kommt etwas spät, aber für alle anderen, die das lesen:Wenn Sie eine Zeichenfolge in 3-Zeichen-Blöcke aufteilen möchten, versuchen Sie es mit den integrierten PHP-Funktionen str_split() Funktion.Es dauert eine $string
Und $split_length
Streit.Zum Beispiel:
$alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWX';
$grouped = str_split($alphabet, 3);
var_export( $grouped );
Dies gibt das folgende Array aus:
array ( 0 => 'ABC', 1 => 'DEF', 2 => 'GHI',
3 => 'JKL', 4 => 'MNO', 5 => 'PQR',
6 => 'STU', 7 => 'VWX', )
Dies funktioniert für das in der Frage angegebene Beispiel.Wenn Sie jede mögliche Kombination dieser 24 Buchstaben haben möchten, ist die Antwort von Artefacto sinnvoller.