"Подходящие номера"
У Сэма есть «блестящая» идея по сжатию! Вы можете помочь?
Вот краткое изложение схемы сжатия Сэма. Сначала возьмем в качестве базового 10 представление любого натурального числа, строго меньшего 2 ^ 16, и запишем его в виде двоичной строки без начальных нулей.
1 -> 1 9 -> 1001 15 -> 1111 13 -> 1101 16 -> 10000 17 -> 10001 65535 -> 111111111111111
Теперь замените любую группу из одного или нескольких нулей одним нулем. Это потому, что число стало меньше. Ваша двоичная строка теперь будет выглядеть следующим образом.
1 -> 1 -> 1 9 -> 1001 -> 101 15 -> 1111 -> 1111 13 -> 1101 -> 1101 16 -> 10000 -> 10 17 -> 10001 -> 101 65535 -> 111111111111111 -> 111111111111111
Теперь вы преобразуете двоичную строку обратно в базовое 10 представление и выводите ее в любом приемлемом формате. Вот ваши тесты. Первое целое число представляет вход, а последнее целое представляет выход. Обратите внимание, что некоторые числа не меняются, и, таким образом, их можно назвать «соответствовать»
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
Вы можете использовать любой язык, но учтите, что Сэм ненавидит стандартные лазейки. Это кодовый гольф, поэтому код может быть как можно короче, чтобы освободить место для «сжатых» чисел ».
Примечание. Это НЕ приемлемая схема сжатия. Используя это быстро вы получите уволены.
Необходимая цитата: я не беру кредит на эту концепцию. Это взято из блога @Conor O 'Brien здесь, смотрите этот OEIS подходящих чисел. https://oeis.org/A090078
10000
?