这项挑战是基于我不久前在一本书中读到的一个谜语,我在这里再次发现了这个谜语。这是关于每秒以不同速度从枪上发射的子弹永远沿直线传播。当一颗子弹击中另一颗子弹时,两者都被完全摧毁。(可以将所有“子弹”实例替换为“导弹”。)
任务
给定子弹速度的发射顺序列表,确定是否销毁了所有子弹。
规则
- 输入是一列非负整数,由任何定界符分隔,并在其前后带有一个可选字符。这些是有效的输入:
1 2 3 4 5 6
和[1,2,3,4,5,6]
。程序员做出选择。 - 如果至少一颗子弹可以永远存活,则输出真实值,否则输出虚假值。
- 子弹速度以每秒单位给出。
- 项目符号同时且连续地移动。
- 项目符号可能会在小数偏移处发生碰撞。
- 同时到达精确相同位置的多个子弹(无论是与原点的偏移量是整数偏移还是分数偏移)都相互碰撞。
例子
在这些图中,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 *
(第二次碰撞在时间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...
吗?