Ruby (40 ตัวอักษร)
ตีความสตริงตัวอักษร az เป็นตัวเลขในฐาน 26 โดยมี = 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"ต้องขอบคุณ Cary)