Мурашник ходить по краях (а не гранях) кубика каркаса. Кожна вершина, з якою вона стикається, подає її виделкою, від якої відгалужуються два нові краї. Мураха вибирає , який спосіб перетворити - 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
's і R
' s.
True
випадки:
RRRR
LLLL
RLRLRL
RRLLRRLL
LRRLLRRL
RRRLLLLR
RLLRLL
RRRRLLLLRLLRLL
LLLRLLRRLRLRRRRRRRRRRRRRRRRR
False
випадки:
R
RR
RRR
LR
RLLLR
RLLRR
LRLR
RRRRL
LLRLRLLR
RLRRRRLLLRRLLL
Додатковий виклик з кредиту
Те саме, але з додекаедром, а не кубом. Дивіться Полювання на Wumpus за ідеями.