방화범이 마을을 걸어 다니면서 매우 특정한 패턴에 따라 희생자를 선택 한다고 상상해보십시오 (또는 정원을 날아 다니며 꿀벌이 매우 특정한 패턴에 따라 꽃을 피우는 것을 상상해보십시오 ). 도시가 N × N 행렬 이라고 가정합니다 . 여기서 N 은 2 이상의 정수 입니다. 방화범은 왼쪽 위 모서리에서 시작하여 집 앞에 M 지점을 연속적으로 설정 하고 (여기서 M 은 현재있는 집의 수) 순서대로 각 화재 후 이동 방향을 변경합니다. 동쪽 ⟶ 남쪽 ⟶ 서쪽 ⟶ 북쪽 ⟶ 동쪽 ⟶ 남쪽 ... 등. 자장가방화범의 가치 는 마을을 빠져 나가게하는 M 의 가치이다 . 이것은 예제로 이해하기 쉽습니다. 예를 들어 다음 매트릭스를 사용하십시오.
3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1
- 우리는 왼쪽 상단에서 시작하므로 M = 3 (
X
방화범의 현재 위치와 이전 위치를 표시) :X 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1
- 알려진 순서에 따르면, 먼저 동쪽 M (3) 지점으로 이동하여 2에 착륙 하므로 M 은 그에 따라 변경됩니다.
X 2 3 X 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1
- 그런 다음 남쪽 2 자리로 가고 M 은 1입니다 .
X 2 3 X 7 3 1 4 1 6 2 5 3 X 1 4 4 3 2 4 1 1 1 1
- 이제 서쪽 으로 1 자리 이동 하고 M 은 3 이됩니다 .
X 2 3 X 7 3 1 4 1 6 2 5 XX 1 4 4 3 2 4 1 1 1 1
- 북쪽 으로 3 곳 이동 한 후 마을을 빠져 나옵니다! 따라서이 방화범의 자장가는 3 입니다.
엑스 X 2 3 X 7 3 1 4 1 6 2 5 XX 1 4 4 3 2 4 1 1 1 1
N × N 행렬이 주어지면 (선택적으로 N 을 입력 으로 취할 수도 있음) 방화범의 자장가를 찾으십시오. 더 많은 테스트 사례를 생성하고 방화범의 경로를 시각화 할 수있는 프로그램을 작성 했습니다. 온라인으로 사용해보십시오!
- 방화범 에 자장가 가 있다고 가정 할 수 있습니다 (즉, 실제로 행렬에서 벗어날 수 있음).
- 이 매트릭스는 단순화를 위해 9 이하의 양의 정수만 포함합니다 . 양의 정수를 처리하는 솔루션은 완전히 환영합니다.
- 방화범 은 이미 타 버린 지점에 착륙 할 수 있습니다. 이동 방향이 처음과 다른 경우입니다. 이러한 시나리오에서는 해당 요소의 값을 가져와 평소대로 다시 이동하십시오.
- 모든 프로그래밍 언어로 경쟁 할 수 있으며 표준 방법을 통해 입력을 받고 출력을 제공 할 수 있지만 이러한 허점 은 기본적으로 금지되어 있습니다. 이것은 code-golf 이므로 모든 언어에 대한 가장 짧은 제출 (바이트)이 이깁니다.
테스트 사례
------------- 9 2 3 1 7 2 8 7 6 자장가 : 9 ------------- 2 1 2 1 3 1 1 2 1 2 2 1 1 1 3 자장가 : 2 ------------- 3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 자장가 : 3 ------------- 12 2 1 2 12 2 1 2 12 2 1 2 12 2 1 2 12 2 1 2 12 2 1 2 자장가 : 2 ------------- 3 2 1 2 1 1 1 2 3 2 3 2 1 1 2 1 1 3 1 2 3 1 1 1 1 1 1 4 5 2 3 1 1 1 12 2 1 2 2 12 2 3 2 1 2 자장가 : 3 -------------
다른 형식의 행렬 :
[[9, 2, 3], [1, 7, 2], [8, 7, 6]] [[2, 1, 2, 1], [3, 1, 1, 2], [1, 2, 2, 1], [1, 1, 1, 3]] [[3, 2, 3, 2, 7], [3, 1, 4, 1, 6], [2, 5, 3, 1, 1], [4, 4, 3, 2, 4], [ 1, 1, 1, 1, 1]] [[1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2]] [[3, 2, 1, 2, 1, 1, 1], [2, 3, 2, 3, 2, 1, 1], [2, 1, 1, 1, 3, 1, 2], [ 3, 1, 1, 1, 1, 1, 1], [4, 5, 2, 3, 1, 1, 1], [1, 2, 1, 2, 1, 2, 2], [1, 2, 2, 3, 2, 1, 2]]
다섯 번째 테스트 사례는 시각화하는 데 매우 흥미 롭습니다 .