Многие из нас знакомы с игрой Tron. Вы управляете «световым циклом», размещенным на сетке. Световой цикл всегда движется вперед (хотя вы контролируете направление) и оставляет за собой постоянный след. Если вы столкнетесь с тропой, вы упадете!
Цель здесь состоит в том, чтобы определить, является ли данный путь допустимым циклом, то есть он возвращается к своей начальной точке без «сбоя». Для этого мы предполагаем, что мы начинаем с этой точки (0,0)
. Входные данные задаются в форме N2E1S2W1
с рядом основных направлений ( N
есть north
, E
есть 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
тем не менее вы хотели. Это технически правильные пути, но они идут вразрез с духом «Трона».
счет
Это код-гольф , поэтому выигрывает самый короткий ответ!
N
как 1j
, E
как 1
, S
как -1j
и W
как -1
?
N99999999999999
N1S1
должно быть истинным, чтобы соответствовать вашим определениям, потому что оно достигает(0, 0)
дважды и(0, 1)
один раз, что действительно в соответствии с вашим определением.