우리 중 많은 사람들이 게임 트론에 익숙합니다. 그리드에 배치 된 "라이트 사이클"을 제어합니다. 라이트 사이클은 항상 앞으로 이동하고 (방향을 제어하더라도) 그 뒤에 영구적 인 트레일을 남깁니다. 당신이 흔적을 실행하면 충돌!
여기서 목표는 주어진 경로가 유효한 루프인지, 즉 "충돌"없이 시작점으로 돌아 오는지를 결정하는 것입니다. 이를 위해 우리는 시점에서 시작한다고 가정합니다 (0,0)
. 입력은 N2E1S2W1
일련의 기본 방향 ( N
is north
, E
is east
등)과 함께 형식으로 제공되며 각 방향은 해당 방향으로 이동하는 거리입니다. 이 예에서는
N2 : North 2 to (0,2)
E1 : East 1 to (1,2)
S2 : South 2 to (1,0)
W1 : West 1 to (0,0)
경로는 (0,0)
다른 좌표를 두 번 이상 방문하지 않고 끝날 때 유효합니다 ( (0,0)
정확히 두 번 방문 합니다. 시작시 한 번, 끝에서 한 번). 에서 얻을, 위의 예에서보다 명심 (0,0)
에 (0,2)
우리는 반드시 방문 (0,1)
뿐만 아니라.
다른 예 :
input -> output
N1E1S1W1 -> true
N1E1N1E1S2W2 -> true
N1S1E1W1 -> false // Visits (0,0) 3 times
N4E2S2W4S2E2 -> false // Visits (0,2) twice
N3E2S3 -> false // Does not return to (0,0)
N1S1 -> anything //I don't care how you evaluate this case
진실하거나 거짓된 가치에 대해 동일한 산출물을 제공하는 한 당신의 산출물은 어떤 형태 일 수 있습니다.
입력은 S1N2E3
... 또는 SNNEEE
... 형식으로 문자열 또는 문자 목록으로 사용할 수 있습니다 . 그리드 크기에는 제한이 없지만 입력이 오버플로되지 않는다고 가정합니다. 코드가 기본적으로 건전한 경우와 같은 경우를 처리하는 것이 중요하지 않습니다 N99999999999999
.
참고 :이 사건을 평가할 수 N1S1
, E1W1
, S1N1
, 및 W1E1
그러나 당신이 좋아하는 것입니다. 그들은 기술적으로 유효한 길이지만 도전의 "트론"정신에 위배됩니다.
채점
이것은 code-golf 이므로 가장 짧은 답변이 이깁니다!
N
등 1j
, E
등 1
, S
등 -1j
, 그리고 W
같은 -1
?
N99999999999999
N1S1
정의에 따라(0, 0)
두 번,(0, 1)
한 번 도달하므로 정의와 일치하는 것이 사실 입니다.