Lý lịch
Slime khuôn là tuyệt vời. Nếu bạn đặt chúng trên một bề mặt có nguồn thức ăn, chúng sẽ trải gân để tìm thức ăn, sau đó chúng tạo thành một mạng lưới kết nối giữa các nguồn. Trong thử thách này, bạn sẽ mô phỏng một khuôn chất nhờn tìm kiếm thức ăn. Hơn nữa, khuôn đặc biệt này sẽ dừng lại khi nó tìm thấy đủ.
Đầu vào
Đầu vào của bạn sẽ là một danh sách L
các tọa độ số nguyên 2D ở định dạng gốc của ngôn ngữ của bạn và một số nguyên không âm N
. Danh sách L
được đảm bảo không trùng lặp, nhưng nó có thể không được sắp xếp. Đầu vào N
là từ 0 đến chiều dài L
, bao gồm.
Danh sách L
đại diện cho một bộ tọa độ cho các nguồn thực phẩm. Ví dụ, danh sách
[(0,0),(2,-1),(3,1),(0,4),(5,5)]
có thể được giải thích trực quan như
o
o
o
o
o
Đầu ra
Đầu ra của bạn là một danh sách K
tọa độ số nguyên 2D không trùng lặp khác trên cùng định dạng với đầu vào. Nó đại diện cho mạng được hình thành bởi khuôn chất nhờn và nó sẽ đáp ứng các điều kiện sau:
- Các giao điểm
L
vàK
có kích thước chính xácN
. - Tập hợp
K
được kết nối như một tập hợp con của lưới số nguyên (thông qua các điều chỉnh trực giao hoặc đường chéo). - Nếu bất kỳ tọa độ nào
K
bị loại bỏ, nó không còn thỏa mãn hai điều kiện đầu tiên.
Lưu ý rằng nếu N = 0
, đầu ra phải là một danh sách trống.
Một ví dụ về đầu ra chấp nhận được cho danh sách trên L
và N = 4
sẽ là
[(0,0),(0,1),(0,2),(0,3),(0,4),(1,4),(2,4),(3,3),(3,2),(3,1),(3,5),(4,5),(5,5)]
có thể được hình dung như
xxO
Oxx
x x
x x
x O
O
o
trong đó mỗi O
đại diện cho một tọa độ trong cả hai L
và K
, và mỗi x
đại diện cho một tọa độ trong K
nhưng không phải trong L
. Các đầu ra khác cũng được chấp nhận và "gân" không phải là ngắn nhất có thể. Ví dụ, đây cũng là một giải pháp chấp nhận được:
xxOxx
Oxx x
x x
x x
x o x
O x
Ox
Quy tắc
Cả đầu vào và đầu ra phải là danh sách, không phải là tập hợp hoặc các kiểu dữ liệu khác. Các tọa độ có thể là danh sách hoặc bộ dữ liệu. Bạn có thể thay đổi thứ tự của hai đầu vào nếu cần.
Bạn có thể viết một chương trình đầy đủ hoặc một chức năng. Số byte thấp nhất sẽ thắng và các sơ hở tiêu chuẩn không được phép.
Các trường hợp thử nghiệm
Chương trình của bạn sẽ hoạt động trên các danh sách này cho tất cả các giá trị áp dụng của N
.
[]
[(2,3)]
[(0,0),(1,0),(0,1),(1,1)]
[(0,0),(2,-1),(3,1),(0,4),(5,5)]
[(0,0),(1,0),(2,0),(3,0),(0,3),(1,3),(2,3),(3,3)]
[(0,0),(1,0),(2,0),(3,0),(0,3),(1,3),(2,3),(3,3),(0,1),(0,2),(3,1),(3,2),(8,1),(8,2),(-5,1),(-5,2)]
[(0,0),(20,0),(15,15),(-10,4),(-10,3),(0,-5),(7,6),(7,7),(8,8),(9,8),(10,-2),(-1,12),(-3,10)]
[(0,0),(1,0),(2,0),(3,0),(5,0),(6,0),(7,0),(0,9),(1,9),(2,9),(3,8),(4,9),(5,10),(6,10),(7,9),(3,3),(4,4),(5,5)]
Hình dung:
===
o
===
oo
oo
===
o
o
o
o
o
===
oooo
oooo
===
oooo
o o o o
o o o o
oooo
===
o
o
o
oo
o
o
o
o
o o
o
o
===
oo
ooo o o
o
o
o
o
oooo ooo