소개
장애물 코스에서 런 어웨이 차량에 갇혀 있다는 불행이 있습니다. 자동차의 모든 기능이 반응하지 않아 스티어링 시스템이 손상되었습니다. 똑바로 운전하거나 우회전 할 수 있습니다. 자동차를 안전으로 안내 할 수 있습니까?
역학
자동차는 8x8지도의 왼쪽 상단에서 시작하여 오른쪽 하단에서 안전을 얻으려고합니다. 자동차는 90도 단위로 측정 된 방향 (초기 오른쪽)을가집니다. 자동차는 다음 두 가지 조치 중 하나를 수행 할 수 있습니다.
- 한 칸 앞으로 이동하거나
- 시계 방향으로 90도 회전 한 다음 한 칸 앞으로 이동
자동차는 단일 사각형에서 180도 회전을 수행 할 수있을 정도로 급하게 회전 할 수 없습니다.
사각형 중 일부는 장애물입니다. 차가 장애물 광장에 들어가면 충돌합니다. 8x8 코스 외부의 모든 것은 장애물로 간주되므로 코스에서 내리는 것은 충돌과 같습니다.
오른쪽 아래 광장은 안전 광장으로 차가 장애물 코스를 벗어날 수 있도록합니다. 시작 광장과 안전 광장은 장애물이 아니라고 가정합니다.
태스크
장애물 코스를 나타내는 8x8 배열 (매트릭스, 목록 목록 등)을 입력으로 사용하는 프로그램이나 함수를 작성해야합니다. 이 프로그램은 부울 또는 비슷한 것을 반환하거나 인쇄합니다. 자동차가 충돌없이 안전한 정사각형으로 만들 수있는 경우 (예 :지도를 해결할 수있는 경우) 출력은 True
이고 그렇지 않으면 False
입니다.
채점
표준 코드 골프 규칙-승자가 가장 적은 바이트를 가진 코드입니다.
보너스 :
해결 가능한지도의 경우, 코드가 자동차를 안전한 광장으로 안내하는 일련의 유효한 운전자 입력을 출력하는 경우 점수에서 10 % 포인트를 차감합니다. 출력 형식의 예는
SRSSR
(직선, 오른쪽, 직선, 직선, 오른쪽을 나타냄) 일 수 있습니다. 이 출력은 표준True
출력을 대체합니다 .해석 할 수없는 맵의 경우, 코드 출력이 충돌을 피할 수없는 상황과 장애물 코스를 영원히 운전할 수있는 상황을 구별하는 경우 점수에서 10 % 포인트를 빼십시오.
Crash
충돌을 피할 수 없거나Stuck
자동차가 장애물 코스에 영원히 갇힌 경우 출력 예가 표시 될 수 있습니다 . 이러한 출력은False
해결할 수없는 맵 의 표준 출력을 대체합니다 .
예
프로그램에 다음과 같은 8x8 배열이 제공되는 경우 :
[[0, 0, 0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0],
[1, 1, 0, 0, 0, 0, 0, 0],
[0, 1, 0, 1, 0, 0, 0, 0],
[0, 0, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 1, 0],
[0, 0, 0, 0, 0, 0, 1, 0],
[0, 1, 1, 0, 0, 0, 1, 0]]
다음과 같은지도로 해석되며 검은 색 사각형이 장애물을 나타냅니다.
가능한 해결책은 다음과 같습니다.
솔루션이 존재하므로 프로그램은 True
이 맵에 대해 리턴 / 인쇄해야합니다 . 여기에 표시된 동작 순서는 SSSSRSRRRSRSSRRRSSRSSS
입니다.
Crash
하고Stuck
. 그들은 그들이 얼마나 오래 있기 때문에 여기에 있습니다. 행 2가 채워졌고 다른 모든 항목은 비어 있습니다->Crash
. 7 번 열, 다른 모든 항목 비우기->Stuck