Esse desafio se baseia em uma charada que li em algum livro há um tempo atrás, que encontrei novamente aqui . Trata-se de balas disparadas de uma arma uma vez por segundo em velocidades variadas que viajam em linha reta para sempre. Quando uma bala atinge a outra, ambas são destruídas completamente. (Sinta-se à vontade para substituir todas as instâncias de "bala" por "míssil".)
A tarefa
Dada uma lista de velocidades da bala na ordem em que são disparadas, determine se todas as balas foram destruídas.
As regras
- Entrada é uma lista de números inteiros não negativos, separados por qualquer delimitador e com um caractere opcional antes e depois. Estas são entradas válidas:
1 2 3 4 5 6
e[1,2,3,4,5,6]
. O programador faz a escolha. - Produza um valor verdadeiro se pelo menos uma bala sobreviver para sempre e, caso contrário, um valor falso.
- As velocidades da bala são dadas em unidades por segundo.
- As balas se movem simultaneamente e continuamente.
- As balas podem colidir com compensações fracionárias.
- Múltiplas balas que atingem simultaneamente a mesma posição, seja em um deslocamento integral ou fracionário da origem, colidem umas com as outras.
Exemplos
Nestes diagramas, G
representa a arma, >
as balas e *
são momentos em que as balas colidem e explodem.
Truthy
Entrada: 0
0123456789
Time 0 G>
1 G>
2 G>
...
Resultado: 1
Entrada: 0 0 0
0123456789
Time 0 G>
1 G*
2 G>
3 G>
4 G>
...
Resultado: 1
Entrada: 1
0123456789
Time 0 G>
1 G >
2 G >
3 G >
...
Resultado: 1
Entrada: 2 1
0123456789
Time 0 G>
1 G> >
2 G > >
3 G > >
4 G > >
...
Resultado: 1
Entrada: 2 3 1
0123456789
Time 0 G>
1 G> >
2 G> >>
3 G > *
4 G >
5 G >
...
Resultado: 1
Falsy
Entrada: 1 2 3 4 5 6
Unit 1111111111
01234567890123456789
Time 0 G>
1 G>>
2 G> *
3 G> >
4 G> > >
5 G> > >>
6 G > > *
7 G > >
8 G > >
9 G >>
10 G *
111111111122222222223
0123456789012345678901234567890
Resultado: 0
Entrada: 1 0 0 3
Unit
0123456789
Time 0 G>
1 G>>
2 G* >
3 G> >
4 G >>
5 G *
(A segunda colisão é no momento 4,5)
Saída:0
Entrada: 2 1 2 3 6 5
Unit 1111111111
01234567890123456789
Time 0 G>
1 G> >
2 G>> >
3 G> * >
4 G> > >
5 G> * >
6 G > >
7 G > >
8 G >>
9 G *
1111111111
01234567890123456789
Resultado: 0
Entrada: 2 3 6
Unit
0123456789
Time 0 G>
1 G> >
2 G> >>
3 G *
Resultado: 0
1<enter>2<enter>3...
?