"Ajustar números"
Sam tem uma idéia "brilhante" para compactação! Você pode ajudar?
Aqui está um resumo do esquema de compactação de Sam. Primeiro, pegue uma representação da base 10 de qualquer número natural estritamente menor que 2 ^ 16 e escreva-a como uma sequência binária sem zeros à esquerda.
1 -> 1 9 -> 1001 15 -> 1111 13 -> 1101 16 -> 10000 17 -> 10001 65535 -> 111111111111111
Agora substitua qualquer grupo de um ou mais zeros por um único zero. Isso ocorre porque o número ficou menor. Sua string binária agora ficará assim.
1 -> 1 -> 1 9 -> 1001 -> 101 15 -> 1111 -> 1111 13 -> 1101 -> 1101 16 -> 10000 -> 10 17 -> 10001 -> 101 65535 -> 111111111111111 -> 111111111111111
Agora você converte a string binária de volta para uma representação da base 10 e a produz em qualquer formato aceitável. Aqui estão seus casos de teste. O primeiro número inteiro representa uma entrada e o último número inteiro representa uma saída. Observe que alguns números não mudam e, portanto, podem ser chamados de "ajuste"
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
Você pode usar qualquer idioma, mas observe que Sam odeia brechas padrão. Este é o código golf, portanto o código pode ser o mais curto possível para liberar espaço para os números "compactados".
Nota: Este NÃO é um esquema de compactação aceitável. Usando isso, você será imediatamente demitido.
Necessidade de citação: Não aceito crédito por esse conceito. Isso vem do blog de @Conor O 'Brien aqui, veja este OEIS de números adequados. https://oeis.org/A090078
10000
?