Aiuto! Ho appena effettuato l'accesso a Stack Exchange, ma ho dimenticato quale sia la mia password! Ho bisogno di un modo per risolverlo prima di disconnettermi.
Fortunatamente, sono un eccellente hacker. Non solo sono riuscito a trovare l'hash della mia password, ma ho anche trovato l'algoritmo di hashing di Stack Exchange! Prende il valore ASCII di ogni cifra moltiplicato per la posizione di quella cifra, quindi somma tutti questi valori insieme. Per esempio:
"135" -> 1*49 + 2*51 + 3*53 = 310
Ricordo che la mia password è lunga 3 cifre e che ogni carattere ha un numero compreso tra 0 e 5 inclusi (in modo che corrisponda alla regex:) ^[0-5]{3}$, ma sono ancora troppe possibilità da indovinare. Ho bisogno di un programma in grado di convertire un hash in potenziali password, ma nonostante sia un hacker esperto, non posso programmare per salvarmi la vita! Sono stato in grado di scrivere questi test a mano però:
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
Uno di voi può scrivere un programma per me che prenderà un hash e stamperà tutte le possibili password che avrei potuto usare?
L'input sarà sempre in grado di produrre almeno una password valida. È consentito qualsiasi formato di output, purché le stringhe possano essere chiaramente identificate. Inoltre non sono preoccupato per gli zero iniziali, quindi se una potenziale password è 001, accetterò anche 01o 1.
Ti prego, aiutami a essere bloccato fuori dallo scambio di stack!
punteggio
Questo è code-golf , quindi vince la risposta più breve in ogni lingua!
"135" -> 1*49 + 2*51 + 3*53 = 310
54posso calcolare gli zero davanti.
1valore di Ascii non è49invece di48?