"Adatta numeri"
Sam ha un'idea "geniale" per la compressione! Puoi aiutare?
Ecco un riassunto dello schema di compressione di Sam. Prima prendi una rappresentazione in base 10 di qualsiasi numero naturale strettamente inferiore a 2 ^ 16 e scrivilo come stringa binaria senza zeri iniziali.
1 -> 1 9 -> 1001 15 -> 1111 13 -> 1101 16 -> 10000 17 -> 10001 65535 -> 111111111111111
Ora sostituisci qualsiasi gruppo di uno o più zeri con un singolo zero. Questo perché il numero è diventato più snello. La tua stringa binaria ora avrà questo aspetto.
1 -> 1 -> 1 9 -> 1001 -> 101 15 -> 1111 -> 1111 13 -> 1101 -> 1101 16 -> 10000 -> 10 17 -> 10001 -> 101 65535 -> 111111111111111 -> 111111111111111
Ora converti la stringa binaria in una rappresentazione di base 10 e la emetti in qualsiasi formato accettabile. Ecco i tuoi casi di test. Il primo numero intero rappresenta un input e l'ultimo numero intero rappresenta un output. Nota che alcuni numeri non cambiano e quindi possono essere chiamati "adatti"
1 -> 1 -> 1 -> 1 9 -> 1001 -> 101 -> 5 15 -> 1111 -> 1111 -> 15 13 -> 1101 -> 1101 -> 13 16 -> 10000 -> 10 -> 2 17 -> 10001 -> 101 -> 5 65535 -> 1111111111111111 -> 1111111111111111 -> 65535 65000 -> 1111110111101000 -> 11111101111010 -> 16250
Puoi usare qualsiasi lingua, ma tieni presente che Sam odia le scappatoie standard. Questo è il codice golf, quindi il codice può essere il più breve possibile per fare spazio ai numeri "compressi".
Nota: questo NON è uno schema di compressione accettabile. L'uso di questo ti farà immediatamente licenziare.
Citation-Needed: non mi merito per questo concetto. Questo viene dal blog di @Conor O 'Brien qui vedi questo OEIS di numeri adeguati . https://oeis.org/A090078
10000
?