Ce défi est basé sur une énigme que j'ai lue dans un livre il y a quelque temps, que j'ai retrouvée ici . Il s'agit de balles tirées à partir d'une arme à feu une fois par seconde à des vitesses variables qui se déplacent en ligne droite pour toujours. Lorsqu'une balle frappe une autre, les deux sont complètement détruites. (N'hésitez pas à remplacer toutes les instances de "balle" par "missile".)
La tâche
Étant donné la liste des vitesses des balles dans l'ordre dans lequel elles sont tirées, déterminez si toutes les balles sont détruites.
Les règles
- L'entrée est une liste d'entiers non négatifs, séparés par un délimiteur et avec un caractère facultatif avant et après. Ce sont des entrées valides:
1 2 3 4 5 6
et[1,2,3,4,5,6]
. Le programmeur fait le choix. - Sortez une valeur véridique si au moins une balle survit éternellement et une valeur fausse sinon.
- Les vitesses des balles sont données en unités par seconde.
- Les balles se déplacent simultanément et en continu.
- Les balles peuvent entrer en collision avec des décalages fractionnaires.
- Plusieurs balles qui atteignent simultanément la même position exacte, que ce soit à un décalage intégral ou fractionné par rapport à l'origine, entrent en collision les unes avec les autres.
Exemples
Dans ces diagrammes, G
représente l'arme, >
les balles et *
les moments où les balles entrent en collision et explosent.
Truthy
Contribution: 0
0123456789
Time 0 G>
1 G>
2 G>
...
Production: 1
Contribution: 0 0 0
0123456789
Time 0 G>
1 G*
2 G>
3 G>
4 G>
...
Production: 1
Contribution: 1
0123456789
Time 0 G>
1 G >
2 G >
3 G >
...
Production: 1
Contribution: 2 1
0123456789
Time 0 G>
1 G> >
2 G > >
3 G > >
4 G > >
...
Production: 1
Contribution: 2 3 1
0123456789
Time 0 G>
1 G> >
2 G> >>
3 G > *
4 G >
5 G >
...
Production: 1
Falsy
Contribution: 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
Production: 0
Contribution: 1 0 0 3
Unit
0123456789
Time 0 G>
1 G>>
2 G* >
3 G> >
4 G >>
5 G *
(La deuxième collision est à l'instant 4.5)
Sortie:0
Contribution: 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
Production: 0
Contribution: 2 3 6
Unit
0123456789
Time 0 G>
1 G> >
2 G> >>
3 G *
Production: 0
1<enter>2<enter>3...
?