Багато хто з нас знайомий з грою 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
Вихід може бути в будь-якій формі, якщо він дає однаковий вихід для будь-якого значення truthy або falsey.
Введення можна сприймати як рядок або як список символів, або у формі S1N2E3... або SNNEEE... Також немає жорсткого обмеження щодо розміру сітки, але припустимо, що вхід нічого не переповнює. Поки код є принципово надійним, не важливо обробляти такі випадки N99999999999999.
ПРИМІТКА. Ви можете оцінити справи N1S1,E1W1 , S1N1і W1E1тим НЕ менш ви хотіли. Вони технічно справедливі шляхи, але вони йдуть проти духу виклику "трону".
Оцінка балів
Це код-гольф , тому найкоротша відповідь виграє!
Nяк 1j, Eяк 1, Sяк -1jі Wяк -1?
N99999999999999
N1S1має бути істинним, щоб відповідати вашим визначенням, оскільки воно досягає(0, 0)двічі та(0, 1)одного разу, що є дійсним за вашим визначенням.