Ruby (40 caratteri)
Interpreta una stringa di lettere az come numero nella base 26, con a = 1, b = 2, ..., z = 26.
Quindi "password" può essere considerata come il numero N =
16*(26**7) +
1*(26**6) +
19*(26**5) +
19*(26**4) +
23*(26**3) +
15*(26**2) +
18*(26**1) +
4*(26**0)
Se lasciamo s = "a"(cioè: 1) e facciamo (N-1) chiamate a s.succ!, s sarà "password"(N). In altre parole, N = 1 + (N-1).
Per un esempio che verrà eseguito più rapidamente, per dimostrare che il calcolo di N è corretto, considerare "pass"come obiettivo, dove N è
16*(26**3) +
1*(26**2) +
19*(26**1) +
19*(26**0)
e
s = "a"
(N-1).times { s.succ! }
puts s #== "pass"
Dal momento che vogliamo stampare "a"anche noi, abbiamo bisogno
s = "`"
N.times { print(s.succ! + " ") }
Quindi torniamo alla "password" completa. N = 129052722140, in partenza:
s=?`;0x1e0c2443dc.times{$><<s.succ!+" "}
Ho cercato una forma più compatta di 129052722140 == 0x1e0c2443dbma non sono riuscito a trovarne una.
(Aggiornato per correggere la mancanza di stampa "a", grazie a Cary.)