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

War es hilfreich?

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

generasacodicetagpre.

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top