이 질문은 온라인으로 플레이 할 수있는 숫자 배치 퍼즐 타워 (스카이 스크래퍼라고도 함)를 기반으로합니다 . 목표는 퍼즐을 풀고 각 행과 열을 따라 보이는 타워의 수를 알아내는 것입니다. 이것은 코드 골프이므로 가장 적은 바이트가 이깁니다.
타워 작동 방식
A - 타워 퍼즐에 대한 해결책은 라틴 정사각형 n*n
모든 행과 열이 숫자의 순열 포함하는 그리드 1
를 통해를 n
. 예를 들면 다음과 n=5
같습니다.
4 3 5 2 1
5 4 1 3 2
1 5 2 4 3
2 1 3 5 4
3 2 4 1 5
각 행과 열에는 다음과 같이 각 끝에 단서가 표시됩니다.
2 3 1 4 5
v v v v v
2 > 4 3 5 2 1 < 3
1 > 5 4 1 3 2 < 4
2 > 1 5 2 4 3 < 3
3 > 2 1 3 5 4 < 2
3 > 3 2 4 1 5 < 1
^ ^ ^ ^ ^
2 2 2 2 1
각 단서에서 번호 1
에 n
당신이 번호는 그 높이 타워로 취급하는 경우, 그 방향에서 행 / 열 함께보고 "를 참조하십시오"얼마나 많은 타워가 당신을 알려줍니다. 각 타워는 그 뒤에 더 짧은 타워를 차단합니다. 다시 말해, 여러분이 볼 수있는 탑은 그 이전의 어떤 탑보다 높은 탑입니다.
예를 들어 첫 번째 행을 봅시다.
2 > 4 3 5 2 1 < 3
그것은의 단서가 2
당신이 볼 수 있기 때문에 왼쪽을 4
하고를 5
. 4
블록 3
에서 시력과 5
다른 블록의 모든 것을. 오른쪽에서, 당신은 볼 수있는 3
타워 : 1
, 2
,와 5
.
프로그램 요구 사항
숫자의 그리드를 가져 와서 단서를 출력하거나 인쇄하는 프로그램이나 함수를 작성하십시오.
입력
가있는 n*n
라틴 정사각형 2<=n<=9
.
형식이 유연합니다. 숫자 나 숫자 문자가 포함 된 표나 목록을 나타내는 모든 데이터 구조를 사용할 수 있습니다. 행 사이에 구분 기호가 필요하거나 구분 기호가 전혀 없을 수 있습니다. 목록, 목록 목록, 행렬, 토큰으로 구분 된 문자열과 같은 가능성이 있습니다.
43521 54132 15243 21354 32415,
공백이없는 문자열
n
입력의 일부로 제공되지 않았습니다 .
산출
왼쪽 상단부터 시계 방향으로 실마리를 반환하거나 인쇄합니다. 따라서 먼저 위쪽 단서는 오른쪽으로 읽은 다음 오른쪽 단서는 아래쪽으로 읽은 다음 아래쪽 단서는 왼쪽으로 읽은 다음 왼쪽 단서는 위쪽으로 읽습니다.
이것은 23145 34321 12222 33212
이전 예에 대한 것입니다
2 3 1 4 5
v v v v v
2 > 4 3 5 2 1 < 3
1 > 5 4 1 3 2 < 4
2 > 1 5 2 4 3 < 3
3 > 2 1 3 5 4 < 2
3 > 3 2 4 1 5 < 1
^ ^ ^ ^ ^
2 2 2 2 1
입력과 마찬가지로 목록, 문자열 또는 정렬 된 구조를 사용할 수 있습니다. 네 개의 "그룹"은 중첩되거나 평평한 구조로 분리되거나 분리되지 않을 수 있습니다. 그러나 각 그룹마다 형식이 동일해야합니다.
테스트 사례 예 :
(입력 / 출력 형식이 이것과 같을 필요는 없습니다.)
>> [[1 2] [2 1]]
[2 1]
[1 2]
[2 1]
[1 2]
>> [[3 1 2] [2 3 1] [1 2 3]]
[1 2 2]
[2 2 1]
[1 2 3]
[3 2 1]
>> [[4 3 5 2 1] [5 4 1 3 2] [1 5 2 4 3] [2 1 3 5 4] [3 2 4 1 5]]
[2 3 1 4 5]
[3 4 3 2 1]
[1 2 2 2 2]
[3 3 2 1 2]
>> [[2 6 4 1 3 7 5 8 9] [7 2 9 6 8 3 1 4 5] [5 9 7 4 6 1 8 2 3] [6 1 8 5 7 2 9 3 4] [1 5 3 9 2 6 4 7 8] [3 7 5 2 4 8 6 9 1] [8 3 1 7 9 4 2 5 6] [9 4 2 8 1 5 3 6 7] [4 8 6 3 5 9 7 1 2]]
[4 2 2 3 3 3 3 2 1]
[1 3 3 2 2 2 2 3 3]
[4 3 2 1 2 3 3 2 2]
[3 1 2 4 3 3 2 2 5]
편의를 위해 플랫 문자열 형식의 동일한 테스트 사례가 있습니다.
>> 1221
21
12
21
12
>> 312231123
122
221
123
321
>> 4352154132152432135432415
23145
34321
12222
33212
>> 264137589729683145597461823618572934153926478375248691831794256942815367486359712
422333321
133222233
432123322
312433225
≢¨∪¨↓⌈\(⍉⍪⌽⍪⍉∘⌽∘⊖⍪⊖)