introduzione
Un array di puntatori è un array L
di numeri interi diversi da zero in cui 0 ≤ L[i]+i < len(L)
vale per tutti gli indici i
(presupponendo l'indicizzazione basata su 0). Diciamo che l'indice i
punta all'indice L[i]+i
. Un array di puntatori è un ciclo se gli indici formano un singolo ciclo di lunghezza len(L)
. Ecco alcuni esempi:
[1,2,-1,3]
non è un array di puntatori, poiché3
non punta a un indice.[1,2,-1,-3]
è un array di puntatori, ma non un ciclo, perché nessun indice punta a-1
.[2,2,-2,-2]
è un array di puntatori, ma non un ciclo, poiché gli indici formano due cicli.[2,2,-1,-3]
è un ciclo.
Ingresso
Il tuo input è un elenco non vuoto di numeri interi diversi da zero, in qualsiasi formato ragionevole. Può essere non ordinato e / o contenere duplicati.
Produzione
L'output deve essere un ciclo che contiene tutti gli interi nell'elenco di input (e possibilmente anche altri numeri interi), contando le molteplicità. Non è necessario che si verifichino nello stesso ordine dell'input e che l'output non deve essere minimo in alcun senso.
Esempio
Per l'input [2,-4,2]
, un output accettabile sarebbe [2,2,-1,1,-4]
.
Regole e punteggio
È possibile scrivere un programma completo o una funzione. Vince il conteggio di byte più basso e non sono consentite scappatoie standard . Includere un paio di esempi di input e output nella tua risposta è apprezzato.
Casi test
Questi sono indicati nel formato 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
, poiché la specifica dice " numeri interi diversi da zero ".