Sản xuất một chương trình để đánh số chính xác một lưới ô chữ.
Đầu vào
Đầu vào sẽ là tên của một tệp đại diện cho lưới ô chữ. Tên tệp đầu vào có thể được truyền dưới dạng đối số, trên đầu vào tiêu chuẩn hoặc bằng các phương tiện thông thường khác ngoài mã hóa cứng.
Định dạng tệp lưới: Một tệp văn bản. Dòng đầu tiên bao gồm hai hằng số nguyên được phân tách bằng khoảng trắng M
và N
. Theo sau dòng đó là M
mỗi dòng bao gồm các N
ký tự (cộng với một dòng mới) được chọn từ [#A-Z ]
. Các ký tự này được giải thích sao '#'
cho chỉ ra một hình vuông bị chặn, ' '
một hình vuông mở trong câu đố không có nội dung đã biết và bất kỳ chữ cái nào có hình vuông mở có chứa chữ cái đó.
Đầu ra
Đầu ra sẽ là một tệp đánh số và có thể được gửi đến đầu ra tiêu chuẩn, đến một tệp có tên được lấy từ tên tệp đầu vào, đến một tệp do người dùng chỉ định hoặc đến một số đích thông thường khác.
Định dạng tệp đánh số Một tệp văn bản. Các dòng bắt đầu bằng '#' được bỏ qua và có thể được sử dụng để nhận xét. Tất cả các dòng khác chứa một tab tách triplet i
, m
, n
nơi i
đại diện cho một số được in trên lưới và m
và n
đại diện cho hàng và cột của quảng trường, nơi nó sẽ được in. Số lượng của cả hàng và cột bắt đầu từ 1.
Sơ đồ đánh số
Một lưới được đánh số chính xác có các thuộc tính sau:
- Việc đánh số bắt đầu từ 1.
- Không có cột hoặc khoảng của các ô vuông mở không bị đánh số. (Bạn có thể cho rằng sẽ không có câu trả lời nào cho nhân vật tồn tại trong vấn đề này.)
- Các số sẽ được bắt gặp theo thứ tự đếm bằng cách quét từ hàng trên xuống dưới lấy từng hàng từ trái sang phải. (Vì vậy, mỗi nhịp ngang được đánh số ở ô vuông ngoài cùng bên trái của nó và mỗi cột được đánh số ở ô vuông trên cùng của nó.)
Kiểm tra đầu vào và đầu ra dự kiến
Đầu vào:
5 5
# ##
#
#
#
## #
Đầu ra (bỏ qua các dòng bình luận):
1 1 2
2 1 3
3 2 2
4 2 4
5 2 5
6 3 1
7 3 4
8 4 1
9 4 3
10 5 3
Qua một bên
Đây là lần đầu tiên hy vọng sẽ có một vài thử thách liên quan đến ô chữ. Tôi dự định sử dụng một tập hợp các định dạng tệp nhất quán xuyên suốt và để xây dựng một bộ tiện ích liên quan đến ô chữ đáng kính trong quy trình. Ví dụ, một câu đố tiếp theo sẽ yêu cầu in một phiên bản ô chữ ASCII dựa trên đầu vào và đầu ra của câu đố này.
'\n'
trong c trên tất cả các nền tảng. Giả định là tệp đầu vào được sản xuất trên cùng một hệ thống sẽ xử lý nó, vì vậy vấn đề này cần được minh bạch. Một lưu ý chung về môn đánh gôn: nếu bạn đang làm việc bằng một ngôn ngữ lạ hoặc trên một nền tảng lạ, hãy ghi chú lại bất cứ điều gì có thể khiến người đọc ngạc nhiên. Mọi người sẽ thực hiện trợ cấp cho việc đó trong việc đánh giá trình của bạn.