В области математики, изучающей бесконечность, хорошо известно, что декартово произведение любого конечного числа счетных множеств также счетно .
Ваша задача - написать две программы для реализации этого, одну для отображения из списка в целое число, одну для отображения из целого в список.
Ваша функция должна быть биективной и детерминированной, то есть 1
она всегда будет отображаться в определенном списке и 2
всегда будет отображаться в другом определенном списке и т. Д.
Ранее мы отображали целые числа в список, состоящий только из 0
и 1
.
Однако теперь список будет состоять из неотрицательных чисел.
Спекуляции
- Программа / функция, разумный формат ввода / вывода.
- Независимо от того, начинаются ли отображенные целые числа с
1
или начинаются0
по вашему выбору, это означает, что0
они не должны (но могут) отображаться на что-либо. - Пустой массив
[]
должен быть закодирован. - Вход / выход может быть в любой базе.
- Совместное использование кода между двумя функциями допускается .
счет
Это код-гольф . Самый низкий балл побеждает.
Оценка - это сумма длин (в байтах) двух программ / функций.
code-golf
set-theory
Дрянная Монахиня
источник
источник
N^inf -> N
?Ответы:
Желе ,
1816 байтовСписок в целое число,
108 байтОтображает списки неотрицательных целых чисел в положительные целые числа. Попробуйте онлайн!
Целое число в списке, 8 байт
Отображает положительные целые числа в списки неотрицательных целых чисел. Попробуйте онлайн!
Фон
Пусть p 0 , p 1 , p 2 , ⋯ - последовательность простых чисел в порядке возрастания.
Для каждого списка неотрицательных целых чисел A: = [a 1 , ⋯, a n ] мы отображаем A в p 0 z (A) p 1 a 1 ⋯ p n a n , где z (A) - число конечные нули A .
Перевернуть вышеуказанную карту в прямом смысле. Для положительного целого числа k мы однозначно разлагаем его как произведение последовательных простых степеней n = p 0 α 0 p 1 α 1 ⋯ p n α n , где α n > 0 , затем восстанавливаем список как [α 1 , ⋯, α n ] , добавляя α 0 к нулю.
Как это работает
Список в целое число
Целое число в списке
Пример вывода
Первые сто положительных целых чисел отображаются в следующих списках.
источник
Python 2, 88 байт
Демо-версия:
Python 2, 130 байт
Вот более «эффективное» решение, в котором длина в битах на выходе является линейной по длине в битах на входе, а не экспоненциальной.
источник
e
чтобы быть обратным дляd
:e=lambda l,i=0:l!=d(i)and-~e(l,i+1)
.Python 2,
204202 байтаРаботает путем многократного применения биекции Z + x Z + <-> Z + с добавлением длины списка.
источник
e
- список в целое число,d
целое число в список (кодирование / декодирование).Сетчатка, 17 + 23 = 40 байт
Из списка в целое число:
Попробуйте онлайн!
От целого числа до списка:
Попробуйте онлайн!
Использует алгоритм Kaseorg .
источник