Tìm ông già Noel và chú tuần lộc của mình trong một khung cảnh đông đúc.
Đầu vào
Đầu vào sẽ nằm trên STDIN và sẽ là một số lượng các dòng ký tự có độ dài bằng nhau, nhưng thay đổi. Nếu ông già Noel (được đại diện bởi nhân vật S
) có mặt trong cảnh đó, bao tải quà của ông (được đại diện bởi nhân vật P
) sẽ ở một trong những vị trí liền kề với ông (theo chiều ngang, chiều dọc hoặc đường chéo). Tuần lộc của anh ấy (mỗi người được đại diện bởi nhân vật R
) tất cả sẽ ở trong quảng trường 5x5 bao quanh anh ấy. Nếu S
xuất hiện trong cảnh không có bao tải quà tặng, hoặc không có ít nhất 4 con tuần lộc, thì đó không phải là ông già Noel.
Đầu ra
Khung cảnh xóa sạch mọi sự xáo trộn (tất cả các nhân vật không phải ông già Noel, không phải quà tặng, không tuần lộc được thay thế bằng một khoảng trống), cho thấy ông già Noel, bao tải quà và tuần lộc của ông - tất cả các nhân vật khác nên được thay thế bằng không gian. Nếu ông già Noel và tuần lộc không có mặt, hãy xuất ra nó không thay đổi. Nó được đảm bảo rằng sẽ chỉ có một giải pháp, vì vậy sẽ không bao giờ có nhiều hơn một ông già Noel hợp lệ và ông sẽ không bao giờ mang nhiều hơn một bao quà.
Ví dụ
Trong những ví dụ tôi chỉ sử dụng các *
nhân vật để làm cho nó dễ dàng để xem S
, P
và R
ký tự, nhưng chương trình của bạn sẽ có thể xử lý bất kỳ ký tự ascii từ !
đến `
(33-96). Tôi đã bỏ các ký tự chữ thường trở lên để tránh nhầm lẫn.
Đầu vào:
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Đầu ra: (bỏ qua các dấu chấm, chúng buộc trang hiển thị các dòng trống)
.
.
.
R
P
S
R
R R
.
.
.
.
Đầu vào: (không đủ tuần lộc)
***********
***********
***********
***********
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Đầu ra:
***********
***********
***********
***********
******P****
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Đầu vào: (không có bao quà)
***********
***********
***********
*****R*****
***********
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Đầu ra:
***********
***********
***********
*****R*****
***********
*****S*****
*****R*****
****R**R***
***********
***********
***********
***********
Đầu vào: (quà không đủ gần)
***********
***********
***********
*****R*****
***********
*****S*P***
*****R*****
****R**R***
***********
***********
***********
***********
Đầu ra:
***********
***********
***********
*****R*****
***********
*****S*P***
*****R*****
****R**R***
***********
***********
***********
***********
Đầu vào: (một trong những con tuần lộc không nằm trong quảng trường 5x5 quanh Santa)
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R******
*******R***
***********
***********
***********
Đầu ra:
***********
***********
***********
*****R*****
******P****
*****S*****
*****R*****
****R******
*******R***
***********
***********
***********
Kiểm tra tập lệnh
Như trong một số câu hỏi trước đây của tôi, một lần nữa tôi đã tìm hiểu một số tập lệnh kiểm tra do Joey và Ventero tạo ra để cung cấp một số trường hợp kiểm tra cho câu hỏi này:
Sử dụng: ./test [your program and its arguments]
Phiên bản văn bản thuần túy của các bài kiểm tra để tham khảo: Văn bản thuần túy
Phần thưởng
Mỗi mục mà tôi có thể xác minh đáp ứng thông số kỹ thuật, vượt qua các bài kiểm tra và rõ ràng đã có một số nỗ lực chơi gôn sẽ nhận được một upvote từ tôi (vì vậy vui lòng cung cấp hướng dẫn sử dụng với câu trả lời của bạn). Giải pháp ngắn nhất vào cuối ngày 31/12/2013 sẽ được chấp nhận là người chiến thắng.