Thử thách này dựa trên một câu đố mà tôi đã đọc trong một số cuốn sách trước đây, mà tôi đã tìm thấy ở đây . Đó là về những viên đạn được bắn ra từ súng mỗi giây một lần với tốc độ khác nhau di chuyển theo đường thẳng mãi mãi. Khi một viên đạn trúng một viên đạn khác, cả hai đều bị phá hủy hoàn toàn. (Hãy thoải mái thay thế tất cả các trường hợp "viên đạn" bằng "tên lửa".)
Nhiệm vụ
Đưa ra một danh sách các tốc độ đạn theo thứ tự chúng được bắn vào, xác định xem tất cả các viên đạn có bị phá hủy hay không.
Những quy định
- Đầu vào là danh sách các số nguyên không âm, được phân tách bằng bất kỳ dấu phân cách nào và với một ký tự tùy chọn trước và sau. Đây là những đầu vào hợp lệ:
1 2 3 4 5 6
và[1,2,3,4,5,6]
. Các lập trình viên đưa ra lựa chọn. - Xuất ra một giá trị trung thực nếu ít nhất một viên đạn tồn tại mãi mãi và một giá trị giả khác.
- Tốc độ đạn được tính theo đơn vị mỗi giây.
- Đạn di chuyển đồng thời và liên tục.
- Đạn có thể va chạm ở độ lệch phân đoạn.
- Nhiều viên đạn đồng thời đạt đến cùng một vị trí, cho dù ở độ lệch tích phân hoặc phân số so với gốc, tất cả đều va chạm với nhau.
Ví dụ
Trong các sơ đồ này, G
đại diện cho súng, >
đạn và *
là thời điểm đạn va chạm và phát nổ.
Sự thật
Đầu vào: 0
0123456789
Time 0 G>
1 G>
2 G>
...
Đầu ra: 1
Đầu vào: 0 0 0
0123456789
Time 0 G>
1 G*
2 G>
3 G>
4 G>
...
Đầu ra: 1
Đầu vào: 1
0123456789
Time 0 G>
1 G >
2 G >
3 G >
...
Đầu ra: 1
Đầu vào: 2 1
0123456789
Time 0 G>
1 G> >
2 G > >
3 G > >
4 G > >
...
Đầu ra: 1
Đầu vào: 2 3 1
0123456789
Time 0 G>
1 G> >
2 G> >>
3 G > *
4 G >
5 G >
...
Đầu ra: 1
Giả
Đầu vào: 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
Đầu ra: 0
Đầu vào: 1 0 0 3
Unit
0123456789
Time 0 G>
1 G>>
2 G* >
3 G> >
4 G >>
5 G *
(Va chạm thứ hai là tại thời điểm 4.5)
Đầu ra:0
Đầu vào: 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
Đầu ra: 0
Đầu vào: 2 3 6
Unit
0123456789
Time 0 G>
1 G> >
2 G> >>
3 G *
Đầu ra: 0
1<enter>2<enter>3...
nào?