¡Ayuda! ¡Acabo de iniciar sesión en Stack Exchange, pero olvidé cuál es mi contraseña! Necesito una forma de resolverlo antes de cerrar sesión.
Afortunadamente, soy un excelente hacker. ¡No solo pude encontrar el hash de mi contraseña, sino que también encontré el algoritmo de hash de Stack Exchange! Toma el valor ASCII de cada dígito multiplicado por el lugar de ese dígito, luego suma todos esos valores juntos. Por ejemplo:
"135" -> 1*49 + 2*51 + 3*53 = 310
Recuerdo que mi contraseña tiene 3 dígitos y que cada carácter es un número entre 0 y 5 inclusive (de modo que coincida con la expresión regular:) ^[0-5]{3}$
, pero todavía hay muchas posibilidades de adivinar. Necesito un programa que pueda convertir un hash en contraseñas potenciales, pero a pesar de ser un hacker experto, ¡no puedo codificar para salvar mi vida! Sin embargo, pude escribir estas pruebas a mano:
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
¿Puede uno de ustedes escribir un programa para mí que tome un hash e imprima todas las contraseñas posibles que podría haber usado?
La entrada siempre podrá generar al menos una contraseña válida. Se permite cualquier formato de salida, siempre que las cadenas se puedan identificar claramente. Tampoco me preocupan los ceros a la izquierda, por lo que si existe una contraseña potencial 001
, también aceptaré 01
o 1
.
¡Por favor, ayúdame a no ser bloqueado de Stack Exchange!
Tanteo
Este es el código de golf , por lo que gana la respuesta más corta en cada idioma.
"135" -> 1*49 + 2*51 + 3*53 = 310
54
puedo resolver los ceros al frente.
1
es el valor Ascii en49
lugar de48
?