Introdução
Neste desafio, sua tarefa é simular um certo tipo de jogo de eliminação. No jogo, os participantes ficam em círculo e todos estão segurando um número inteiro. Em cada rodada do jogo, cada participante aponta para a pessoa nque se afasta, se né o número que está segurando. Se né positivo, conta à direita, se né negativo, conta à esquerda e, se nfor zero, aponta para si. Todo participante que tem alguém apontando para eles é eliminado e sai do círculo; isso termina a rodada. As rodadas continuam até que não haja mais participantes.
Entrada
Sua entrada é uma lista não vazia de números inteiros, em qualquer formato razoável. Representa os números que os participantes do jogo estão segurando.
Resultado
Sua saída é o número de rodadas necessárias até o final do jogo.
Exemplo
Considere a lista de entrada [3,1,-2,0,8]. Na primeira rodada, acontece o seguinte:
- A pessoa que está segurando
3aponta diretamente para a pessoa que está segurando0. - A pessoa que está segurando
1aponta diretamente para a pessoa que está segurando-2. - A pessoa que mantém
-2pontos deixados na pessoa que está segurando3. - A pessoa que
0aponta para si mesma. - A pessoa que está segurando
8aponta diretamente para a pessoa que está segurando-2(a lista representa um círculo, de modo que envolve as extremidades).
Isso significa que 0, -2e 3são eliminados, a segunda rodada é feita com a lista [1,8]. Aqui, 1aponta para 8, e 8aponta para si mesmo, então 8é eliminado. A terceira rodada é feita com a lista [1], onde 1simplesmente aponta para si mesma e é eliminada. Foram necessárias três rodadas para eliminar todos os participantes, portanto a saída correta é 3.
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.
Casos de teste
[3] -> 1
[0,0,0] -> 1
[-2,-1,0,1,2,3,4,5,6,7] -> 2
[5,5,5,6,6,6] -> 2
[3,-7,-13,18,-10,8] -> 2
[-7,5,1,-5,-13,-10,9] -> 2
[4,20,19,16,8,-9,-14,-2,17,7,2,-2,10,0,18,-5,-5,20] -> 3
[11,2,7,-6,-15,-8,15,-12,-2,-8,-17,6,-6,-5,0,-20,-2,11,1] -> 4
[2,-12,-11,7,-16,9,15,-10,7,3,-17,18,6,6,13,0,18,10,-7,-1] -> 3
[18,-18,-16,-2,-19,1,-9,-18,2,1,6,-15,12,3,-10,8,-3,7,-4,-11,5,-15,17,17,-20,11,-13,9,15] -> 6
né o número que a pessoa está segurando?