Давайте определим класс функций. Эти функции будут отображаться из положительных целых чисел в положительные целые и должны удовлетворять следующим требованиям:
Функция должна быть Bijective, что означает, что каждое значение отображается и сопоставляется ровно одним значением.
Вы должны быть в состоянии получить от любого положительного целого до любого другого положительного целого числа путем повторного применения функции или ее обратного.
Теперь напишите некоторый код, который будет выполнять любую функцию в этом классе на своем входе.
Это вопрос кода игры в гольф, поэтому ответы будут оцениваться в байтах, причем меньше байтов будет лучше.
1+
в общем, lisp должен помочь.Ответы:
Python 3 , 24 байта
Попробуйте онлайн!
источник
Python, 22 байта
Четные числа уменьшаются до предыдущего четного числа, нечетные числа повышаются до следующего нечетного числа, и отображение 2 -> 1 соединяет эти два.
источник
JavaScript (ES6), 20 байт
Карты
... -> 5 -> 3 -> 1 -> 2 -> 4 -> ...
, которые я считаю действительными. Поправьте меня если я ошибаюсь...источник
n=>n%2?n+2:n-2||1:2
Haskell, 20 байтов
Пример функции из комментария ОП в Haskell. Попробуйте онлайн!
источник
Желе , 6 байт
Попробуйте онлайн!
Как это устроено
источник
Python 3, 43 байта
Попробуйте онлайн!
И обратное, также 43 байта:
Попробуйте онлайн!
Ссылки TIO используют тестовый нижний колонтитул Денниса.
Поскольку все используют один и тот же способ, я решил, что буду отличаться, поэтому я создал собственную (хотя я, вероятно, не первый, кто обнаружил это) функцию. Это функции карты как
... 10 -> 7 -> 6 -> 3 -> 2 -> 1 -> 4 -> 5 -> 8 -> 9 -> ...
, я могу показать вам чертеж руки, который я сделал, чтобы проверить это, если хотите.Мой алгоритм игры в гольф
может быть,вероятно, пригоден для игры в гольф - советы будут оцененыБеззвучные версии: попробуйте онлайн!
источник
05AB1E , 8 байтов
Попробуйте онлайн!
Именно то, что делают вещи Денниса.
Попробуйте онлайн!
Орлп вещи
источник
Mathematica, 21 байт
Двигайся, здесь нечего видеть ...
источник
Java (OpenJDK 8) , 22 байта
Попробуйте онлайн!
Я бы хотел, чтобы у Java был
**
оператор возведения в степень. Ну что ж!источник