Многие из нас знакомы с игрой 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)один раз, что действительно в соответствии с вашим определением.