Membantu! Saya baru saja masuk ke Stack Exchange, tetapi saya lupa kata sandi saya! Saya perlu cara untuk menyelesaikannya sebelum saya logout.
Untungnya, saya adalah peretas yang hebat. Tidak hanya saya dapat menemukan hash kata sandi saya, tetapi saya juga menemukan algoritma hashing Stack Exchange! Dibutuhkan nilai ASCII dari setiap digit dikalikan dengan tempat digit itu, lalu menjumlahkan semua nilai itu bersama-sama. Sebagai contoh:
"135" -> 1*49 + 2*51 + 3*53 = 310
Saya ingat kata sandi saya panjangnya 3 digit, dan setiap karakter adalah angka antara 0 dan 5 inklusif (sehingga akan cocok dengan regex:) ^[0-5]{3}$
, tapi itu masih terlalu banyak kemungkinan untuk ditebak. Saya memerlukan sebuah program yang dapat mengubah hash kembali menjadi kata sandi potensial, tetapi meskipun merupakan seorang peretas ahli, saya tidak dapat kode untuk menyelamatkan hidup saya! Saya bisa menulis tes ini dengan tangan:
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
Bisakah salah satu dari Anda menulis sebuah program untuk saya yang akan mengambil hash dan mencetak semua kata sandi yang mungkin bisa saya gunakan?
Input akan selalu dapat menghasilkan setidaknya satu kata sandi yang valid. Semua format output diperbolehkan, selama string dapat diidentifikasi dengan jelas. Saya juga tidak khawatir tentang memimpin nol, jadi jika kata sandi potensial 001
, saya juga akan menerima 01
atau 1
.
Tolong bantu saya agar tidak dikunci dari Stack Exchange!
Mencetak gol
Ini kode-golf , jadi jawaban tersingkat di setiap bahasa menang!
"135" -> 1*49 + 2*51 + 3*53 = 310
54
saya bisa menghitung nol di depan.
1
's nilai Ascii49
bukan48
?