Tôi chắc rằng mọi người đã thấy trước đó những chiếc cốc có thể được xếp thành các kim tự tháp (và các hình dạng khác):
A
A A A
A A A A A
A A A A A A A A
Vâng, A
chắc chắn là một nhân vật đầy đủ để đại diện cho một cốc.
Cốc mới có thể được thêm hoặc trên mặt đất, bên phải của cấu trúc, hoặc trên đầu của hai cốc liền kề. Đây là cấu trúc trên một lần nữa, nhưng tất cả các điểm có sẵn cho cốc mới được đánh dấu bằng _
:
_ A
A A A
A _ _ A A A A
A A A A A A A A _ _ _
Giả sử chúng ta muốn chế tạo một robot có thể lắp ráp các ngăn xếp cốc này. Robot sẽ hiểu hai hướng dẫn đơn giản để thao tác cấu trúc như vậy:
a
: Thêm một cốc mới vào vị trí có sẵn đầu tiên theo thứ tự đọc từ trái sang phải (nghĩa là quét các hàng từ trên xuống dưới, từ trái sang phải cho đến khi bạn tìm thấy một vị trí có sẵn, sau đó đặt cốc ở đó). Ví dụ trên sẽ trở thành:A A A A A A A A A A A A A A A A A A
r
: Hủy bỏ cốc đầu tiên theo thứ tự đọc từ trái sang phải. Ví dụ trên sẽ trở thành:A A A A A A A A A A A A A A A A
Nó chỉ ra rằng bất kỳ cấu trúc có thể được xây dựng từ đầu chỉ bằng hai thao tác này. Ví dụ
A
A A A
A A A A A
Có thể được xây dựng với chuỗi hướng dẫn
aaaaaaaaaaaarrrrraa
Ví dụ lớn hơn ở trên có thể được xây dựng bằng cách sử dụng
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaarrrrrrrrrrrrrrrrrraaaaaaarr
Đây là một thậm chí còn lớn hơn:
A
A A A
A A A A A A A
A A A A A A A A A A A A
A A A A A A A A A A A A A A A
có thể được xây dựng với
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrraaaaaaaaaaaaaaaaaaarrrrrrrrrrrrrrraaaaaaaaaaaaaarrrrrrrrrrraaaaaaaa
Lưu ý: Nếu các điểm trên mặt đất được giải phóng bằng hướng dẫn loại bỏ, chúng sẽ được sử dụng lại trước khi đặt cốc sang bên phải của tất cả các cốc hiện có. Ví dụ
aaaarrra
sẽ mang lại
A A
không phải
A A
Bạn có thể nghĩ về mặt đất như đang ở trên một hàng cốc vô hạn.
Các thách thức
Đưa ra một cấu trúc của các cốc xếp chồng lên nhau, trả về một chuỗi biểu thị các hướng dẫn để xây dựng cấu trúc này. Điểm chính của bạn là tổng số lượng hướng dẫn cho các trường hợp kiểm tra được cung cấp ở phía dưới. Trong trường hợp hòa (có khả năng, bởi vì tôi tin rằng một giải pháp tối ưu hiệu quả là có thể), giải pháp ngắn nhất sẽ thắng.
Dưới đây là một số chi tiết về các quy tắc:
- Bạn có thể giả định rằng không có khoảng trắng ở hàng dưới cùng của đầu vào, vì vậy vị trí trên cùng bên trái của cốc luôn được sử dụng.
- Bạn có thể giả sử bất kỳ số lượng không gian dấu hợp lý nào (không có khoảng trắng, một khoảng trắng, được đệm vào một hình chữ nhật, được đệm vào một hình chữ nhật với một khoảng trống duy nhất).
- Bạn có thể tùy ý mong đợi đầu vào kết thúc trong một dòng mới duy nhất.
- Bạn có thể chọn bất kỳ hai ký tự ASCII có thể in riêng biệt (0x20 đến 0x7E, đã bao gồm) thay vì
A
và khoảng trắng (các quy tắc về khoảng trắng sau đó chuyển sang ký tự bạn đã chọn). - Đầu ra của bạn chỉ nên chứa hai ký tự riêng biệt đại diện cho các hoạt động (bạn có thể chọn các ký tự khác ngoài
a
vàr
). Bạn có thể tùy ý in một dòng mới duy nhất. - Mã của bạn phải có thể giải quyết bất kỳ trường hợp thử nghiệm nào dưới đây trong vòng chưa đầy một phút trên máy tính để bàn hợp lý (nếu tôi mất hai phút, tôi sẽ cung cấp cho bạn lợi ích của sự nghi ngờ, nhưng nếu mất mười thì tôi đã thắng 't - Tôi tin rằng một thuật toán tối ưu là có thể giúp giải quyết bất kỳ trong số chúng trong chưa đầy một giây).
- Bạn không được tối ưu hóa mã của mình đối với các trường hợp thử nghiệm riêng lẻ (ví dụ: bằng cách mã hóa chúng). Nếu tôi nghi ngờ bất cứ ai làm như vậy, tôi có quyền thay đổi các trường hợp thử nghiệm.
Bạn có thể sử dụng tập lệnh CJam này cho thao tác ngược lại: nó sẽ lấy một chuỗi các hướng dẫn xây dựng và in ra các ngăn xếp kết quả. (Cảm ơn Dennis vì đã viết lại đoạn trích và tăng tốc đáng kể.)
Sp3000 cũng vui lòng cung cấp tập lệnh Python thay thế này cho cùng mục đích.
Các trường hợp thử nghiệm
Sau mỗi trường hợp thử nghiệm, có một số chỉ số lượng hướng dẫn tối ưu theo câu trả lời của Ell.
A
A A
A A A
A A A A
A A A A A
A A A A A A
A A A A A A A
A A A A A A A A
A A A A A A A A A
A A A A A A A A A A
A A A A A A A A A A A
A A A A A A A A A A A A
A A A A A A A A A A A A A
A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
820
A
A A
A A A
A A A A
A A A A A
A A A A A A
A A A A A A A
A A A A A A A A
A A A A A A A A A A
A A A A A A A A A A A A
A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
1946
A
A A
A A A
A A A A
A A A A A
A A A A A A
A A A A A A A
A A A A A A A A
A A A A A A A A A A
A A A A A A A A A A A A
A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
2252
A A
A A A A
A A A A A A
A A A A A A A A
A A A A A A A A A A
A A A A A A A A A A A A
A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
9958
A A
A A A A
A A A A A A
A A A A A A A A
A A A A A A A A A A
A A A A A A A A A A A A
A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
5540
A A A A A A A A A A A A A A A A A A A A
10280
A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
10320
A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
5794
A
A A
A A A
A A A A A
A A A A A A A
A A A A A A A A A A
A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
3297
A A
A A A
A A A A
A A A A A
A A A A A A
A A A A A A A
A A A A A A A A
A A A A A A A A A
A A A A A A A A A A A
A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
4081
A
A A A A
A A A A A A A A A
A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
4475
A
A A A A A A A A
A A A A A A A A A A A A A A A A A A A
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
5752
Điều đó có nghĩa, điểm số tốt nhất có thể là 64.515 hướng dẫn.