2016-04-04 9 views
-1

Wie würde man jede einzelne mögliche Zeichenkombination (zwischen 8 und 16) mit den Zeichen AZ (Groß- und Kleinbuchstaben) und ausgeben Zahlen 0-9, wobei auch einige Sonderzeichen wie Unterstriche und Dollarzeichen verwendet werden.Ruby Ausgabe jedes möglichen Zeichens (AZ, az, 0-9) zwischen 8 und 16 Zeichen lang

+7

Wie viele Jahre müssen Sie dieses Programm ausführen? Es gibt 62^16 Möglichkeiten hier. Das sind etwa 1,5 Billionen Jahre bei einer Milliarde Iterationen pro Sekunde. – tadman

+0

Willkommen bei Stack Overflow. Welche Anstrengung hast du hier neben der Frage getan? Ist das eine Aufgabe? –

Antwort

1

Wie @tadman sagte, wird dies nicht innerhalb der Laufzeit unseres Sonnensystems abgeschlossen ist, aber in der Theorie, könnte man es, wie dies zu erreichen:

chars = [*:A..:Z, *:a..:z, *0..9, ?$, ?_] 

(8..16).each do |n| 
    chars.permutation(n) do |a| 
    puts a.join 
    end 
end 

Wenn Sie die Anzahl der Zeilen der Ausgabe berechnet werden soll vor Beginn:

(8..16).reduce(0) {|sum,n| sum + chars.permutation(n).size } 

Hinweis: Es gibt vier Array Methoden für die "Kombinationen" von Zeichen erhalten: permutation, combination, repeated_permutation und repeated_combination. Sie sollten die Dokumentation prüfen oder mit ihnen experimentieren, um sicherzustellen, dass Sie die richtigen Kombinationen erhalten.

Verwandte Themen