도미노 설정이 주어지면 당신의 임무는 어떤 도미노가 떨어지고 그렇지 않은지를 알아내는 것입니다.
입력
도미노 설정의 직사각형 ASCII 표현을 가져옵니다. ASCII 그리드에는 다음 문자가 사용됩니다.
(공간) : 빈 셀
|
,-
,/
,\
: 도미노
도미노는 8 문자로 나눌 수 있으며 다음 문자로 표시됩니다 (WASD 방향과 유사).
Q W E
A D
Z X C
하나 이상의 도미노가이 문자 중 하나로 대체되어 시작시 도미노가 밀려 났음을 나타냅니다. 예를 들면 다음과 같습니다.
D||||/
- /
- -
- -
/|||||
이 도전이 입력 파싱의 연습으로 바뀌기를 원하지 않기 때문에 다음 입력 형식 중 하나가 허용됩니다.
- 그리드가있는 문자열 (선택적으로 도움이된다면 치수가 앞에옵니다)
- 각 줄에 대해 하나의 문자열이있는 배열 / 목록 / 튜플 (선택적으로 너비 및 높이 정수와 함께)
- 각 격자 셀에 대해 하나의 문자열 / 문자가있는 (중첩 된) 배열 / 목록 / 튜플 (선택적으로 너비 및 높이 변수와 함께)
STDIN에서 읽거나 함수 인수를 가져 오거나 입력이 변수에 저장 될 것으로 예상 할 수 있습니다.
산출
STDOUT에 쓰거나 유효한 입력 형식으로 결과 그리드를 반환 (또는 변수에 저장)하여 도미노가 떨어 졌거나 그렇지 않은 것을 나타냅니다. 즉, 타락한 각 도미노로 교체 #
하고 입력 된대로 각 도미노를 그대로 둡니다.
규칙
물론, 도미노는 설정을 통해 가을을 전파합니다. 경쟁 조건이있을 수 있으므로 고정 시간 단계가 있고 하강 시간 단계 당 하나의 그리드 셀을 전파한다고 가정합니다.
도미노는 일반적으로 직관적으로 기대하는 방식을 따르지 않지만 엄격한 상식 사양은 상당히 길다. 죄송합니다. 예제가 도움이 되길 바랍니다. 다음은 모든 고유 한 2 타일 조합 (회전 및 반사까지 )의 요지 입니다. 엄격한 규칙을 읽으십시오.
각 도미노는 두 방향으로 만 떨어질 수 있습니다.
W Q E
A | D - / \
X C Z
도미노가 떨어질 때마다 세포는 가을 방향으로 영향을 미칩니다. 해당 셀에 동일한 방향 또는 45도 다른 방향으로 떨어질 수있는 도미노가 포함되어 있으면 다음 번 단계에서 도미노가 그렇게합니다.
예 :
D| -> DD (falls in same direction)
D/ -> DC (falls at 45 degrees)
C -> C (falls at 45 degrees)
- X
대각선으로 향한 도미노 ( /
또는 \
)가 떨어질 때마다 셀과 셀이 떨어지는 방향으로 닿는 두 셀에도 영향을줍니다. 이 셀에 원래 도미노와 같은 방향으로 떨어지거나 축에서 정렬 된 방향으로 떨어질 수있는 도미노가 포함되어 있으면 다음 번 단계에서 도미노가 그렇게합니다.
예 :
C/ -> CC (the cell in the direction of the fall is the one below
the /, so it falls in the same direction)
C| -> CD (falls in the axis-aligned direction away from the C)
C- -> C- (the direction away from the Q is W,
or but neither - nor \ can fall to W)
C\ -> C\
예외 : 도미노가 한 번에 올바른 방향으로 밀려 나면 (즉, 위의 규칙 중 하나라도 충돌하는 경우) 넘어지지 않습니다.
예 :
D|A -> D|A (central domino in pushed in both directions)
Z Z (although it's pushed in one direction by two dominoes
D\A -> D\A and in the other by only one, it doesn't fall)
X X (the domino is being pushed from two opposing sides
D-A -> DXA D and A, but neither is valid for that domino. Hence,
there is no conflict and the X can push the domino over)
Z Z (pushed in the same direction by two dominoes, so falls)
\A -> ZA
Z Z Z (once the conflict arises, the affected
\ -> Z -> Z domino is locked in its position and can't
D|A D|A D|A be pushed over by future dominoes)
예
8 5
D||||/ ######
- / - #
- - --> - #
- - - #
/||||| /|||||
===============================================
17 9
E|/|||/ #######
- - # #
- - # #
- - # #
/|||/|||||||||/ --> ###############
/ - # #
/ - # -
/ - # #
/|||||\ #######
===============================================
19 8
\|/ ###
- - # #
D||||/|\ /|||/ ######## #####
/ - # #
- \- --> - \#
\- \ - #- \ #
D||||\ / \ / ###### / \ #
|\ ||||| |\ #####
==============================================
11 11
-\\\/|\|\-| -\##/|###-|
-|\\||\-|\- -|#####-|\-
|\//\//|-/- |#//\//|#/-
\|//|-|\-\| #####-|##\|
---||/-\//| #-######//|
///|||\---- --> #/#####----
-|/---|-|-\ #|##--|-|-\
--|--\/|/// ####-\/|///
/|//--|//-| ####--|//-|
|/\-|||-/-\ |/\####-/-\
E||\-|\---/ ####-|\---/
내가 실수했다고 생각되면 알려주십시오 (특히 마지막 실수).
E
(오히려 차이 가 나는 것은 아닙니다.) 들여 쓰기 깊이를 최소한으로 줄이면 많은 문자를 저장할 수 있습니다.