Introdução
Uma matriz de ponteiro é uma matriz L
de números inteiros diferentes de zero, onde 0 ≤ L[i]+i < len(L)
é válida para todos os índices i
(assumindo a indexação baseada em 0). Dizemos que o índice i
aponta para o índice L[i]+i
. Uma matriz de ponteiros é um loop se os índices formarem um único ciclo de duração len(L)
. aqui estão alguns exemplos:
[1,2,-1,3]
não é uma matriz de ponteiro, porque3
não aponta para um índice.[1,2,-1,-3]
é uma matriz de ponteiro, mas não um loop, porque nenhum índice aponta para o-1
.[2,2,-2,-2]
é uma matriz de ponteiros, mas não um loop, porque os índices formam dois ciclos.[2,2,-1,-3]
é um loop.
Entrada
Sua entrada é uma lista não vazia de números inteiros diferentes de zero, em qualquer formato razoável. Pode ser não classificado e / ou conter duplicatas.
Resultado
Sua saída deve ser um loop que contém todos os números inteiros na lista de entradas (e possivelmente outros números inteiros também), contando as multiplicidades. Eles não precisam ocorrer na mesma ordem que na entrada e a saída não precisa ser mínima em nenhum sentido.
Exemplo
Para a entrada [2,-4,2]
, uma saída aceitável seria [2,2,-1,1,-4]
.
Regras e pontuação
Você pode escrever um programa completo ou uma função. A contagem de bytes mais baixa vence e as brechas padrão não são permitidas. A inclusão de alguns exemplos de entradas e saídas em sua resposta é apreciada.
Casos de teste
Estes são dados no 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 a especificação diz " números inteiros diferentes de zero ".