프로그래머의 정원
전문 소프트웨어 개발자는 가혹한 비인 공적인 태양 광선에 노출 될 위험이 없지만 꽃을위한 부드러운 지점이 있으며 일년 내내 정원을 좋은 모양으로 유지하려고합니다.
이를 위해 정원사를 매월 고용하여 집 기슭의 화단을 정리합니다. 그러나 당신은 정원사가 자신의 일을 제대로하고 있는지 확인하고 열심히 일하는 동료를 위해 적절한 지불을해야합니다. 당연히 소프트웨어 솔루션이 가장 좋습니다.
입력
프로그램에 현재 표시된대로 화단을 설명하는 입력과 제거해야 할 항목의 세부 사항이 제공됩니다. 이 프로그램은 혼란이없는 정원을 출력하고 정원사의 지불 내역을 인쇄해야합니다. 입력은 STDIN 또는 단일 명령 행 인수 일 수 있습니다.
첫 번째 입력 라인은
width height unwanted_item_type_count
여기서 width
화단의 너비는 화단 height
의 높이 (ASCII 문자로 표시)이며 unwanted_item_type_count
정원에서 제거 할 항목 유형에 대한 설명이 포함 된 행 수를 알려줍니다.
원치 않는 각 유형의 항목에 대한 각 줄의 형식은
width height string_representation name fee_per_item
여기서 width
항목의 너비, 항목 height
의 높이 (ASCII 문자로 표시), string_representation
줄 바꿈이없는 항목의 문자열 표현, 항목 name
유형의 식별자 (공백은 밑줄로 바 will) 및 fee_per_item
각 유형의 항목을 제거 할 때 정원사가 지불해야하는 금액입니다.
예를 들어
3 2 .R.\|/ rouge_flower 3
rouge_flower
제거 할 비용이 3 인 name의 항목 유형을 나타 냅니다.
.R.
\|/
항목은 공백을 포함하지 않으며 항목이 완전히 점으로 구성된 테두리를 가질 수 없으며 문자열 표현도 정확한 크기로 표시됩니다. 따라서 다음은 모두 유효하지 않은 입력입니다.
3 1 ( ) space 0
1 1 . dot 0
2 1 .! bang 0
3 2 .@.\|/. plant 0
그러나 0은 유효한 수수료입니다 (수수료는 항상 -1보다 큰 정수임).
화단은 주로 .
공백이 아닌 점 ( ) 으로 구성 되며 모든 입력의 공백으로 공백을 안전하게 사용할 수 있습니다. 화단은 항상 점 자체로 묶여 있습니다.
원치 않는 항목 유형이 나열되면 주어진 너비와 높이의 화단의 ASCII 표현이 제공됩니다.
산출
출력은 STDOUT으로, 또는 언어가 지원하지 않는 경우 적절한 대안이어야합니다.
출력은 화단의 인쇄물로 시작되지만 원치 않는 모든 항목이 제거되고 (점으로 대체 됨) 정원사가 자신의 작업을 수행 한 방법을 확인하고 확인할 수 있습니다. 화단의 각 항목은 사각형의 점으로 둘러싸여 있으며 하나의 연속 된 항목이됩니다 (즉 , 항목 안에 분리 점은 없습니다 ). 예를 들어
.....
.#.#.
.....
2 개의 개별 항목 표시
.....
.\@/.
.....
1 개 항목을 표시합니다
......
.#....
....|.
....|.
.o--/.
......
돌 (#)을 일치시킬 수 있지만 뱀 (뱀이라고 말할 수 없습니까?)은 돌이 필요한 점 주위를 방해하기 때문에 유효하지 않습니다.
...
\@.
...
달팽이가 화단의 가장자리에 있기 때문에 유효하지 않으며 가장자리는 항상 유효한 입력의 점으로 묶어야합니다.
그런 다음, 각 유형의 원치 않는 항목 목록이 있어야하며, 개수, 항목 당 비용 및 모든 항목에 대한 비용 (항목 * 항목 당 비용)을 다음 형식으로 제공해야합니다.
<count> <name> at <cost_per_item> costs <cost>
그런 다음 총 비용 (원치 않는 품목의 비용 합계)을 산출하는 단일 행이 있어야합니다.
total cost <total_cost>
예
이 주어진 입력에 대해
25 18 3
4 2 .\/.\\// weeds 5
2 1 \@ snails 2
1 1 # stones 1
.........................
.\@/.................\@..
............\/...........
......O....\\//..^|^.....
.#...\|/.........^|^.....
..................|......
.................\|/.....
..\@.....\/...........#..
........\\//....#........
....*....................
...\|/......\/......\@/..
...........\\//..........
..................*......
.......\@/.......\|/.....
...O.....................
..\|/.......*............
.......#...\|/....\@.....
.........................
프로그램은이 출력을 생성해야합니다
.........................
.\@/.....................
.........................
......O..........^|^.....
.....\|/.........^|^.....
..................|......
.................\|/.....
.........................
.........................
....*....................
...\|/..............\@/..
.........................
..................*......
.......\@/.......\|/.....
...O.....................
..\|/.......*............
...........\|/...........
.........................
3 weeds at 5 costs 15
3 snails at 2 costs 6
4 stones at 1 costs 4
total cost 25
줄 바꿈으로 출력 을 종료 해야합니다 .
이것은 코드 골프이며, 가장 짧은 코드가 이길 수 있습니다.
추가 테스트 사례
편집 : 이것은 너무 현대에 화단에서 허용되지 않는 유니 코드를 포함하는 데 사용되었습니다. 이 문제는 해결되었습니다. 죄송합니다.
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
.........................
........@................
....$..\|/...........@...
............|.......\|/..
...#.......\@/...........
.........................
.........................
......@.......@......@...
.....\|/....\\|//...\|/..
.............\|/.........
.#....................#..
.........$.......|.......
...\/.......\/..\@/..\/..
..\\//.....\\//.....\\//.
.........................
예상 출력 :
.........................
........@................
.......\|/...........@...
....................\|/..
.........................
.........................
.........................
......@..............@...
.....\|/............\|/..
.........................
.........................
.........................
...\/.......\/.......\/..
..\\//.....\\//.....\\//.
.........................
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
\@
그리고 @/
예를 들어 .. 아니면 그들이 영원히 서쪽 지점에 바인딩?