Как работает кодировка
Дан список битов:
- Держите простое число (начиная с
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, возможно, пересмотрите возможность размещения ответа
счет
Ваша оценка - это сумма длин в байтах кодера и декодера.
Если вам нужно импортировать модуль, импорт может быть подсчитан только один раз при условии, что ваш кодер и декодер могут сосуществовать в одном и том же файле и использоваться повторно (как функции).
Лазейки по умолчанию запрещены.
Это код-гольф, поэтому выигрывает самая короткая оценка для каждого языка.