Wielu z nas zna grę Tron. Kontrolujesz „lekki rower” umieszczony na siatce. Lekki rower zawsze porusza się do przodu (chociaż kontrolujesz kierunek) i pozostawia za sobą ślad. Jeśli wpadniesz na ślad, rozbijesz się!
Celem jest ustalenie, czy dana ścieżka jest prawidłową pętlą, tzn. Wraca do punktu początkowego bez „awarii”. Aby to zrobić, zakładamy, że zaczynamy od punktu (0,0). Dane wejściowe są podawane w postaci N2E1S2W1szeregu kardynalnych kierunków ( Njest north, Ejest eastitd.), Po których następuje odległość do przebycia w tym kierunku. W tym przykładzie podróżowałbyś
N2 : North 2 to (0,2)
E1 : East 1 to (1,2)
S2 : South 2 to (1,0)
W1 : West 1 to (0,0)
Ścieżka jest uważana za ważną, jeśli kończy się na (0,0)nie odwiedzając żadnej innej współrzędnej więcej niż raz (odwiedza (0,0)dokładnie dwa razy. Raz na początku i raz na końcu). Pamiętaj, że w powyższym przykładzie, aby dostać się (0,0)do (0,2), koniecznie odwiedź (0,1)również.
Inne przykłady:
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
Twój wynik może być w dowolnej formie, pod warunkiem, że daje to samo wyjście dla dowolnej wartości prawdziwej lub falsey.
Dane wejściowe można traktować jako ciąg znaków lub listę znaków, w formie S1N2E3... lub SNNEEE... Nie ma również sztywnego limitu rozmiaru siatki, ale należy założyć, że dane wejściowe niczego nie przepełnią. Tak długo, jak kod jest zasadniczo poprawny, tak ważne jest, aby obsługiwać takie przypadki N99999999999999.
UWAGA: Można oceniać przypadki N1S1, E1W1, S1N1, a W1E1jednak chciałbyś. Są to technicznie ważne ścieżki, ale są sprzeczne z duchem wyzwania „Tron”.
Punktacja
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź!
Njak 1j, Ejak 1, Sjak -1j, i Wjak -1?
N99999999999999
N1S1powinna być zgodna z twoimi definicjami, ponieważ osiąga(0, 0)dwa razy i(0, 1)raz, co jest ważne w twojej definicji.