배경
이 문제는의 명예에 apsillers 원화, 보이는 것처럼 간단하지 그들의 도전에 PPCG 2016 최고의 카테고리를 수 내 4 주 음악 상자 놀이 노래가? 축하합니다!
"내 정보"페이지에서이 사용자는 Game of Life 셀룰러 오토 마톤을 위한 깔끔한 시뮬레이터를 보유하고 있습니다. 반면에, aspillera 라는 단어 는 "arrowslit"의 스페인어입니다. 이러한 사실에 비추어 볼 때,이 도전은 Game of Life의 화살에 관한 것입니다.
생명의 게임 arrowslits
GoL에서는 글라이더 로 화살표 를, 일련의 블록으로 벽을 표현합니다 . 단일 글라이더가 위에서 벽에 접근하여 벽의 틈새 (화살표)를 통해 비행하려고합니다. 당신의 임무는 글라이더가 화살촉을 통과하거나 벽에 충돌하는지 확인하는 것입니다.
입력
입력은 GoL 구성을 나타내는 비트 그리드입니다. 합리적인 형식 (2 개의 인쇄 가능한 ASCII 문자, 문자열 목록, 정수의 2D 배열, 부울의 2D 배열 등)의 여러 줄 문자열을 사용할 수 있습니다. 명확성을 기하기 .#
위해 다음에서 여러 줄 문자 를 사용합니다.
입력에는 몇 가지 속성이 있습니다. 먼저, 일부 N ≥ 6 의 높이는 2N 이고 너비는 2N + 2 이상 입니다. 입력은 맨 위 세 행 어딘가가 글라이더이고 두 가운데 행에 블록 벽이 있다는 점을 제외하고는 모두 s입니다. 글라이더는 남서쪽 또는 남동쪽으로 향하며 벽을 제거하면 아래쪽 가장자리에 닿기 전에 측면 가장자리를 통과하지 않지만 그리드의 모서리에 도달 할 수 있습니다. 글라이더는 초기에 적어도 하나의 단계에 의해 좌측 및 우측 에지로부터 분리된다 . 어느 단계 에나있을 수 있습니다..
.
벽은 블록으로 구성되며, 블록은 하나의 열로 구분되며 .
한 곳을 제외하고는 두 열 이상의 열로 구분됩니다 .
. 글라이더와 마찬가지로 가장 왼쪽과 가장 오른쪽 블록도 한 단계 씩 가장자리에서 분리됩니다 .
. 왼쪽 가장자리에는 항상 하나 이상의 블록이 있고 오른쪽 가장자리에는 하나의 블록이 있습니다.
다음은 유효한 입력 그리드의 예입니다.
....#......................
..#.#......................
...##......................
...........................
...........................
...........................
.##.##............##.##.##.
.##.##............##.##.##.
...........................
...........................
...........................
...........................
...........................
...........................
산출
명시된 바와 같이, 글라이더가 벽에 부딪 치거나 남쪽 가장자리를 통과하는지 여부를 결정해야합니다. 이 문제를 해결하기 위해 나중에 시뮬레이션에서 수행되는 작업에 관계없이 구성이 더 이상 단일 글라이더와 블록 벽으로 구성되지 않으면 충돌이 발생합니다. 다음 다이어그램은 두 가지 단계에서 남동 글라이더가 충돌하지 않고 통과 할 수있는 가장 작은 간격을 보여줍니다 (남서쪽 글라이더의 조건은 대칭 임).
...#...........
.#.#...........
..##...........
...............
...............
##...........##
##...........##
...#...........
....#..........
..###..........
...............
...............
##...........##
##...........##
글라이더가 벽을 통과하면 진실한 값을 출력하고 그렇지 않으면 거짓 값을 출력해야합니다. 위의 예에서는 글라이더가 벽의 왼쪽 부분에 충돌하기 때문에 올바른 출력이 잘못되었습니다.
이 문제를 해결하기 위해 2 * (높이-3) 단계 의 입력에서 GoL을 시뮬레이션 하면 글라이더가 예상 위치의 맨 아래 행에 있고 벽이 손상되지 않은 경우 출력이 사실이라고 가정 할 수 있습니다 .
규칙과 득점
전체 프로그램이나 함수를 작성할 수 있습니다. 가장 낮은 바이트 수가 이깁니다.
테스트 사례
테스트 케이스 는 상당히 크기 때문에 GitHub 리포지토리에 수집했습니다 . 개별 파일에 대한 링크는 다음과 같습니다.