Introducción
Una matriz de punteros es una matriz L
de enteros distintos de cero donde se 0 ≤ L[i]+i < len(L)
mantienen todos los índices i
(suponiendo una indexación basada en 0). Decimos que el índice i
apunta al índice L[i]+i
. Una matriz de punteros es un bucle si los índices forman un solo ciclo de longitud len(L)
. Aquí hay unos ejemplos:
[1,2,-1,3]
no es una matriz de punteros, porque3
no apunta a un índice.[1,2,-1,-3]
es una matriz de punteros, pero no un bucle, porque ningún índice apunta a-1
.[2,2,-2,-2]
es una matriz de punteros, pero no un bucle, porque los índices forman dos ciclos.[2,2,-1,-3]
Es un bucle.
Entrada
Su entrada es una lista no vacía de enteros distintos de cero, en cualquier formato razonable. Puede estar sin clasificar y / o contener duplicados.
Salida
Su salida será un bucle que contiene todos los enteros en la lista de entrada (y posiblemente también otros enteros), contando las multiplicidades. No necesitan ocurrir en el mismo orden que en la entrada, y la salida no necesita ser mínima en ningún sentido.
Ejemplo
Para la entrada [2,-4,2]
, una salida aceptable sería [2,2,-1,1,-4]
.
Reglas y puntaje
Puede escribir un programa completo o una función. El conteo de bytes más bajo gana, y las lagunas estándar no se permiten. Se agradece incluir un par de entradas y salidas de ejemplo en su respuesta.
Casos de prueba
Estos se dan en el 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
, porque la especificación dice " enteros distintos de cero ".