ช่วยด้วย! ฉันเพิ่งเข้าสู่ Stack Exchange แต่ฉันลืมรหัสผ่านของฉัน! ฉันต้องการวิธีการทำงานก่อนที่จะออกจากระบบ
โชคดีที่ฉันเป็นแฮ็คเกอร์ที่ยอดเยี่ยม ไม่เพียง แต่ฉันสามารถค้นหาแฮชของรหัสผ่านของฉัน แต่ฉันยังพบอัลกอริทึมการแฮชของ Stack Exchange! มันต้องใช้ค่า ASCII ของแต่ละหลักคูณด้วยสถานที่ของตัวเลขนั้นแล้วรวมค่าทั้งหมดเหล่านั้นเข้าด้วยกัน ตัวอย่างเช่น:
"135" -> 1*49 + 2*51 + 3*53 = 310
ฉันจำได้ว่ารหัสผ่านของฉันมีความยาว 3 หลักและตัวละครแต่ละตัวมีตัวเลขระหว่าง 0 ถึง 5 รวม (ซึ่งจะตรงกับ regex:) ^[0-5]{3}$
แต่ก็มีความเป็นไปได้ที่จะเดาได้มากเกินไป ฉันต้องการโปรแกรมที่สามารถแปลงแฮชกลับเป็นรหัสผ่านที่เป็นไปได้ แต่แม้จะเป็นแฮ็กเกอร์ผู้เชี่ยวชาญ แต่ฉันไม่สามารถเขียนโค้ดเพื่อช่วยชีวิตฉันได้! ฉันสามารถเขียนแบบทดสอบเหล่านี้ด้วยมือแม้ว่า:
input -> output
288 -> 000 // lowest possible hash
290 -> 200, 010
298 -> 022, 050, 103, 131, 212, 240, 321, 402, 430, 511
318 -> 555 // highest possible hash
คุณหนึ่งคนสามารถเขียนโปรแกรมสำหรับฉันที่จะแฮชและพิมพ์รหัสผ่านที่เป็นไปได้ทั้งหมดที่ฉันสามารถใช้ได้หรือไม่
อินพุตจะสามารถสร้างรหัสผ่านที่ถูกต้องอย่างน้อยหนึ่งรหัสได้เสมอ อนุญาตให้ใช้รูปแบบเอาต์พุตใดก็ได้ตราบใดที่สตริงสามารถระบุได้ชัดเจน ฉันยังไม่ได้กังวลเกี่ยวกับศูนย์ชั้นนำดังนั้นหากรหัสผ่านที่มีศักยภาพเป็น001
ฉันยังจะยอมรับหรือ01
1
โปรดช่วยฉันจากการถูกล็อกจากการแลกเปลี่ยนสแต็ค!
เกณฑ์การให้คะแนน
นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในแต่ละภาษาจะชนะ!
"135" -> 1*49 + 2*51 + 3*53 = 310
54
ฉันสามารถหาเลขศูนย์หน้าได้
1
ค่า Ascii49
ของมันแทนที่จะเป็น48
?