この挑戦は、私が少し前にいくつかの本で読んだ謎に基づいています。さまざまな速度で1秒間に1回銃から発射される弾丸が永久に直線で移動することです。ある弾丸が別の弾丸に当たると、両方が完全に破壊されます。(「弾丸」のすべてのインスタンスを「ミサイル」に置き換えてください。)
タスク
発射された順番で弾丸の速度のリストが与えられたら、すべての弾丸が破壊されるかどうかを決定します。
ルール
- 入力は、任意の区切り文字で区切られ、前後に1つのオプション文字がある、負でない整数のリストです。これらは、有効な入力です:
1 2 3 4 5 6
と[1,2,3,4,5,6]
。プログラマーが選択します。 - 少なくとも1つの弾丸が永遠に生き残る場合は真実の値を出力し、そうでない場合は偽の値を出力します。
- 弾丸の速度は1秒あたりの単位で与えられます。
- 弾丸は同時に連続的に移動します。
- 箇条書きは、わずかなオフセットで衝突する場合があります。
- 原点からの整数または小数のオフセットにかかわらず、正確に同じ位置に同時に到達する複数の弾丸は、すべて互いに衝突します。
例
これらの図でG
は、銃、>
弾丸を表し、*
弾丸が衝突して爆発するときです。
真実の
入力: 0
0123456789
Time 0 G>
1 G>
2 G>
...
出力: 1
入力: 0 0 0
0123456789
Time 0 G>
1 G*
2 G>
3 G>
4 G>
...
出力: 1
入力: 1
0123456789
Time 0 G>
1 G >
2 G >
3 G >
...
出力: 1
入力: 2 1
0123456789
Time 0 G>
1 G> >
2 G > >
3 G > >
4 G > >
...
出力: 1
入力: 2 3 1
0123456789
Time 0 G>
1 G> >
2 G> >>
3 G > *
4 G >
5 G >
...
出力: 1
偽物
入力: 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
出力: 0
入力: 1 0 0 3
Unit
0123456789
Time 0 G>
1 G>>
2 G* >
3 G> >
4 G >>
5 G *
(2回目の衝突は4.5時間です)
出力:0
入力: 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
出力: 0
入力: 2 3 6
Unit
0123456789
Time 0 G>
1 G> >
2 G> >>
3 G *
出力: 0
1<enter>2<enter>3...
ますか?