Vamos definir uma classe de funções. Essas funções serão mapeadas dos inteiros positivos para os inteiros positivos e devem atender aos seguintes requisitos:
A função deve ser bijetiva, o que significa que todo valor é mapeado para e é mapeado para exatamente um valor.
Você deve ser capaz de passar de qualquer número inteiro positivo para qualquer outro número positivo por aplicações repetidas da função ou seu inverso.
Agora, escreva algum código que execute qualquer função nesta classe em sua entrada.
Esta é uma questão de código-golfe, para que as respostas sejam pontuadas em bytes, com menos bytes sendo melhores.
1+
o lisp comum deve fazer o truque aqui.Respostas:
Python 3 , 24 bytes
Experimente online!
fonte
Python, 22 bytes
Os números pares vão para o número par anterior, os números ímpares vão para o próximo número ímpar e o mapeamento 2 -> 1 conecta esses dois.
fonte
JavaScript (ES6), 20 bytes
Mapas
... -> 5 -> 3 -> 1 -> 2 -> 4 -> ...
, o que acho válido. Corrija-me se eu estiver errado...fonte
n=>n%2?n+2:n-2||1:2
Haskell, 20 bytes
A função de exemplo do comentário do OP em Haskell. Experimente online!
fonte
Gelatina , 6 bytes
Experimente online!
Como funciona
fonte
Python 3, 43 bytes
Experimente online!
E o inverso, também 43 bytes:
Experimente online!
Os links TIO usam o código do rodapé de teste de Dennis.
Como todo mundo está usando uma maneira de fazer, eu decidi que seria diferente, então criei por conta própria (embora provavelmente não seja a primeira pessoa a descobri-la) a função. Isso funciona como mapas
... 10 -> 7 -> 6 -> 3 -> 2 -> 1 -> 4 -> 5 -> 8 -> 9 -> ...
, eu posso mostrar o desenho que fiz para testar isso, se você quiser.Meu algoritmo de golfe
pode serprovavelmente jogável - dicas serão apreciadas.Versões ungolfed: Experimente online!
fonte
05AB1E , 8 bytes
Experimente online!
Exatamente o que as coisas de Dennis fazem.
Experimente online!
coisas do orlp.
fonte
Mathematica, 21 bytes
Siga em frente, nada para ver aqui ...
fonte
Java (OpenJDK 8) , 22 bytes
Experimente online!
Eu gostaria que o Java tivesse um
**
operador de exponenciação. Ah bem!fonte