Einführung
Ein Zeigerarray ist ein Array L
von Ganzzahlen ungleich Null, wobei 0 ≤ L[i]+i < len(L)
für alle Indizes gilt i
(unter der Annahme einer 0-basierten Indizierung). Wir sagen, dass der Index auf den Index i
verweistL[i]+i
. Ein Zeigerarray ist eine Schleife, wenn die Indizes einen einzelnen Zyklus der Länge bilden len(L)
. Hier sind einige Beispiele:
[1,2,-1,3]
ist kein Zeiger-Array, da das3
nicht auf einen Index verweist.[1,2,-1,-3]
ist ein Zeigerarray, aber keine Schleife, da kein Index auf das zeigt-1
.[2,2,-2,-2]
ist ein Zeigerarray, aber keine Schleife, da die Indizes zwei Zyklen bilden.[2,2,-1,-3]
ist eine Schleife.
Eingang
Ihre Eingabe ist eine nicht leere Liste von Ganzzahlen ungleich Null in einem angemessenen Format. Es kann unsortiert sein und / oder Duplikate enthalten.
Ausgabe
Ihre Ausgabe soll eine Schleife sein, die alle Ganzzahlen in der Eingabeliste (und möglicherweise auch andere Ganzzahlen) enthält, wobei Multiplizitäten gezählt werden. Sie müssen nicht in derselben Reihenfolge wie die Eingabe erfolgen, und die Ausgabe muss in keiner Weise minimal sein.
Beispiel
Für die Eingabe [2,-4,2]
wäre eine akzeptable Ausgabe [2,2,-1,1,-4]
.
Regeln und Wertung
Sie können ein vollständiges Programm oder eine Funktion schreiben. Die niedrigste Byteanzahl gewinnt, und Standardlücken sind nicht zulässig. Das Einbeziehen einiger Beispieleingaben und -ausgaben in Ihre Antwort wird geschätzt.
Testfälle
Diese sind im Format angegeben input -> some possible output(s)
.
[1] -> [1,-1] or [1,1,1,-3]
[2] -> [2,-1,-1] or [1,2,-2,-1]
[-2] -> [1,1,-2] or [3,1,2,-2,-4]
[2,-2] -> [2,-1,1,-2] or [2,-1,2,-2,-1]
[2,2,2] -> [2,-1,2,-2,2,-2,-1] or [2,2,2,2,-3,-5]
[2,-4,2] -> [2,2,-1,1,-4] or [2,5,1,1,1,-4,2,-7,-1]
[3,-1,2,-2,-1,-5] -> [2,3,-1,2,-1,-5] or [3,3,-1,-1,2,2,-1,6,1,1,1,1,-12,-5]
[-2,-2,10,-2,-2,-2] -> [10,-1,1,-2,-2,1,-2,-2,1,-2,-2]
[-15,15,-15] -> [15,-1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,-15,-15]
[1,2,3,4,5] -> [1,2,3,-1,4,-1,5,-1,-1,-9,-1,-1]
n = 0
, da in der Spezifikation " Ganzzahlen ungleich Null " steht.