Ruby (40 Zeichen)
Interpretieren Sie eine Folge von z Buchstaben als Zahl in Basis 26 mit a = 1, b = 2, ..., z = 26.
"Passwort" kann man sich also als die Zahl N = vorstellen
16*(26**7) +
1*(26**6) +
19*(26**5) +
19*(26**4) +
23*(26**3) +
15*(26**2) +
18*(26**1) +
4*(26**0)
Wenn wir s = "a"(das heißt: 1) lassen und (N-1) anrufen, s.succ!ist s "password"(N). Mit anderen Worten ist N = 1 + (N-1).
Um zu beweisen, dass die Berechnung von N korrekt ist, betrachten Sie für ein Beispiel, das schneller ausgeführt wird, "pass"als das Ziel, wo N ist
16*(26**3) +
1*(26**2) +
19*(26**1) +
19*(26**0)
und
s = "a"
(N-1).times { s.succ! }
puts s #== "pass"
Da wir auch drucken wollen "a", brauchen wir
s = "`"
N.times { print(s.succ! + " ") }
Also zurück zum vollen "Passwort". N = 129052722140, Verlassen:
s=?`;0x1e0c2443dc.times{$><<s.succ!+" "}
Ich suchte nach einer kompakteren Form 129052722140 == 0x1e0c2443db, konnte aber keine finden.
(Aktualisiert, um den Mangel an Druck zu beheben "a", dank Cary.)