Ruby (40 caracteres)
Interprete uma sequência de letras az como um número na base 26, com a = 1, b = 2, ..., z = 26.
Portanto, "senha" pode ser pensada como o número 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 deixarmos s = "a"
(isto é: 1) e fizermos (N-1) chamadas para s.succ!
, s será "password"
(N). Em outras palavras, N = 1 + (N-1).
Para um exemplo que será executado mais rapidamente, para provar que o cálculo de N está correto, considere "pass"
como o destino, onde N é
16*(26**3) +
1*(26**2) +
19*(26**1) +
19*(26**0)
e
s = "a"
(N-1).times { s.succ! }
puts s #== "pass"
Como também queremos imprimir "a"
, precisamos
s = "`"
N.times { print(s.succ! + " ") }
Então, volte para a "senha" completa. N = 129052722140
, deixando:
s=?`;0x1e0c2443dc.times{$><<s.succ!+" "}
Eu procurei por uma forma mais compacta, 129052722140 == 0x1e0c2443db
mas não consegui encontrar uma.
(Atualizado para corrigir a falta de impressão "a"
, graças a Cary.)