visto che ha suscitato interesse, ecco alcune conclusioni riguardo a questo post http://forum.html.it/forum/showthrea...readid=1006817 di Jabjoint
Per ora ho trovato la seguente logica, non ancora completa, ma ci sono quasi. Occorre un esempio con almeno 50 caratteri per completarla:
- Trasformare tutti i caratteri in intero (è + semplice da leggere così che in esadecimale)
- Fare la differenza tra ogni carattere ed il suo successivo
- Ad ogni differenza viene associato un valore secondo la seguente tabella:
- se l'ultimo carattere che ho scritto in output è "7a" (ovvero 122 in decimale) e la differenza tra il suo carattere corrispondente e quello successivo è +4, allora sommo 26 (vedi tabella), quindi 122 + 26 = 148, ovvero "94" in esadecimale (che è il carattere da scrivere in output).codice:+15 => 37 +14 => 36 + 1 => 29 o 23 (???) + 4 => 26 - 1 => 20 - 9 => 13 o 15 - 5 => 11 -15 => 7 -16 => 6 -19 => 3
- se nella somma appena descritta supero 255, allora rincomincio da zero. Se per esempio in decimale ho 152 e devo aggiungere 10, il carattere in output è 7. (Forse è + semplice non ricominciare da zero e vederlo come "(152+10) Mod 255 = 7")
Nella tabella si vede una logica matematica (ancora da definire bene), che appare evidente guardando i primi e gli ultimi elementi.
Alcune differenze (come +4 e +14) le ho trovate nel file diverse volte, e sempre il valore aggiunto corrisponde.
Ancora non ho capito le due eccezioni, ovvero le differenze +1 e -9
La differenza +1 nel file postato esiste per ben 4 volte: le prime due volte si trovano tra i caratteri 1 e 10 e danno come risultato 29, le altre due volte si trovano tra i caratteri 11 e 20 e danno come risultato 23.
Il discorso è simile per la differenza -9, una volta si trova tra i caratteri 1 e 10, la seconda volta oltre il carattere 20.
Immaginando di dividere il file in gruppi di 10 caratteri, quando le stesse differenze si trovano nello stesso gruppo allora il valore associato corrisponde sempre!
Infatti i due valori di +4 si trovano nella stessa decina (gruppo di 10 caratteri), i due valori di +14 si trovano nella stessa decina, e i valori di +1 che si trovano nella stessa decina, come detto sopra, danno lo stesso risultato.
Dopo queste considerazioni l'algoritmo non può essere ritenuto valido in quanto facile da tradurre. Un buon algoritmo non riesci a tradurlo nemmeno con decine di files di esempio.
Per questo credo che con 50 caratteri si può già dire tutto, completare la tabella è capire la logica dei gruppi...
![]()