রুবি (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"
, ক্যারিকে ধন্যবাদ।)