이 도전은 그리드에서 발생합니다.
+----------+
| |
| |
| |
| |
| |
| |
| |
| |
| |
+----------+
이것은 10 x 10이지만 직사각형 일 수 있습니다.
이 그리드에는 네 가지 방향이 있습니다. 위, 아래, 왼쪽 및 오른쪽.
작업은 대문자 방향으로 시작하여 경로를 그리는 것입니다. 이 예에서는 U에서 바로 위로 이동합니다.
+----------+
| |
| |
| |
| |
| |
| |
| |
| |
| U |
+----------+
경로는 위쪽으로 올라가 벽에 닿을 때까지 별표 (*)로 끝나는 마침표 문자 (.)로 구성됩니다.
+----------+
| * |
| . |
| . |
| . |
| . |
| . |
| . |
| . |
| U |
+----------+
경로 시작 외에도 소문자 방향 이니셜로 표시되는 방향 전환기가 있습니다.
+----------+
| |
| |
| |
| r.....*|
| . |
| . |
| . |
| . |
| U |
+----------+
또한, 대문자 X는 경로를 종료시키는 장애물을 우리에게 제공한다.
+----------+
| |
| |
| |
| |
| r...*X |
| . |
| . |
| . |
| U |
+----------+
규칙
- 입력은 경로 시작, 방향 전환기 및 장애물을 나타내는 문자를 포함하는 프레임 (|,-및 + 문자로 구성됨)으로 구성된 문자열입니다.
- 코드는 시작 및 방향 변경자가 설명하는 경로와 경로가 벽 또는 장애물을 만나는 경우 별표를 따라 가기 위해 완전 정지 문자를 추가해야합니다.
- 여러 경로가 시작될 수 있습니다.
- 경로가 루프를 설명하는 경우 코드는 여전히 오류없이 종료됩니다.
- 경로가 경로 시작과 만나면 방향 전환기 역할을합니다.
- 코드 골프, 저 바이트 코드 및 표준 허점이 아닙니다.
- 나는 항상 온라인 통역사와의 링크를 선호합니다.
테스트 사례
1 : 단순
+----------+
| |
| |
| |
| |
| |
| |
| |
| |
| U |
+----------+
+----------+
| * |
| . |
| . |
| . |
| . |
| . |
| . |
| . |
| U |
+----------+
2 : 우회전
+----------+
| |
| |
| |
| r |
| |
| |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
| r.....*|
| . |
| . |
| . |
| . |
| U |
+----------+
3 : 교차로
+----------+
| |
| |
| |
| r d |
| |
| u l |
| |
| |
| U |
+----------+
+----------+
| * |
| . |
| . |
| . r..d |
| . . . |
| u....l |
| . |
| . |
| U |
+----------+
4 : 4 교차로
+----------+
| D |
| |
| |
|R |
| |
| L|
| |
| |
| U |
+----------+
+----------+
| * D |
| . . |
| . . |
|R........*|
| . . |
|*........L|
| . . |
| . . |
| U * |
+----------+
5 : 첫 번째 루프
+----------+
| |
| |
| |
| r d |
| |
| u l |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
| r..d |
| . . |
| u..l |
| . |
| . |
| U |
+----------+
6 : 교환기로서의 스타터
+----------+
| |
| |
| |
| L |
| |
| |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
|*..L |
| . |
| . |
| . |
| . |
| U |
+----------+
7 : 스트레이트 루프
+----------+
| |
| |
| |
| |
| r l |
| |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
| |
| r..l |
| . |
| . |
| . |
| U |
+----------+
8 : 꽉 매듭
+----------+
| |
| |
| |
| d l |
| r u |
| r u |
| |
| |
| U |
+----------+
+----------+
| * |
| . |
| . |
| d..l |
| .r.u |
| r.u |
| . |
| . |
| U |
+----------+
9 : 장애물
+----------+
| |
| |
| |
| |
| r X |
| |
| |
| |
| U |
+----------+
+----------+
| |
| |
| |
| |
| r...*X |
| . |
| . |
| . |
| U |
+----------+
10 : S 모양
+----------+
|r d |
| |
| XXXXXXXX|
| d l |
|ul |
|XXXXXXX |
| |
|R u |
| |
+----------+
+----------+
|r.....d |
|. * |
|. XXXXXXXX|
|.d......l |
|ul . |
|XXXXXXX . |
| . |
|R.......u |
| |
+----------+
11 : 4 방향 매듭
+----------+
| D |
| |
| r |
|R d |
| |
| u L|
| l |
| |
| U |
+----------+
+----------+
| * D |
| . . |
| r.....*|
|R....d. |
| .... |
| .u....L|
|*.....l |
| . . |
| U * |
+----------+
12 : 바쁜 정션
+----------+
|rrrrr rrrd|
| rlrl |
|ul rrd |
|ruX X |
|udl ll |
|ull |
|rlr |
|rdr d |
|Uruull |
+----------+
+----------+
|rrrrr.rrrd|
|.rlrl .|
|ul rrd .|
|ruX.X. .|
|udl.ll .|
|ull. .|
|rlr. .|
|rdr..d .|
|Uruull *|
+----------+
13 : 가장자리로 시작
+----------+
| U |
| |
| |
| |
| |
| |
| |
| |
| |
+----------+
+----------+
| U |
| |
| |
| |
| |
| |
| |
| |
| |
+----------+
14 : 죽은 길을 건너다
+----------+
| |
| |
| |
| R |
| |
| |
| |
| |
| U|
+----------+
+----------+
| *|
| .|
| .|
| R..*|
| .|
| .|
| .|
| .|
| U|
+----------+
@TFeld 추가되었습니다, 감사합니다!
—
AJFaraday
테스트 케이스에서 모든 방향 전환기가 항상 도달하는 것처럼 보이므로 알고리즘을 단순화 할 수 있습니다. 사실이 아닌 테스트 케이스를 추가하는 것이 좋습니다.
—
Arnauld
@Arnauld 저는 12 번 사건에서 사용하지 않은 방향 전환기가 있다고 확신합니다.
—
AJFaraday
그리드는 직사각형 일 수 있지만 모든 테스트 케이스는 크기와 모양이 동일한 것으로 보입니다.
—
gastropner