Cảm ơn Bác (truyện)
Người chú hơi điên của tôi gần đây đã rời khỏi các thuộc địa không gian, và chuyển giao việc kinh doanh hàng hóa pallet của mình cho tôi. Kho hình chữ nhật chứa đầy các pallet hàng hóa ngoại trừ một ô vuông cạnh cửa và tôi vừa nhận được danh sách pallet đầu tiên do khách hàng đặt mua hôm nay.
May mắn thay, tôi có một bản đồ được viết cẩn thận về vị trí của mỗi pallet, và người chú điên của tôi đã thiết kế một số robot nhỏ có thể di chuyển một pallet vào một không gian liền kề, giống như một câu đố trượt 15. Mặc dù vậy, tôi không quan tâm nơi các pallet kết thúc, tôi chỉ muốn các pallet trong danh sách đến theo thứ tự ở cửa.
Câu hỏi là, tôi phải cung cấp chuỗi lệnh nào cho các robot để lấy các palet cần thiết?
Các thách thức
Được
- kích thước của lưới (hàng, cols)
- một danh sách các pallet (theo vị trí hiện tại của chúng) để lấy theo thứ tự
Bạn phải xuất danh sách các vị trí lưới tương ứng với vị trí sẽ được di chuyển và hướng nào. Nếu chỉ có 1 hướng khả dụng, bạn có thể tùy ý bỏ qua hướng đó. Các pallet sẽ được gỡ bỏ ngay khi đến cửa (tại một góc, chỉ số N trong các ví dụ).
Ví dụ làm việc
01 02 label the contents A B
03 04 C D
05[ ] E _
Request: 03 (contents is C)
Command 0: 04
D moves into the (only) adjacent space at index 06
Result: A B
C _
E D
Command 1: 03
C moves into the (only) adjacent space at index 04
Result: A B
_ C
E D
Command 2: 05
A B
E C
_ D
Command 3: 06
A B
E C
D _
Command 4: 04
A B
E _
D[C]
(C removed having arrived by the door)
Giới hạn và quyền tự do
- Kích thước lưới tối đa là 100x100
- Thử thách là chơi gôn
- Giải pháp phải thực hiện trong vòng 2 phút trên một số máy trong thế giới thực
- Bạn có thể chọn lập chỉ mục, cú pháp lệnh, cấu trúc đầu vào, v.v, miễn là nó phù hợp.
- Tôi đã chọn sử dụng các vị trí lưới cho các lệnh, nhưng có thể hình dung bạn có thể phát ra giá trị trong phần tử thay vào đó (cộng với một hướng) vì chúng là duy nhất.
- Nếu bạn muốn tạo một hình ảnh động của trạng thái (đặc biệt là cho một lưới lớn), tôi chắc chắn rằng nó sẽ rất thú vị!
Ví dụ
A: 3x2, 1 pallet
01 02
03 04
05 [__]
Request: pallet at 03
Valid solution: 05,03,04,06,05
This leaves the following state:
01 02
04 05
__ [03]
B: 15 câu đố, 1 hộp
01 02 03 04 05
06 07 08 09 10
11 12 13 14[ ]
Request: box 01
Valid solution: 14,13,12,11,06,01,02,07,12,11,06,07,12,11,06,07,08,13,12,11,06,07,08,09,14,13,08,09,10,15,14
02 07 03 04 05
08 12 13 10 14
06 11 09 __[01]
C: 3x2, 4 hộp
01 02
03 04
05[ ]
Request: 02,04,01,05
Valid solution: 04,02,01,03,05,06,04,05,02,06,03S,05E
Pallet taken at: ^ ^ ^ ^
Indicating directions with NSEW
Final state:
03 __
__ __
__ __
D: 10 x 10, 2 hộp
10x10, request boxes at 13,12 (row 1, cols 2 & 1 with 0-index)
Valid solution: (90,80..20, 19,18..12, 22,32..92, 93,94..100) x 15, 90.
E: 4x1, tất cả
4x1: 01 02 03 [ ]
Req: 03,02,01 (only valid order)
Optimal solution: 03,02,03E,01,02E,03E
F: 100x100, 3 gần cửa
100x100
Req: 9900,9899,9898
Result: 9000,9989,9000S,9898,9898E,9000S