রুবি (40 অক্ষর)
অ্যাস অক্ষরের একটি স্ট্রিংকে a = 1, b = 2, ..., z = 26 সহ বেস 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) এবং আমরা (এন -1) কল করি s.succ!, এস হবে "password"(এন)। অন্য কথায়, এন = 1 + (এন -1)।
উদাহরণস্বরূপ যা আরও দ্রুত চলবে, এন এর গণনা সঠিক প্রমাণ করতে, "pass"লক্ষ্য হিসাবে বিবেচনা করুন, যেখানে এন is
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", ক্যারিকে ধন্যবাদ।)