Aidez-moi! Je viens de me connecter à Stack Exchange, mais j'ai oublié mon mot de passe! J'ai besoin d'un moyen de le résoudre avant de me déconnecter.
Heureusement, je suis un excellent hacker. Non seulement j'ai pu trouver le hachage de mon mot de passe, mais j'ai également trouvé l'algorithme de hachage de Stack Exchange! Il prend la valeur ASCII de chaque chiffre multipliée par la place de ce chiffre, puis additionne toutes ces valeurs ensemble. Par exemple:
"135" -> 1*49 + 2*51 + 3*53 = 310
Je me souviens que mon mot de passe comporte 3 chiffres et que chaque caractère est un nombre compris entre 0 et 5 inclus (de telle sorte qu'il correspondra à l'expression régulière:) ^[0-5]{3}$
, mais c'est encore trop de possibilités à deviner. J'ai besoin d'un programme qui peut reconvertir un hachage en mots de passe potentiels, mais en dépit d'être un pirate expert, je ne peux pas coder pour me sauver la vie! J'ai cependant pu écrire ces tests à la main:
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
Est-ce que l'un de vous peut écrire un programme pour moi qui comprendra un hachage et imprimera tous les mots de passe possibles que j'aurais pu utiliser?
L'entrée pourra toujours produire au moins un mot de passe valide. Tout format de sortie est autorisé, tant que les chaînes peuvent être clairement identifiées. Je ne m'inquiète pas non plus des zéros non significatifs, donc si un mot de passe potentiel est 001
, j'accepte 01
ou1
.
Aidez-moi à ne pas être bloqué sur Stack Exchange!
Notation
C'est le code-golf , donc la réponse la plus courte dans chaque langue gagne!
"135" -> 1*49 + 2*51 + 3*53 = 310
54
je peux travailler les zéros devant.
1
la valeur Ascii49
de48
?