Diese Herausforderung basiert auf einem Rätsel, das ich vor einiger Zeit in einem Buch gelesen habe und das ich hier wiedergefunden habe . Es geht um Kugeln, die einmal pro Sekunde mit unterschiedlichen Geschwindigkeiten abgefeuert werden und sich für immer in einer geraden Linie bewegen. Wenn eine Kugel eine andere trifft, werden beide vollständig zerstört. (Fühlen Sie sich frei, alle Instanzen von "Kugel" durch "Rakete" zu ersetzen.)
Die Aufgabe
Bestimmen Sie anhand einer Liste der Geschwindigkeiten der Kugeln in der Reihenfolge, in der sie abgefeuert wurden, ob alle Kugeln zerstört wurden.
Die Regeln
- Die Eingabe ist eine Liste nicht negativer Ganzzahlen, die durch ein Trennzeichen und ein optionales Zeichen davor und danach getrennt sind. Dies sind gültige Eingaben:
1 2 3 4 5 6
und[1,2,3,4,5,6]
. Der Programmierer trifft die Wahl. - Geben Sie einen Wahrheitswert aus, wenn mindestens eine Kugel für immer überlebt, andernfalls einen falschen Wert.
- Geschossgeschwindigkeiten werden in Einheiten pro Sekunde angegeben.
- Kugeln bewegen sich gleichzeitig und kontinuierlich.
- Aufzählungszeichen können bei Teilversätzen kollidieren.
- Mehrere Kugeln, die gleichzeitig genau die gleiche Position erreichen, entweder mit einem integralen oder einem gebrochenen Versatz vom Ursprung, kollidieren alle miteinander.
Beispiele
Stellt in diesen Diagrammen G
die Waffe und >
die Kugeln dar und ist *
die Zeit, in der Kugeln kollidieren und explodieren.
Wahrheit
Eingang: 0
0123456789
Time 0 G>
1 G>
2 G>
...
Ausgabe: 1
Eingang: 0 0 0
0123456789
Time 0 G>
1 G*
2 G>
3 G>
4 G>
...
Ausgabe: 1
Eingang: 1
0123456789
Time 0 G>
1 G >
2 G >
3 G >
...
Ausgabe: 1
Eingang: 2 1
0123456789
Time 0 G>
1 G> >
2 G > >
3 G > >
4 G > >
...
Ausgabe: 1
Eingang: 2 3 1
0123456789
Time 0 G>
1 G> >
2 G> >>
3 G > *
4 G >
5 G >
...
Ausgabe: 1
Falsch
Eingang: 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
Ausgabe: 0
Eingang: 1 0 0 3
Unit
0123456789
Time 0 G>
1 G>>
2 G* >
3 G> >
4 G >>
5 G *
(Die zweite Kollision zum Zeitpunkt 4.5)
Ausgang:0
Eingang: 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
Ausgabe: 0
Eingang: 2 3 6
Unit
0123456789
Time 0 G>
1 G> >
2 G> >>
3 G *
Ausgabe: 0
1<enter>2<enter>3...
?