Муравей идет по краям (не граням) каркасного куба. Каждая встречаемая вершина представляет его вилкой, от которой отходят два новых ребра. Муравей выбирает, в какую сторону повернуть - leftили right. Эти направления относятся к муравью, который обращен к вершине и находится вне куба. Ваша цель состоит в том, чтобы определить, из последовательности left/ rightвыборов, которые принял муравей, заканчивается ли он в том же положении, в котором он начал.
Например, если муравей повернет налево четыре раза ( left left left left), он пройдет через квадрат против часовой стрелки и закончится в том же месте, где и начал. Но, если он пойдет left left left left right, он закончится в другом месте на кубе. Кроме того, если он идет left right right right left, он заканчивается на своем начальном ребре, но обращен к противоположной вершине, которая не считается той же позицией.
Путь муравья может повторять ребра, включая ребро, с которого он начинался, но важно то, где он заканчивается после всей последовательности.
Напишите именованную функцию, которая принимает последовательность ходов муравья и выводит, вернулся ли муравей в исходное положение после последовательности. Назначение неназванной функции переменной достаточно, чтобы сделать ее именованной функцией.
(Редактировать: если ваш язык не может создать именованную функцию, он может вместо этого реализовать функцию с входами и выходами через STDIN / печать или стек. Если это невозможно, сделайте его фрагментом, в котором вход и выход сохранены в переменные.)
вход
Последовательность left/ rightрешения от длины 0до 31включительно, представленные в формате по вашему выбору. Это может быть строка букв R/ L, список чисел 1/ -1или массив логических значений. Ничего такого, как использование имен методов или строк, полезных для вашего кода.
Пожалуйста, опубликуйте тестовые примеры в вашем формате, если они отличаются от тестовых примеров ниже.
Выход
True/ False, 0/ 1или аналоги на вашем языке.
Критерии победы
Побеждает несколько байтов. Помните, вам нужно дать именованную функцию. Вы можете иметь код вне функции, но эти байты тоже учитываются. Ваша функция должна вести себя правильно, если вызывается несколько раз.
Контрольные примеры
True падежи (по одному на строку, второй - пустой список):
1 1 1 1
-1 -1 -1 -1
1 -1 1 -1 1 -1
1 1 -1 -1 1 1 -1 -1
-1 1 1 -1 -1 1 1 -1
1 1 1 -1 -1 -1 -1 1
1 -1 -1 1 -1 -1
1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1
-1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
False случаи (по одному на строку):
1
1 1
1 1 1
-1 1
1 -1 -1 -1 1
1 -1 -1 1 1
-1 1 -1 1
1 1 1 1 -1
-1 -1 1 -1 1 -1 -1 1
1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1
Вот те же тесты с L'и R'.
True случаи:
RRRR
LLLL
RLRLRL
RRLLRRLL
LRRLLRRL
RRRLLLLR
RLLRLL
RRRRLLLLRLLRLL
LLLRLLRRLRLRRRRRRRRRRRRRRRRR
False случаи:
R
RR
RRR
LR
RLLLR
RLLRR
LRLR
RRRRL
LLRLRLLR
RLRRRRLLLRRLLL
Дополнительный кредитный вызов
То же самое, но с додекаэдром, а не с кубом. См. « Охота на Вумпуса» для идей.