Definieren wir eine Klasse von Funktionen. Diese Funktionen werden von den positiven Ganzzahlen auf die positiven Ganzzahlen abgebildet und müssen die folgenden Anforderungen erfüllen:
Die Funktion muss bijektiv sein, dh, jeder Wert wird genau einem Wert zugeordnet.
Sie müssen in der Lage sein, durch wiederholte Anwendung der Funktion oder ihrer Umkehrung von einer positiven Ganzzahl zu einer anderen positiven Ganzzahl zu gelangen.
Schreiben Sie nun einen Code, der eine beliebige Funktion in dieser Klasse für die Eingabe ausführt.
Dies ist eine Code-Golf- Frage, daher werden die Antworten in Bytes bewertet, wobei weniger Bytes besser sind.
1+
sollte lisp hier genau das Richtige tun.Antworten:
Python 3 , 24 Bytes
Probieren Sie es online!
quelle
Python, 22 Bytes
Die geraden Zahlen gehen zur vorherigen geraden Zahl, die ungeraden Zahlen gehen zur nächsten ungeraden Zahl, und die Zuordnung 2 -> 1 verbindet diese beiden.
quelle
JavaScript (ES6), 20 Byte
Karten
... -> 5 -> 3 -> 1 -> 2 -> 4 -> ...
, die ich für gültig halte . Korrigiere mich, wenn ich falsch liege ...quelle
n=>n%2?n+2:n-2||1:2
Haskell, 20 Bytes
Die Beispielfunktion aus dem Kommentar des OP in Haskell. Probieren Sie es online!
quelle
Gelee , 6 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Python 3, 43 Bytes
Probieren Sie es online!
Und umgekehrt auch 43 Bytes:
Probieren Sie es online!
TIO-Links verwenden Dennis 'Testfußcode.
Da jeder eine Methode anwendet, habe ich beschlossen, dass ich anders sein würde. Ich habe also eine eigene Funktion erstellt (obwohl ich wahrscheinlich nicht der erste bin, der sie entdeckt). Diese Funktionen ordnen gerne zu
... 10 -> 7 -> 6 -> 3 -> 2 -> 1 -> 4 -> 5 -> 8 -> 9 -> ...
: Ich kann Ihnen die Handzeichnung zeigen, die ich gemacht habe, um dies zu testen, wenn Sie möchten.Mein Golf-Algorithmus
kann seinwahrscheinlich golffähig - Tipps wären willkommen.Ungolfed-Versionen: Probieren Sie es online!
quelle
05AB1E , 8 Bytes
Probieren Sie es online!
Genau das, was Dennis 'Zeug macht.
Probieren Sie es online!
Orlp's Zeug.
quelle
Mathematica, 21 Bytes
Machen Sie mit, hier gibt es nichts zu sehen ...
quelle
Java (OpenJDK 8) , 22 Byte
Probieren Sie es online!
Ich wünschte, Java hätte einen
**
Potenzierungsoperator. Naja!quelle