Ví dụ Python thực chiến: bài toán Village Neighborhood (phần 1)

Bài toán Village Neighborhood

Trong bài toán này, chúng ta sẽ tìm ra kích thước của neighborhood nhỏ nhất của tập hợp
các villages. Chúng ta sẽ thấy nó hữu dụng để lưu giữ tất cả kích thước neighborhood. Chúng
ta có thể có nhiều như 100 villages, mặc dù vậy, và sử dụng một biến riêng rẽ cho mỗi village
sẽ là ác mộng. Chúng ta sẽ thấy rằng các lists cho phép chúng ta tổng hợp cái mặt khác sẽ là các
biến riêng rẽ thành một tập hợp. Chúng ta cũng sẽ học về các hoạt động list của Python cho điều
chỉnh tìm kiếm, và phân loại một list.
Thách thức
Có n villages nằm ở các điểm khác nhau trên một con đường thẳng. Mỗi village được biểu thị bằng một
số nguyên cho biết vị trí của nó trên đường. Neighbor bên trái của village là village có vị trí nhỏ
nhất tiếp theo; Neighbor bên phải của village là villgage có vị trí lớn nhất tiếp theo. Các neighborhood
của một village bao gồm một nửa khoảng cách giữa village đó và neighbor bên trái, cộng thêm một nửa khoảng
cách giữa village đó và neighbor bên phải. Ví dụ: nếu có một village ở vị trí 10, với neighbor bên trái ở vị trí
6 và neighbor bên phải của nó ở vị trí 15 thì là neighborhood của village này
bắt đầu từ vị trí 8 (nửa chừng từ 6 đến 10) và kết thúc ở vị trí 12,5 (nửa chừng từ 10 đến 15).
Các village ngoài cùng bên trái và ngoài cùng bên phải chỉ có một neighbor, do đó định nghĩa
của một neiborhood không có ý nghĩa đối với chúng. Chúng tôi sẽ bỏ qua các neighborhoods của hai villages đó trong
bài toán này.
Kích thước của neighborhood được tính là vị trí ngoài cùng bên phải của neighborhood trừ đi vị trí ngoài cùng bên trái
của neighborhood. Ví dụ, neighborhood đi từ 8 đến 12,5 có kích thước 12,5 – 8 = 4,5.
Xác định kích thước của neighborhood nhỏ nhất.
Input
Đầu vào bao gồm các dòng sau:
• Một dòng chứa số nguyên n, số các villages. n nằm trong khoảng 3
và 100.
• n dòng, mỗi dòng cho biết vị trí của một village. Mỗi vị trí là một số nguyên nằm trong khoảng từ –1.000.000.000 đến
1.000.000.000. Các vị trí không cần phải theo thứ tự từ trái sang phải; Neighbor của một village có thể ở bất kỳ đâu
trong những dòng này.
Output
Xuất ra kích thước của neighborhood nhỏ nhất. Bao gồm chính xác một chữ số sau
dấu thập phân.

Chia sẻ

Leave a Reply

Your email address will not be published. Required fields are marked *