Sie sollten ein Programm oder eine Funktion schreiben, die eine nicht negative Ganzzahl N
als Eingabe und Ausgabe verwendet oder zwei Ganzzahlen (negativ, null oder positiv) X
und zurückgibt Y
.
Ganzzahlen sind im mathematischen Sinne gemeint, da es unendlich viele davon gibt.
Die implementierte Funktion muss bijektiv sein . Dies bedeutet, dass für jedes N
ein anderes X
Y
Paar X
Y
ausgegeben werden muss und jedes Paar für eine Eingabe ausgegeben werden sollte, dh für einige sollten N
alle folgenden Paare ausgegeben werden N
:
...
┌─────┬─────┬────┬────┬────┐
│-2 -2│-2 -1│-2 0│-2 1│-2 2│
├─────┼─────┼────┼────┼────┤
│-1 -2│-1 -1│-1 0│-1 1│-1 2│
├─────┼─────┼────┼────┼────┤
... │0 -2 │0 -1 │0 0 │0 1 │0 2 │ ...
├─────┼─────┼────┼────┼────┤
│1 -2 │1 -1 │1 0 │1 1 │1 2 │
├─────┼─────┼────┼────┼────┤
│2 -2 │2 -1 │2 0 │2 1 │2 2 │
└─────┴─────┴────┴────┴────┘
...
Beachten Sie, dass U V
und V U
verschiedene Paare sind, wenn U!=V
.
Einzelheiten
- Wenn Ihre Sprache keine willkürlich großen Ganzzahlen unterstützt, ist dies in Ordnung, aber Ihr Algorithmus sollte mit einem willkürlich großen Ganzzahldatentyp arbeiten. Ihr Code sollte mindestens noch Eingabewerte unterstützen
2^31-1
. - Wenn Sie die Ausgabe als Zeichenfolge drucken oder zurückgeben möchten, sind keine führenden Zeichen
0
oder+
Zeichen zulässig. Andernfalls ist die standardmäßige Ganzzahldarstellung Ihrer Sprache in Ordnung.
Beispiel
Wenn die Aufgabe darin bestehen würde, eine bijektive Funktion zu erstellen, die eine nicht negative Ganzzahl verwendet N
und eine Ganzzahl ausgibt, X
könnte eine Lösung die Funktion sein
if (input mod 2 == 0) return N/2 else return -(N+1)/2
,
in einer Sprache implementiert. Diese Funktion gibt X = 0 -1 1 -2 2...
für zurück N = 0 1 2 3 4...
.
10=>11 12, 9=>10 11
ist das ungültig, weil 11 wiederholt wird?