4 개의 거리 센서가있는 작은 로봇이 있습니다. 방의 레이아웃을 알고 있지만 그리드 방향에 고정 할 수있는 것 외에는 방향 감각이 없습니다. 로봇이 판독 값을 기반으로하는 위치를 찾을 수 있지만 센서가 제한되어있어 모호 할 수 있습니다.
도전 설명
당신은 당신과 벽 사이의 세포의 수를 제공하는 방 배치와 4 개의 시계 방향 거리 판독 값이 주어질 것입니다. 방 중앙에 벽이있을 수 있으며 그리드의 가장자리도 벽입니다. 로봇은 벽 위에 놓을 수 없습니다.
당신의 목표는 주어진 판독 값을 줄 로봇이있을 수있는 방 안의 모든 위치를 나열하는 것입니다. 로봇의 방향 감각이 없어야합니다 (그리드에서 90도 각도로 고정되어 있지 않아야합니다. 즉, 로봇은 대각선이나 다른 기울기 각도로 방향이 지정되지 않습니다). 따라서 [1, 2, 3, 예를 들어, 4]는 [3, 4, 1, 2]를 읽는 것과 동일합니다.
예
이 예제의 경우 셀 좌표는 왼쪽 상단 셀에서 0- 인덱스 (x, y) 쌍으로 제공됩니다. 판독 값은 시계 방향으로 대괄호로 표시됩니다. 레이아웃은 벽 및 기타 문자 (일반적으로 점)에 파운드 기호를 사용하여 빈 셀을 나타냅니다.
사례 1
. . . .
. . . .
. . # .
. . . .
- [1, 0, 2, 3] ==> (1, 0), (3, 1)
- [0, 0, 3, 3] ==> (0, 0), (3, 0), (0, 3), (3, 3)
- [2, 1, 1, 0] ==> (0, 2), (2, 1)
- [1, 1, 2, 2] ==> (1, 1)
사례 2
# a . # a .
a # . . # a
. . # . . #
# . . # . .
a # . . # a
. a # . a #
- [0, 0, 1, 1] ==> 점인 그리드의 모든 위치
- [1, 0, 0, 0] ==> 그리드의 모든 a
사례 3
.
- [0, 0, 0, 0] ==> (0, 0)
사례 4
. # #
. . .
- [1, 2, 0, 0] ==> (0, 1)
- [0, 1, 2, 0] ==> (0, 1)
- [0, 0, 1, 0] ==> (0, 0)
- [1, 0, 1, 0] ==> (1, 1)
- [0, 1, 0, 1] ==> (1, 1)
사례 5
. # . .
. . . .
. . # .
. . . .
- [2, 1, 1, 0] ==> (0, 2), (2, 1)
- [0, 2, 2, 1] ==> (1, 1)
- [1, 0, 2, 2] ==> (1, 1)
- [0, 3, 0, 0] ==> (0, 0)
- [1, 0, 1, 1] ==> (1, 2)
다른 규칙
- 입력은 편리한 형식 일 수 있습니다. 입력은 벽과 공간의 격자이며 시계 방향으로 4 개의 거리 목록입니다.
- 출력은 판독을 만족시키는 모든 셀의리스트이거나 어느 셀이 판독을 만족 하는지를 나타내는 그리드의 수정 된 버전 일 수있다. 합리적이고 일관된 출력의 정확한 형식은 중요하지 않습니다. 유효한 출력 형식 은 다음과 같습니다 .
- 각 셀 좌표에 대한 선을 정렬 된 쌍으로 인쇄
- 인쇄 그리드와
.
,#
그리고!
각각의 공간, 벽 및 가능한 위치에 대한있다. - 정렬 된 쌍의 목록 반환
- 인덱스리스트 반환
- 공간, 벽 및 가능한 위치에 대해 서로 다른 값을 사용하여 목록 목록 반환
- 판독 값이 발생하는 셀을 나타 내기 위해 1을 사용하여 0과 1의 행렬을 반환 / 인쇄합니다. (벽을 포함 할 필요는 없습니다)
- 다시 한 번,이 목록은 전체가 아니므로 다른 표현은 일관되고 가능한 모든 유효한 위치를 그리드 또는 목록에 표시하는 한 유효합니다. 확실하지 않은 경우 의견을 남겨 주시면 기꺼이 설명해 드리겠습니다.
- 판독 값이 그리드의 하나 이상의 위치에 해당한다고 가정 할 수 있습니다.
- 입력 격자의 크기가 1x1 이상이고 빈 공간이 하나 이상 있다고 가정 할 수 있습니다.
- 입력 그리드가 각 차원에서 256 셀보다 크지 않다고 가정 할 수 있습니다.
- 입력 그리드가 항상 완벽한 직사각형이고 들쭉날쭉하지 않다고 가정 할 수 있습니다.
- 프로그램이 유효하지 않은 입력에 대해 제정신 출력을 제공하는 경우 벌금이나 보너스가 없습니다.
- 이것은 코드 골프이므로 가장 짧은 코드가 승리합니다.
Case 5
옳지 않은 것 같습니다. 내가 얻을(0,2),(2,1)
,(1,3)
,(1,3)
,와nothing
.