Как работает кодировка
Дан список битов:
- Держите простое число (начиная с
2
) - Есть список
- Для каждого бита на входе
- Если он такой же, как предыдущий бит, добавьте в список простое число, которое вы держите
- Если это не так, удерживайте следующий штрих и добавьте его в список.
- Вернуть произведение всех чисел в вашем списке
- Для первого бита предположим, что предыдущий бит был
0
Примечание: эти шаги приведены только для иллюстрации, вам не обязательно следовать им.
Примеры
Input: 001
hold 2
0: add 2 to the list
0: add 2 to the list
1: hold 3, add 3 to the list
list: 2,2,3
Output: 12
Input: 1101
hold 2
1: hold 3, add 3 to the list
1: add 3 to the list
0: hold 5, add 5 to the list
1: hold 7, add 7 to the list
list: 3,3,5,7
Output: 315
Еще несколько примеров:
000000000 -> 512
111111111 -> 19683
010101010 -> 223092870
101010101 -> 3234846615
011101101 -> 1891890
000101101010010000 -> 3847834029582062520
Вызов
Напишите кодер и декодер для этого метода кодирования.
(Декодер полностью изменяет процесс кодера).
Ввод, вывод
Кодировщик может принимать входные данные в любом приемлемом формате.
Кодировщик должен вывести либо целое число, либо строку
Декодер должен принимать входные данные в том же формате, что и кодировщик
Декодер должен выводить тот же формат, что и кодер в качестве входных данных.
Другими словами decoder( encoder( input ) ) === input
Примечания
- Декодер может предположить, что его вход декодируется
- Ваш ответ должен иметь дело только с целыми числами, которые ваш язык может изначально поддерживать без использования (
long
,bigInt
и т. Д.), Будет разумно, если ваш язык поддерживает только целые числа до 1, возможно, пересмотрите возможность размещения ответа
счет
Ваша оценка - это сумма длин в байтах кодера и декодера.
Если вам нужно импортировать модуль, импорт может быть подсчитан только один раз при условии, что ваш кодер и декодер могут сосуществовать в одном и том же файле и использоваться повторно (как функции).
Лазейки по умолчанию запрещены.
Это код-гольф, поэтому выигрывает самая короткая оценка для каждого языка.
Ответы:
05AB1E , 13 байтов
Кодировщик, 8 байт
Попробуйте онлайн!
объяснение
Декодер, 5 байт
Попробуйте онлайн!
объяснение
источник
Желе , 17 байт
Кодировщик (10 байт):
Попробуйте онлайн!
Декодер (7 байт):
Попробуйте онлайн!
Как?
Кодер:
декодер:
источник
JavaScript (ES6), 130 байт
I / O: массив битов, целое число
Кодировщик, 71 байт
Попробуйте онлайн!
Декодер, 59 байт
Попробуйте онлайн!
источник
Java 10, 209 байт
Кодировщик, 124 байта
Попробуйте онлайн.
Объяснение:
Декодер, 85 байт
Попробуйте онлайн.
Объяснение:
источник
long
наint
.Шелуха , 18 байт
Кодировщик, 11 байт
Попробуйте онлайн!
Декодер, 7 байт
Попробуйте онлайн!
Как они работают
Кодер:
декодер:
источник
Python 2 ,
234193174 байтаКодер,
11610197 байт:Использует теорему Вильсона .
Попробуйте онлайн!
Декодер
1189277 байт:Попробуйте онлайн!
источник
J , 34 байта
Сильно вдохновлен решением Jone от компании Jonathan Allan's Jelly!
Кодировщик: 23 байта
Попробуйте онлайн!
Мне не нравятся эти многочисленные кепки
[:
- это должно быть пригодно для игры в гольф.Декодер: 11 байт
Попробуйте онлайн!
источник
Желе , 15 байт
Кодировщик, 9 байт
Попробуйте онлайн!
Декодер, 6 байт
Попробуйте онлайн!
источник
C (gcc) ,
180184 байта102 байта - кодировщик
Попробуйте онлайн!
82 байта - декодер
Попробуйте онлайн!
источник
Gol> <> , 29 + 39 = 68 байт
Кодировщик, 29 байт
Попробуйте онлайн!
Декодер, 39 байт
Попробуйте онлайн!
Как это работает
Было бы лучше, если бы я мог поиграть в гольф по следующей петле ...
источник