골
이 대회에서는 촛불 하나가 들어있는 무작위 방이 주어집니다. 목표는 어두운 부분을로 대체하여 촛불의 조명을 결정하는 가장 짧은 프로그램 (이것은 골프)을 작성하는 것 @
입니다. 프로그램은 STDIN에서 공간을 가져 와서 출력은 STDOUT으로 인쇄되어야합니다.
입력 / 방 예
+------+
| C |
| +--+
| \ |
+---------+
촛불은로 표현 C
하고, 벽은 / 거울이 표현하는 |
, -
, /
, 또는 \
. 벽 자체는 거울입니다. 방의 구석은로 표시됩니다 +
.
방에는 대각선 벽이 없으며, 빛이 방 밖으로 나오지 않습니다.
또한 줄의 첫 번째 문자는 항상 방에서 벽의 일부가됩니다. 각 줄의 마지막 문자는 방의 반대쪽 벽이됩니다. 이 둘 사이의 문자는 방 밖에있을 수 없습니다.
빛과 반사
양초는 8 가지 기본 방향 (N, S, E, W, NE, SE, SW 및 NW)으로 8 개의 레이저와 같은 광선을 방출합니다. 이 광선은 아래 설명과 같이 거울에서 반사됩니다.
Old Direction of Travel | Mirror | New Direction
N S E W NE SE SW NW / E W N S -- -- -- --
N S E W NE SE SW NW \ W E S N -- -- -- --
N S E W NE SE SW NW | - - - - NW SW NE SW
N S E W NE SE SW NW - - - - - SE NE SW NE
A -
는 흡수되는 빛을 나타냅니다. 빛은 항상 C 또는 +에 흡수됩니다. 거울과 같은 공간을 차지할 때만 빛이 거울에서 반사됩니다. 종이에 반사를 그릴 때 이러한 규칙을 이해하기가 훨씬 쉽습니다.
출력 예
출력으로 프로그램은 조명 된 방의 이미지를 인쇄해야합니다. 어두운 점은으로 기록되고 @
밝은 점은 비워두고 미러는 영향을받지 않습니다. 위의 예에서 출력은 다음과 같습니다.
+------+
| C |
|@ @ +--+
| @\ |
+---------+
즉, 광선을 뽑으면 표시된 공간에 도달하지 않습니다 @
.
더 많은 예
Input:
+-----+
| |
| |
| C |
| |
| |
+-----+
Output:
+-----+
| @ @ |
|@ @|
| C |
|@ @|
| @ @ |
+-----+
Input:
+-----+
| \ |
|/ C \+-+
| |
| \ - ++
+------+
Output:
+-----+
| \ @|
|/ C \+-+
| @|
| @\ -@++
+------+
@
너무 커서는 안됩니까?