Este desafío se basa en un acertijo que leí en algún libro hace un tiempo, que encontré nuevamente aquí . Se trata de balas disparadas desde un arma una vez por segundo a velocidades variables que viajan en línea recta para siempre. Cuando una bala golpea a otra, ambas se destruyen por completo. (Siéntase libre de reemplazar todas las instancias de "bala" con "misil").
La tarea
Dada una lista de velocidades de bala en el orden en que se disparan, determina si todas las balas se destruyen.
Las normas
- La entrada es una lista de enteros no negativos, separados por cualquier delimitador y con un carácter opcional antes y después. Estas son entradas válidas:
1 2 3 4 5 6
y[1,2,3,4,5,6]
. El programador hace la elección. - Produzca un valor verdadero si al menos una bala sobrevive para siempre y un valor falso de lo contrario.
- Las velocidades de bala se dan en unidades por segundo.
- Las balas se mueven simultáneamente y continuamente.
- Las balas pueden colisionar en compensaciones fraccionales.
- Múltiples balas que simultáneamente alcanzan exactamente la misma posición, ya sea en un desplazamiento integral o fraccional desde el origen, todas chocan entre sí.
Ejemplos
En estos diagramas, G
representa el arma, >
las balas, y *
son momentos en que las balas chocan y explotan.
Verdad
Entrada: 0
0123456789
Time 0 G>
1 G>
2 G>
...
Salida: 1
Entrada: 0 0 0
0123456789
Time 0 G>
1 G*
2 G>
3 G>
4 G>
...
Salida: 1
Entrada: 1
0123456789
Time 0 G>
1 G >
2 G >
3 G >
...
Salida: 1
Entrada: 2 1
0123456789
Time 0 G>
1 G> >
2 G > >
3 G > >
4 G > >
...
Salida: 1
Entrada: 2 3 1
0123456789
Time 0 G>
1 G> >
2 G> >>
3 G > *
4 G >
5 G >
...
Salida: 1
Falsa
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
Salida: 0
Entrada: 1 0 0 3
Unit
0123456789
Time 0 G>
1 G>>
2 G* >
3 G> >
4 G >>
5 G *
(La segunda colisión es en el momento 4.5)
Salida: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
Salida: 0
Entrada: 2 3 6
Unit
0123456789
Time 0 G>
1 G> >
2 G> >>
3 G *
Salida: 0
1<enter>2<enter>3...
?