Ruby (40 символів)
Інтерпретуйте рядок букв az як число в основі 26, причому a = 1, b = 2, ..., z = 26.
Отже "пароль" можна вважати числом 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)
Якщо ми дозволимо s = "a"
(тобто: 1) і зробимо (N-1) дзвінки до s.succ!
, s буде "password"
(N). Іншими словами, N = 1 + (N-1).
Для прикладу, який буде працювати швидше, щоб довести, що обчислення N є правильним, розглянемо "pass"
як ціль, де N є
16*(26**3) +
1*(26**2) +
19*(26**1) +
19*(26**0)
і
s = "a"
(N-1).times { s.succ! }
puts s #== "pass"
Оскільки ми також хочемо друкувати "a"
, нам це потрібно
s = "`"
N.times { print(s.succ! + " ") }
Тож повернемось до повного "пароля". N = 129052722140
, залишаючи:
s=?`;0x1e0c2443dc.times{$><<s.succ!+" "}
Я полював на більш компактну форму, 129052722140 == 0x1e0c2443db
але не зміг її знайти.
(Оновлено, щоб виправити відсутність друку "a"
, завдяки Кері.)