Altıgen bir ızgaradaki hareketleri temsil eden bir dizi karakterden oluşan bir girdi verildiğinde, "işaretçi" nin son koordinatlarını çıktılayın.
Altıgenlerimiz bu şekilde numaralandırılacaktır (her tek numaralı sütunun biraz aşağı doğru kaydırıldığı dikdörtgen bir ızgara düşünün):
_____ _____ _____ _____
/ \ / \ / \ / \
/ -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 \
\ / \ / \ / \ /
\_____/ \_____/ \_____/ \_____/
İşaretçi (0, 0) konumunda başlar.
Desteklemeniz gereken talimatlar aşağıdaki gibidir:
q
: yukarı-sola hareket etw
: yukarı gite
: sağa hareket eta
: aşağı-sola hareket ets
: aşağı inmekd
: aşağı sağa hareket etr
: ızgarayı saat yönünde döndürR
: ızgarayı saat yönünün tersine döndür
Döndürme komutları, işaretçiyi aynı koordinatlarda tutarken tüm ızgarayı döndürür. (Neden qweasd
? Bir QWERTY klavyedeki talimatlarla uyumludurlar.)
Bunu görselleştirmeye yardımcı olmak için, işaretçinin ortada başladığını varsayarak, hareket komutlarının yapacağı şey:
_____
/ \
_____/ w \_____
/ \ / \
/ q \_____/ e \
\ / \ /
\_____/ \_____/
/ \ / \
/ a \_____/ d \
\ / \ /
\_____/ s \_____/
\ /
\_____/
Saat yönünde döndürüldükten sonra ( r
) komutlar yeniden eşleştirilir (tüm altıgen ızgarayı döndürdüğünü, ancak yine de aşağıdakine eşdeğer olan "w" yi yukarıda tuttuğunu hayal edin):
_____
/ \
_____/ e \_____
/ \ / \
/ w \_____/ d \
\ / \ /
\_____/ \_____/
/ \ / \
/ q \_____/ s \
\ / \ /
\_____/ a \_____/
\ /
\_____/
Benzer şekilde, saat yönünün tersine (döner R
sonra) normale ızgara dönmek ve "Remap" would saat yönünün yine döner qwedsa
için aqweds
.
Giriş tek bir dize olarak verilmelidir ve çıktı sayısal olmayan karakterler (ör. 1 2
Veya 3,4
) ile birleştirilen tek bir dize veya bir tamsayı dizisi olabilir.
Bu kod golf olduğundan , bayt cinsinden en kısa kod kazanacaktır.
Test senaryoları:
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