Wprowadzenie
Tablica wskaźników to tablica L
niezerowych liczb całkowitych, w których obowiązuje 0 ≤ L[i]+i < len(L)
dla wszystkich indeksów i
(przy założeniu indeksowania 0). Mówimy, że indeks i
wskazuje na indeks L[i]+i
. Tablica wskaźników jest pętlą, jeśli indeksy tworzą pojedynczy cykl długości len(L)
. Oto kilka przykładów:
[1,2,-1,3]
nie jest tablicą wskaźników, ponieważ3
nie wskazuje na indeks.[1,2,-1,-3]
jest tablicą wskaźników, ale nie pętlą, ponieważ żaden indeks nie wskazuje na-1
.[2,2,-2,-2]
jest tablicą wskaźników, ale nie pętlą, ponieważ indeksy tworzą dwa cykle.[2,2,-1,-3]
jest pętlą.
Wejście
Twoje dane wejściowe to niepusta lista niezerowych liczb całkowitych, w dowolnym rozsądnym formacie. Może być nieposortowane i / lub zawierać duplikaty.
Wynik
Twoje wyjście powinno być pętlą, która zawiera wszystkie liczby całkowite na liście danych wejściowych (i ewentualnie także inne liczby całkowite), zliczając wielokrotności. Nie muszą występować w tej samej kolejności co na wejściu, a wynik nie musi być w żadnym sensie minimalny.
Przykład
Dla danych wejściowych [2,-4,2]
akceptowalny wynik to [2,2,-1,1,-4]
.
Zasady i punktacja
Możesz napisać pełny program lub funkcję. Wygrywa najniższa liczba bajtów i standardowe luki są niedozwolone. Doceniane jest uwzględnienie w odpowiedzi kilku przykładowych danych wejściowych i wyjściowych.
Przypadki testowe
Są one podane w formacie 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
, ponieważ specyfikacja mówi „ niezerowe liczby całkowite ”.