표준 벽돌 벽돌 을 표현해 봅시다 [__]
(그리고 꼭대기가 열려 있다는 사실을 무시하십시오). 이 벽돌이 쌓이면 벽돌 구성에서 평소와 같이 다른 모든 층이 벽돌 반으로 오프셋됩니다.
[__][__][__][__]
[__][__][__][__]
[__][__][__][__]
[__][__][__][__]
따라서 각 벽돌에는 최대 6 개의 이웃이 있으며 두 개의 벽돌을 세로로 직접 정렬하는 것은 불가능합니다.
요점은이 벽돌의 배열은 모르타르 가 아니라 중력에 의해 함께 유지된다는 것입니다. 따라서 구조물의 각 벽돌이 안정적이어야하며, 그렇지 않으면 전체 구조물이 불안정합니다.
개별 벽돌이 안정 될 수있는 세 가지 방법이 있습니다.
- 바닥에있는 벽돌 (가장 낮은 벽돌)은 안정적입니다.
바로 아래에 두 개의 벽돌이있는 벽돌은 안정적입니다.
[__] <- this brick is stable [__][__] <- because these bricks hold it up
같은 측면에 벽돌이 위와 아래에있는 벽돌은 안정적입니다.
[__] [__] [__] [__] <- these middle bricks are stable [__] [__] because the upper and lower bricks clamp them in [__] [__] [__] [__] <- these middle bricks are NOT stable [__] [__]
이러한 규칙에서 우리는 예를 들어
[__][__][__][__]
[__][__][__][__]
[__][__][__][__]
[__][__][__][__]
오른쪽 상단 벽돌이 불안정하기 때문에 불안정합니다.
벽돌 구조는 모든 벽돌이 안정적인 경우에만 안정적입니다.
도전
당신의 임무는 벽돌 구조 문자열을 받아 구조가 안정적인 경우 진실한 값을 반환하고 불안정하면 거짓 값을 반환하는 함수를 작성하는 것입니다. ( 진실 / 거짓 정의 )
입력 문자열은 임의로 클 수 있지만 항상 벽돌이없는 영역을 채우는 공간이있는 직사각형 문자 그리드입니다. 문자 그리드 너비는 4로 나눌 수 있지만 높이는 홀수이거나 짝수 일 수 있습니다.
브릭 그리드는 항상 왼쪽 하단 브릭 위치의 위와 오른쪽으로 확장됩니다.
.
.
.
BRK?BRK?BRK?BRK?
BRK?BRK?BRK?BRK?BRK?
BRK?BRK?BRK?BRK?
BRK?BRK?BRK?BRK?BRK? . . .
BRK?BRK?BRK?BRK?
BRK?BRK?BRK?BRK?BRK?
구조에 따라 각각 BRK?
벽돌을 나타냅니다 ([__]
) 또는 빈 공간 (4 칸)을 나타냅니다.
하프 브릭 캐비티는 문자 그리드가 직사각형이되도록 공백으로 채워져 있습니다.
채점
바이트 단위 의 가장 짧은 코드 이깁니다.
노트
- 원하는 경우 사용할 수 있습니다
.
공백 대신 공백 대신 문자를 . - 빈 문자열은 안정적인 것으로 간주됩니다.
- 언어에 함수가 없으면 명명 된 문자열 변수를 입력으로 사용하고 결과를 다른 변수에 할당 할 수 있습니다.
- 언어에 문자열이 없으면 입력에 적합한 것으로 보일 수 있습니다.
테스트 사례
빈 줄로 구분 된 다양한 테스트 사례. .
빈 공간을위한 공간 대신 명확성 을 위해 사용됩니다.
안정된:
[__]
..[__]..
[__][__]
........[__]........
......[__][__]......
........[__]........
..[__][__]..
[__][__][__]
..[__][__]..
[__]....[__]
............[__]..
..[__][__][__][__]
[__][__][__][__]..
..[__][__][__][__]
[__][__][__][__]..
..[__]........[__]..
[__][__][__][__][__]
..[__][__][__][__]..
....[__][__][__]....
......[__][__]......
........[__]........
불안정한:
..[__]..
........
..[__]..
[__]....
..[__]..
....[__]
..[__][__]..
[__]....[__]
..[__][__]..
[__]....[__]
..[__][__][__][__]
[__][__][__][__]..
..[__][__][__][__]
[__][__][__][__]..
[__][__][__][__][__]
..[__][__][__][__]..
....[__][__][__]....
......[__][__]......
........[__]........
........[__]....
......[__][__]..
....[__][__]....
..[__][__]......
[__][__]........
..[__]..........
(정신적으로 그 선들을 서로 위에 쌓아야합니다. 요점은 규칙에 따라 무게 중심이지면과의 접촉점으로부터 멀리 떨어져있는 구조물을 허용한다는 것입니다. 이것을 피하기 위해 조일 수 있어야합니다 , 물리 엔진이 필요하지 않은 경우, 느낌이