비디오 게임 Minecraft 는 가상 세계를 구성하는 3D 정수 격자 에 다른 유형의 블록을 배치하고 제거하는 것에 관한 것 입니다. 각 격자 점은 정확히 하나의 블록을 포함하거나 비어있을 수 있습니다 ( 공식적으로 " 공기 "블록). 이 도전에서 우리는 3D 세계의 하나의 수평 2D 평면과 하나의 블록 유형 인 가슴 에만 관심을 가질 것 입니다.
상자는 플레이어가 아이템을 저장할 수있게합니다. 두 개의 가슴이 동일한 수평면에 직교로 인접 해 있으면 두 개의 가슴이 연결되고 두 배의 용량이있는 두 개의 가슴이 연결됩니다. 이중 상자보다 큰 것은 만들 수 없습니다. 트리플 상자 나 쿼드 상자가 없습니다.
가슴 블록은 네 개의 직교 인접 점이 모두 비어 있거나 정확히 하나에 이미 이중 가슴의 일부가 아닌 가슴 블록이있는 경우 빈 격자 점에만 배치 할 수 있습니다. 이 배치 규칙은 어떤 가슴 블록이 이중 가슴을 형성하기 위해 연결되어 있는지에 대한 모호성을 절대로 보장하지 않습니다.
예를 들어, .
빈 공간이고 C
가슴 이라고 가정합니다 (숫자는 빈 공간이며 식별 목적으로 만 사용됩니다).
.......C..
.1.C2.C3..
........5C
.CC4..CC..
..........
- 네 개의 이웃이 비어 있기 때문에 가슴을 지점 1에 놓을 수 있습니다.
- 인접한 가슴이 (아직) 이중 가슴의 일부가 아니므로 가슴을 스팟 2에 놓을 수 있습니다.
- 이중 가슴이 어떻게 형성되는지 모호하기 때문에 가슴을 3 자리에 넣을 수 없습니다.
- 인접한 상자가 이미 이중 상자의 일부이므로 상자를 지점 4에 배치 할 수 없습니다.
- 가슴은 자리 5에 놓을 수 있습니다. 대각선으로 인접한 이중 상자는 아무 영향을 미치지 않습니다.
그리드 너머의 영역이 비어 있다고 가정하면 그리드의 모든 것을 가슴을 배치 할 수 .
있는 *
경우로 변경 하면 다음과 같은 결과가 발생합니다.
******.C**
***C**C.**
*..***..*C
.CC.*.CC.*
*..***..**
물론 모든 *
공간이 동시에 가슴으로 채워질 수는 없지만 가슴이 하나만 있으면 어느 공간 에나 둘 수 있습니다.
도전
.
및 C
그리드 를받는 프로그램 또는 함수를 작성하고 가슴을 배치하거나 결과 그리드를 인쇄하거나 반환 할 수 .
있는 *
경우 마다 로 변경 합니다.
입력은 stdin 또는 파일 또는 함수에 대한 문자열 인수 일 수 있습니다.
, 텍스트의 예를 완벽하게 직사각형 그리드, 적어도 1 개 문자 너비와 높이 만 포함 - 당신은 입력이 잘 형성되어 가정 할 수
.
및C
선택적으로 마지막 행 다음에 후행 줄 바꿈이 있다고 가정 할 수있다 (그리고 출력에 하나있을 수 있습니다 ).입력에서 가슴의 배열이 위의 규칙과 일치한다고 가정 할 수 있습니다. 어떤 상자가 이중 상자를 형성하는지 모호성이 없을 것입니다.
원하는 경우, 당신은 어떤 세 가지 사용할 수 있습니다 인쇄 가능한 ASCII 대신에 문자를
.
,C
하고*
. 줄 바꿈 대신 다른 것을 사용할 수 없습니다.
채점
가장 적은 바이트를 가진 제출이 이깁니다.
좀 더 어려운 마인 크래프트 관련 챌린지는 Nether Portal Detection을 사용해보십시오 .