Alphys, Nhà khoa học Hoàng gia của Tàu điện ngầm, đã hoàn thành một nguyên mẫu cho một câu đố mới. Tuy nhiên, cô ấy dường như không thể tìm thấy bất cứ ai sẵn sàng thử nghiệm nó.
Các quy tắc của câu đố của cô như sau:
Mục tiêu là để đến bên phải, bắt đầu từ ô trung tâm ở bên trái. Đối với các câu đố có chiều cao được đánh số chẵn, bắt đầu ở phía dưới của hai ô trung tâm. (Ví dụ: Trong mảng 4x4 được lập chỉ mục 0, vị trí bắt đầu sẽ là [2,0] - hàng 2, cột 0. Trong mảng 5x5 được lập chỉ mục 0, vị trí bắt đầu sẽ là [2,0] - hàng 2, cột 0.)
Mỗi ô màu có chức năng "tàn bạo" riêng:
- Gạch màu hồng và màu xanh lá cây (đại diện là "P" và "G") không làm gì cả
- Gạch đỏ và vàng ("R", "Y") là không thể vượt qua.
- Gạch màu cam ("O") làm cho người chơi có mùi như cam
- Gạch màu tím ("U") buộc người chơi đến ô tiếp theo theo hướng họ đang đối mặt và khiến chúng có mùi như chanh
- Gạch màu xanh lam ("B") có thể qua được miễn là người chơi không có mùi như cam.
Để làm rõ cơ chế hương vị, mùi của người chơi sẽ tồn tại vô thời hạn hoặc cho đến khi bị đè lên bởi một viên gạch có mùi khác, tức là nếu người chơi bước lên một viên gạch màu cam, họ sẽ ngửi thấy mùi cam cho đến khi họ bước lên một viên ngói màu tím.
Ngoài ra, một ô màu vàng được đặt theo chiều dọc hoặc chiều ngang liền kề với ô màu xanh lam cũng sẽ khiến ô màu xanh trở nên không thể xuyên thủng.
Nhiệm vụ của bạn là viết một chương trình hoặc hàm chấp nhận mảng ký tự 2 chiều (hoặc mảng chuỗi 1D hoặc một số định dạng hợp lệ khác) biểu thị bố cục của câu đố làm đầu vào và xuất ra cả câu đố gốc và câu đố đã giải, bằng dấu hoa thị hoặc một số nhân vật khác hiển thị đường dẫn chính xác. Giả sử rằng câu đố đã cho là có thể giải được.
Sử dụng câu đố này làm ví dụ:
BGYBG
PGPBG
PUBPB
OUGYB
PPOPP
Chương trình của bạn sẽ xuất ra:
BGYBG
PGPBG
PUBPB
OUGYB
PPOPP
BGYBG
PGPBG
*****
OUGYB
PPOPP
Bất kỳ câu đố được sử dụng phải được tạo ra bằng cách này .
Quy tắc golf tiêu chuẩn áp dụng. Câu trả lời tốt nhất sẽ là ngắn nhất cho mỗi ngôn ngữ. Câu trả lời phải chứa ngôn ngữ, số byte và ba trường hợp kiểm tra. Hai cái đầu tiên có thể là bất kỳ bố cục nào bạn chọn, nhưng cái thứ ba phải là:
RRRR
RPPR
PUOR
RPBP