Lập trình viên của vườn
Là một nhà phát triển phần mềm chuyên nghiệp, bạn không thể mạo hiểm tiếp xúc với ánh sáng phi nhân tạo của mặt trời, nhưng bạn cũng có một điểm mềm cho hoa và muốn giữ cho khu vườn của bạn luôn trong tình trạng tốt quanh năm.
Để kết thúc này, một người làm vườn được thuê mỗi tháng để dọn dẹp các bồn hoa dưới chân nhà của bạn. Tuy nhiên, bạn cần chắc chắn rằng người làm vườn đang thực hiện công việc của mình đúng cách và đưa ra một khoản thanh toán phù hợp cho người làm việc chăm chỉ. Đương nhiên một giải pháp phần mềm là tốt nhất.
Đầu vào
Chương trình của bạn sẽ được cung cấp đầu vào mô tả các thảm hoa như hiện tại và chi tiết về các mục cần phải loại bỏ. Chương trình phải xuất ra khu vườn không có sự lộn xộn và in ra một khoản chi trả cho những người làm vườn. Đầu vào có thể là từ STDIN hoặc là một đối số dòng lệnh.
Dòng đầu tiên có định dạng
width height unwanted_item_type_count
trong đó widthchiều rộng của thảm hoa, heightlà chiều cao của thảm hoa (cả hai ký tự ASCII) và unwanted_item_type_countcho bạn biết có bao nhiêu dòng sau sẽ chứa mô tả về một loại vật phẩm sẽ bị xóa khỏi vườn.
Mỗi dòng cho mỗi loại mặt hàng không mong muốn có định dạng
width height string_representation name fee_per_item
trong đó widthchiều rộng của mục, heightlà chiều cao của mục (cả hai ký tự ASCII), string_representationlà biểu diễn chuỗi của mục không ngắt dòng, namelà định danh cho loại mục (khoảng trắng sẽ được thay thế bằng dấu gạch dưới) và fee_per_itemlà người làm vườn phải trả bao nhiêu cho việc loại bỏ từng loại vật phẩm.
Ví dụ
3 2 .R.\|/ rouge_flower 3
Đại diện cho một loại mục tên rouge_flower, chi phí 3 để loại bỏ, và trông như thế này:
.R.
\|/
Các mục sẽ không chứa khoảng trắng và không có mục nào có thể có đường viền bao gồm các dấu chấm và biểu diễn chuỗi cũng sẽ có kích thước chính xác được mô tả. Do đó, tất cả những điều sau đây là đầu vào không hợp lệ:
3 1 ( ) space 0
1 1 . dot 0
2 1 .! bang 0
3 2 .@.\|/. plant 0
Lưu ý rằng 0 tuy nhiên là một khoản phí hợp lệ (phí sẽ luôn là số nguyên lớn hơn -1).
Cũng lưu ý rằng thảm hoa chủ yếu được tạo thành từ các dấu chấm ( .) chứ không phải là khoảng trắng và bạn có thể sử dụng khoảng trắng một cách an toàn làm phân định cho tất cả các đầu vào. Các thảm hoa luôn được giới hạn bởi các dấu chấm chính nó.
Sau khi các loại vật phẩm không mong muốn được liệt kê, sau đó đến đại diện ASCII của thảm hoa có chiều rộng và chiều cao nhất định.
Đầu ra
Đầu ra phải là STDOUT hoặc thay thế phù hợp nếu ngôn ngữ của bạn không hỗ trợ nó.
Đầu ra bắt đầu bằng một bản in ra khỏi thảm hoa, nhưng với tất cả các mục không mong muốn được loại bỏ (thay thế bằng dấu chấm), vì vậy bạn có thể thấy nó sẽ xuất hiện như thế nào và kiểm tra người làm vườn đã thực hiện công việc của mình. Mỗi vật phẩm trong bồn hoa sẽ được bao quanh bởi một hình chữ nhật các chấm và sẽ là một vật phẩm liền kề nhau (tức là sẽ không có các chấm riêng biệt bên trong vật phẩm). Ví dụ
.....
.#.#.
.....
hiển thị 2 mục riêng biệt
.....
.\@/.
.....
hiển thị 1 mục
......
.#....
....|.
....|.
.o--/.
......
là không hợp lệ, vì trong khi đá (#) có thể được khớp, con rắn (bạn không thể nói đó là rắn?) không thể vì đá cản trở yêu cầu xung quanh các chấm.
...
\@.
...
Điều này cũng không hợp lệ, vì ốc sên nằm ở rìa của thảm hoa và cạnh phải luôn được giới hạn bởi các dấu chấm trong một đầu vào hợp lệ.
Sau này, cần có một danh sách của từng loại mặt hàng không mong muốn, đưa ra số lượng, chi phí cho mỗi mặt hàng và chi phí cho tất cả các mặt hàng (tính * chi phí cho mỗi mặt hàng), theo định dạng:
<count> <name> at <cost_per_item> costs <cost>
Sau này, cần có một dòng duy nhất cho tổng chi phí (tổng chi phí cho các mục không mong muốn):
total cost <total_cost>
Thí dụ
Đối với đầu vào này
25 18 3
4 2 .\/.\\// weeds 5
2 1 \@ snails 2
1 1 # stones 1
.........................
.\@/.................\@..
............\/...........
......O....\\//..^|^.....
.#...\|/.........^|^.....
..................|......
.................\|/.....
..\@.....\/...........#..
........\\//....#........
....*....................
...\|/......\/......\@/..
...........\\//..........
..................*......
.......\@/.......\|/.....
...O.....................
..\|/.......*............
.......#...\|/....\@.....
.........................
Chương trình sẽ tạo ra đầu ra này
.........................
.\@/.....................
.........................
......O..........^|^.....
.....\|/.........^|^.....
..................|......
.................\|/.....
.........................
.........................
....*....................
...\|/..............\@/..
.........................
..................*......
.......\@/.......\|/.....
...O.....................
..\|/.......*............
...........\|/...........
.........................
3 weeds at 5 costs 15
3 snails at 2 costs 6
4 stones at 1 costs 4
total cost 25
Đầu ra phải được kết thúc bằng ngắt dòng.
Đây là môn đánh gôn, có thể là đoạn mã ngắn nhất sẽ thắng.
Trường hợp kiểm tra bổ sung
Chỉnh sửa: điều này được sử dụng để chứa Unicode, không được phép trong thảm hoa, quá hiện đại. Điều này đã được khắc phục, xin lỗi về điều đó.
25 15 5
5 3 ..@..\\|//.\|/. overgrown_plants 3
5 3 @-o....|...\|/. semi-articulated_plant 4
3 2 .|.\@/ mutant_plants 5
1 1 $ dollars 0
1 1 # stones 1
.........................
........@................
....$..\|/...........@...
............|.......\|/..
...#.......\@/...........
.........................
.........................
......@.......@......@...
.....\|/....\\|//...\|/..
.............\|/.........
.#....................#..
.........$.......|.......
...\/.......\/..\@/..\/..
..\\//.....\\//.....\\//.
.........................
Đầu ra dự kiến:
.........................
........@................
.......\|/...........@...
....................\|/..
.........................
.........................
.........................
......@..............@...
.....\|/............\|/..
.........................
.........................
.........................
...\/.......\/.......\/..
..\\//.....\\//.....\\//.
.........................
1 overgrown_plants at 3 costs 3
0 semi-articulated_plants at 4 costs 0
2 mutant_plants at 5 costs 10
2 dollars at 0 costs 0
3 stones at 1 costs 3
total cost 16
\@và @/ví dụ .. Hoặc họ bị ràng buộc chỉ về phía tây vĩnh viễn?