Questa sfida si basa su un indovinello che ho letto in qualche libro qualche tempo fa, che ho trovato di nuovo qui . Si tratta di proiettili sparati da una pistola una volta al secondo a velocità variabili che viaggiano in linea retta per sempre. Quando un proiettile colpisce un altro, entrambi vengono completamente distrutti. (Sentiti libero di sostituire tutte le istanze di "proiettile" con "missile".)
L'obiettivo
Dato un elenco di velocità dei proiettili nell'ordine in cui vengono sparati, determina se tutti i proiettili vengono distrutti.
Le regole
- L'input è un elenco di numeri interi non negativi, separati da qualsiasi delimitatore e con un carattere opzionale prima e dopo. Questi sono input validi:
1 2 3 4 5 6
e[1,2,3,4,5,6]
. Il programmatore fa la scelta. - Emetti un valore veritiero se almeno un proiettile sopravvive per sempre e un valore falso altrimenti.
- Le velocità dei proiettili sono indicate in unità al secondo.
- I proiettili si muovono contemporaneamente e continuamente.
- I proiettili possono scontrarsi con offset frazionari.
- Molteplici proiettili che raggiungono contemporaneamente la stessa identica posizione, sia in offset integrale che frazionario rispetto all'origine, si scontrano tra loro.
Esempi
In questi diagrammi, G
rappresenta la pistola, >
i proiettili e *
sono momenti in cui i proiettili si scontrano ed esplodono.
Truthy
Ingresso: 0
0123456789
Time 0 G>
1 G>
2 G>
...
Produzione: 1
Ingresso: 0 0 0
0123456789
Time 0 G>
1 G*
2 G>
3 G>
4 G>
...
Produzione: 1
Ingresso: 1
0123456789
Time 0 G>
1 G >
2 G >
3 G >
...
Produzione: 1
Ingresso: 2 1
0123456789
Time 0 G>
1 G> >
2 G > >
3 G > >
4 G > >
...
Produzione: 1
Ingresso: 2 3 1
0123456789
Time 0 G>
1 G> >
2 G> >>
3 G > *
4 G >
5 G >
...
Produzione: 1
Falsy
Ingresso: 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
Produzione: 0
Ingresso: 1 0 0 3
Unit
0123456789
Time 0 G>
1 G>>
2 G* >
3 G> >
4 G >>
5 G *
(La seconda collisione è al momento 4.5)
Uscita:0
Ingresso: 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
Produzione: 0
Ingresso: 2 3 6
Unit
0123456789
Time 0 G>
1 G> >
2 G> >>
3 G *
Produzione: 0
1<enter>2<enter>3...
?