"Придатні номери"
У Сем є "блискуча" ідея для стиснення! Ви можете допомогти?
Ось такий спосіб стиснення схеми стиснення Сема. Спочатку візьміть у базу 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 »Брайна тут побачити цей OEIS прилягання чисел. https://oeis.org/A090078
10000
?