Ruby (40 karakter)
Menafsirkan string huruf az sebagai angka dalam basis 26, dengan a = 1, b = 2, ..., z = 26.
Jadi "kata sandi" dapat dianggap sebagai angka 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)
Jika kami membiarkan s = "a"(yaitu: 1) dan kami melakukan (N-1) panggilan kes.succ! , s akan menjadi "password"(N). Dengan kata lain, N = 1 + (N-1).
Untuk contoh yang akan berjalan lebih cepat, untuk membuktikan perhitungan N sudah benar, anggap "pass"sebagai target, di mana N berada
16*(26**3) +
1*(26**2) +
19*(26**1) +
19*(26**0)
dan
s = "a"
(N-1).times { s.succ! }
puts s #== "pass"
Karena kami ingin mencetak "a"juga, kami perlu
s = "`"
N.times { print(s.succ! + " ") }
Jadi kembali ke "kata sandi" penuh. N = 129052722140, pergi:
s=?`;0x1e0c2443dc.times{$><<s.succ!+" "}
Saya mencari bentuk yang lebih ringkas 129052722140 == 0x1e0c2443dbtetapi tidak dapat menemukannya.
(Diperbarui untuk memperbaiki kekurangan pencetakan "a", terima kasih kepada Cary.)