Hintergrund
In der Mathematik ist bekannt, dass Ganzzahlen in eine Eins-zu-Eins-Entsprechung mit Paaren von Ganzzahlen gesetzt werden können. Es gibt viele Möglichkeiten, dies zu tun, und in dieser Herausforderung implementieren Sie eine davon und ihre inverse Operation.
Die Aufgabe
Ihre Eingabe ist eine positive Ganzzahl n > 0
. Es ist bekannt, dass es eindeutige nicht negative ganze Zahlen gibt, a, b ≥ 0
so dass . Ihre Ausgabe ist die "gespiegelte Version" der positiven Ganzzahl .n == 2a * (2*b + 1)
n
2b * (2*a + 1)
Sie können davon ausgehen, dass die Eingabe und Ausgabe in den Standard-Integer-Datentyp ohne Vorzeichen Ihrer Sprache passen.
Regeln und Wertung
Sie können entweder ein vollständiges Programm oder eine Funktion schreiben. Die niedrigste Byteanzahl gewinnt, und Standardlücken sind nicht zulässig.
Testfälle
Diese sind im Format angegeben in <-> out
, da die zu implementierende Funktion eine eigene Umkehrung ist: Wenn Sie die Ausgabe darauf zurückführen, sollten Sie die ursprüngliche Eingabe erhalten.
1 <-> 1
2 <-> 3
4 <-> 5
6 <-> 6
7 <-> 8
9 <-> 16
10 <-> 12
11 <-> 32
13 <-> 64
14 <-> 24
15 <-> 128
17 <-> 256
18 <-> 48
19 <-> 512
20 <-> 20
28 <-> 40
30 <-> 384
56 <-> 56
88 <-> 224
89 <-> 17592186044416
Bestenliste
Hier ist ein Stack-Snippet, um sowohl eine reguläre Rangliste als auch eine Übersicht der Gewinner nach Sprache zu generieren. Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:
## Language Name, N bytes
Wo N
ist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Wenn Sie mehrere Zahlen in Ihre Kopfzeile aufnehmen möchten (z. B. weil Ihre Punktzahl die Summe von zwei Dateien ist oder wenn Sie die Strafen für Interpreter-Flags separat auflisten möchten), stellen Sie sicher, dass die tatsächliche Punktzahl die letzte Zahl in der Kopfzeile ist:
## Perl, 43 + 2 (-p flag) = 45 bytes
Sie können den Namen der Sprache auch als Link festlegen, der dann im Leaderboard-Snippet angezeigt wird:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes