나는 최근에 정말 이상한 불규칙한 체스 판을 얻었다. 그것은 사각형이 모든 곳에 있으며 심지어 모든 연결도 아닙니다. 적어도 그들은 여전히 규칙적인 그리드에 배치되어 있습니다. 나는 체스 규칙을 보드에서 재생할 수 있도록 조정하고 싶지만, 우선 보드의 어느 곳으로나 갈 수있는 조각이 필요합니다. 리퍼가 최선의 방법입니다.
Leapers 는 기사의 요정 체스 일반화입니다. 리프 퍼는 2 개의 정수 m 및 n 으로 매개 변수화되며 한 방향으로 m 제곱을 이동 한 다음 수직 방향으로 다른 n 제곱을 이동할 수 있습니다 . 표준 기사의 경우 (m, n) = (2, 1) 입니다. 전체 이동은 한 번의 점프로 간주되어 대상으로가는 사각형이 비어 있거나 존재하지 않아도됩니다.
도전
보드의 일부인 정사각형을 나타내는 양의 2D 정수 좌표 목록의 형태로 "체스 보드"가 제공됩니다. 당신의 임무는 충분한 움직임이 주어지면 보드의 모든 사각형에 도달 할 수있는 도약을 찾는 것입니다.
몇 가지 예를 살펴 보겠습니다. 표준 체스 판은 8x8 정사각형의 규칙적인 그리드를 사용합니다 (이 도전에 대해 흰색과 검은 색 사각형을 구분하지 않음에 유의하십시오).
########
########
########
########
########
########
########
########
표준 기사는 그 모든 것에 도달 (2, 1)
할 수 있으므로 유효한 결과가 될 것입니다. 그러나 (1, 1)
예를 들어, 해당 조각은 시작 위치에 관계없이 사각형의 절반에만 도달 할 수 있으므로 유효하지 않습니다. (1, 0)
반면에 모든 사각형이 직교로 연결되어 있기 때문에 유효한 출력이 될 수도 있습니다.
이제 불규칙한 보드가 있다면 :
# #
# # #
# # #
# #
#
그리고 가능한 솔루션입니다 (1, 1)
및 (3, 1)
. 또한 다음과 같이 완전히 분리 된 지역이있는 보드를 가질 수도 있습니다.
#### ####
#### ####
#### ####
#### ####
표준 기사 (2, 1)
는 여전히 모든 사각형에 도달 할 수 있으며 실제로 유일한 해결책입니다.
마지막으로, 어떤 간단한 선수도 다음과 같은 간단한 보드에 완전히 도달 할 수 없습니다.
#
##
입력 형식은 ASCII 표현이 아니라 좌표 목록이됩니다. 예를 들어 위의 두 번째 예는 다음과 같습니다.
[[1, 1], [5, 1], [2, 2], [4, 2], [6, 2], [3, 3], [5, 3], [7, 3], [2, 4], [4, 4], [5, 5]]
규칙
STDIN (또는 가장 가까운 대안), 명령 행 인수 또는 함수 인수를 통해 입력을 받고 STDOUT (또는 가장 가까운 대안), 함수 리턴 값 또는 함수 (out) 매개 변수를 통해 결과를 출력하는 프로그램 또는 함수를 작성할 수 있습니다.
입력 좌표는 편리한 목록 형식 (플랫 목록, 쌍 목록, 복잡한 정수 목록, 일관된 구분 기호가있는 문자열 등)으로 가져올 수 있습니다.
결과는 솔루션이 존재하는 경우 (리퍼, 비 숫자 구분 기호가있는 문자열 등의 두 개의 정수로) 리프 퍼를 식별 하는 두 개의 정수 m 및 n 이어야합니다 . 솔루션이 존재하지 않는 경우 유효한 값을 가질 수없는 일관된 값을 출력 할 수 있습니다. 여기에는 (0, 0)
일반 형식 의 정수 쌍과 음이 아닌 정수 쌍이 아닌 모든 항목이 포함됩니다.
프로그램은 1 분 안에 모든 테스트 사례를 처리해야합니다 . 이것은 다소 모호한 제한이지만 상식을 사용하십시오. 컴퓨터에서 2 분이 걸리면 다른 사람의 경우 1 내에서 실행될 수 있다고 가정 할 수 있지만 20이 걸리면 덜 가능성이 있다고 생각합니다. 몇 초 만에 각 테스트 사례를 해결하는 것이 어렵지 않으므로이 규칙은 순진한 무차별 대입을 배제하는 역할을합니다.
표준 코드 골프 규칙이 적용됩니다.
테스트 사례
각 테스트 케이스는 형식 board => all valid leapers
입니다. 그중 하나만 출력하면됩니다. 리프 퍼 목록이 비어 있으면 유효한 리프 퍼가 아닌 것을 반환해야합니다 .
Examples above:
[[1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8]] => [[0, 1], [1, 2], [1, 4], [2, 3], [3, 4]]
[[1, 1], [5, 1], [2, 2], [4, 2], [6, 2], [3, 3], [5, 3], [7, 3], [2, 4], [4, 4], [5, 5]] => [[1, 1], [1, 3]]
[[1, 1], [2, 2], [3, 2]] => []
[[1, 1], [1, 2], [1, 3], [1, 4], [2, 1], [2, 2], [2, 3], [2, 4], [3, 1], [3, 2], [3, 3], [3, 4], [4, 1], [4, 2], [4, 3], [4, 4], [6, 1], [6, 2], [6, 3], [6, 4], [7, 1], [7, 2], [7, 3], [7, 4], [8, 1], [8, 2], [8, 3], [8, 4], [9, 1], [9, 2], [9, 3], [9, 4]] => [[1, 2]]
Square boards:
[[1, 1], [1, 2], [2, 1], [2, 2]] => [[0, 1]]
[[1, 1], [1, 2], [1, 3], [2, 1], [2, 2], [2, 3], [3, 1], [3, 2], [3, 3]] => [[0, 1]]
[[1, 1], [1, 2], [1, 3], [1, 4], [2, 1], [2, 2], [2, 3], [2, 4], [3, 1], [3, 2], [3, 3], [3, 4], [4, 1], [4, 2], [4, 3], [4, 4]] => [[0, 1], [1, 2]]
[[1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5]] => [[0, 1], [1, 2]]
[[1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6]] => [[0, 1], [1, 2], [2, 3]]
[[1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7]] => [[0, 1], [1, 2], [2, 3]]
Miscellaneous:
[[1, 1], [2, 1]] => [[0, 1]]
[[1, 1], [1, 2]] => [[0, 1]]
[[1, 1], [12, 35]] => [[11, 34]]
[[1, 1], [1, 2], [2, 1], [2, 2], [6, 1], [6, 2], [6, 3], [6, 4], [7, 1], [7, 2], [7, 3], [7, 4], [8, 1], [8, 2], [8, 3], [8, 4], [9, 1], [9, 2], [9, 3], [9, 4]] => []
[[1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [3, 1], [3, 2], [3, 5], [3, 6], [4, 1], [4, 2], [4, 5], [4, 6], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6]] => [[0, 1], [1, 2], [1, 4]]
[[2, 2], [2, 4], [2, 6], [2, 8], [4, 2], [4, 4], [4, 6], [4, 8], [6, 2], [6, 4], [6, 6], [6, 8], [8, 2], [8, 4], [8, 6], [8, 8]] => [[0, 2], [2, 4]]
Random boards:
[[1, 5], [1, 9], [2, 6], [2, 8], [2, 10], [2, 12], [3, 5], [3, 7], [3, 9], [3, 11], [3, 13], [4, 2], [4, 4], [4, 6], [4, 8], [4, 14], [5, 1], [5, 3], [5, 5], [5, 7], [6, 2], [6, 4], [7, 1], [8, 2]] => [[1, 1], [1, 3]]
[[1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [2, 1], [2, 2], [2, 3], [2, 4], [2, 7], [3, 1], [3, 2], [3, 3], [3, 4], [3, 6], [3, 7], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [5, 3], [5, 4], [5, 6]] => [[0, 1], [1, 2]]
[[1, 8], [2, 6], [2, 10], [3, 3], [3, 4], [3, 8], [4, 1], [4, 11], [5, 3], [5, 9], [6, 12], [8, 11], [10, 10], [11, 12], [12, 6], [12, 8], [13, 6], [13, 8], [13, 10], [13, 11], [14, 5], [14, 7], [14, 8], [14, 13], [14, 14], [15, 7], [15, 9], [15, 11], [15, 12], [16, 6], [16, 7], [16, 9], [16, 13], [16, 14], [17, 10], [17, 12], [18, 8], [18, 12], [20, 9], [21, 11], [22, 13], [23, 10], [23, 11], [23, 15], [24, 12]] => [[1, 2]]
[[1, 17], [1, 21], [3, 11], [3, 15], [3, 19], [3, 23], [5, 13], [5, 21], [7, 11], [7, 15], [7, 19], [9, 1], [9, 13], [9, 17], [11, 3], [11, 7], [11, 15], [11, 19], [13, 5], [13, 9], [13, 13], [13, 17], [13, 21], [15, 11], [15, 15], [15, 19], [17, 13], [17, 17]] => [[2, 2], [2, 6], [2, 10]]
[[1, 3], [2, 4], [2, 5], [3, 6], [4, 1], [5, 3], [5, 6], [5, 7], [6, 12], [6, 14], [6, 21], [7, 9], [7, 19], [8, 9], [8, 15], [8, 17], [8, 18], [8, 24], [9, 12], [9, 19], [10, 12], [10, 14], [10, 17], [10, 21], [11, 22], [12, 15], [12, 17], [12, 24], [13, 16], [14, 20], [14, 21], [14, 26], [15, 13], [15, 19], [16, 18], [16, 23], [17, 16], [17, 24]] => [[2, 3]]
[[1, 11], [3, 13], [4, 10], [6, 14], [8, 12], [9, 9], [9, 15], [12, 8], [13, 5], [13, 19], [13, 21], [14, 8], [15, 1], [15, 17], [16, 4], [16, 14], [16, 18], [16, 20], [17, 21], [18, 2], [18, 16], [18, 18], [19, 9], [19, 13], [19, 15], [20, 12], [21, 1], [21, 17], [22, 4], [22, 10], [23, 7]] => [[1, 3]]
[[1, 39], [6, 37], [8, 32], [10, 27], [11, 31], [11, 35], [12, 22], [16, 21], [16, 29], [16, 33], [18, 34], [21, 3], [21, 9], [21, 19], [23, 8], [23, 14], [23, 22], [23, 24], [23, 36], [24, 6], [25, 13], [25, 17], [26, 1], [26, 11], [28, 6], [28, 20], [28, 26], [28, 30], [28, 34], [30, 11], [30, 15], [30, 21], [32, 6], [33, 28], [33, 32], [35, 13], [35, 23]] => [[2, 5]]
특별한 경우, 단 하나의 셀로 구성된 보드의 경우 모든 Leper가 작동하지만 출력은 실제 Leper와 일치해야하므로 [0, 0]
유효한 출력이 아닙니다.
[[1, 0], [0, 1]]
?
(2,1)
어때? 내가 틀렸다면 나를 수정하지만 기사는 한 방향으로 3 정사각형을 움직일 수 있으며 이전 방향과 직교하는 방향으로 1 정사각형을 움직일 수 있다고 확신합니다(3,1)
.