З огляду на введення серії символів, що представляють рухи по шестикутній сітці, виведіть кінцеві координати "вказівника".
Наші шестикутники будуть пронумеровані так (уявіть прямокутну сітку з кожним стовпчиком з непарними номерами, трохи зміщеним вниз):
_____ _____ _____ _____
/ \ / \ / \ / \
/ -3,-2 \_____/ -1,-2 \_____/ 1,-2 \_____/ 3,-2 \
\ / \ / \ / \ /
\_____/ -2,-1 \_____/ 0,-1 \_____/ 2,-1 \_____/
/ \ / \ / \ / \
/ -3,-1 \_____/ -1,-1 \_____/ 1,-1 \_____/ 3,-1 \
\ / \ / \ / \ /
\_____/ -2,0 \_____/ 0,0 \_____/ 2,0 \_____/
/ \ / \ / \ / \
/ -3,0 \_____/ -1,0 \_____/ 1,0 \_____/ 3,0 \
\ / \ / \ / \ /
\_____/ -2,1 \_____/ 0,1 \_____/ 2,1 \_____/
/ \ / \ / \ / \
/ -3,1 \_____/ -1,1 \_____/ 1,1 \_____/ 3,1 \
\ / \ / \ / \ /
\_____/ \_____/ \_____/ \_____/
Вказівник починається з (0, 0).
Інструкції, які ви повинні підтримувати, наступні:
q
: рух вгору-влівоw
: рухатися вгоруe
: рухатися вгору-вправоa
: рухатися вниз-влівоs
: рухатися внизd
: рухатися вниз-вправоr
: обертати сітку за годинниковою стрілкоюR
: обертати сітку проти годинникової стрілки
Команди обертання обертають всю сітку, зберігаючи покажчик на однакових координатах. (Чому qweasd
вони добре узгоджуються з напрямками на клавіатурі QWERTY.)
Щоб візуалізувати це, ось що робитимуть команди руху, якщо припустити, що вказівник починається посередині:
_____
/ \
_____/ w \_____
/ \ / \
/ q \_____/ e \
\ / \ /
\_____/ \_____/
/ \ / \
/ a \_____/ d \
\ / \ /
\_____/ s \_____/
\ /
\_____/
Після обертання за годинниковою стрілкою ( r
) команди перестановляються на (уявіть це як обертання всієї шістнадцяткової сітки, але все одно зберігаючи "w" як вгору тощо, що еквівалентно наступному):
_____
/ \
_____/ e \_____
/ \ / \
/ w \_____/ d \
\ / \ /
\_____/ \_____/
/ \ / \
/ q \_____/ s \
\ / \ /
\_____/ a \_____/
\ /
\_____/
Аналогічно, обертання проти годинникової стрілки ( R
) після цього поверне сітку до норми, а обертання проти годинникової стрілки знову "переставить" qwedsa
на aqweds
.
Введення повинно бути подано як один рядок, а вихід може бути або як один рядок, з'єднаний будь-якими нечисловими символами (наприклад, 1 2
чи 3,4
), або масив цілих чисел.
Оскільки це код-гольф , найкоротший код у байтах виграє.
Тестові приклади:
In Out
---------------------------------
edeqaaaswwdqqs -2, 0
dddddddddd 10, 5
wswseaeadqdq 0, 0
<empty string> 0, 0
esaaqrweesrqrq -1, 0
wrwrwrwrw -1, 0
RRssrrrs -1, -1
aRRRRwddrqrrqqq -1, -4
rrrrrrrrrrrrRRRRRRrrrrrrq -1, -1
rrRrRrrRrrrrRRrRrRR 0, 0