W grze 2048 masz siatkę i możesz przenosić elementy w czterech kierunkach. Wszystkie poruszają się w tym kierunku tak daleko, jak to możliwe. Do tego wyzwania otrzymasz wyściełany, kwadratowy ciąg 2D (albo z nowymi liniami, albo z listą ciągów), w następujący sposób:
ab cd e
f ghij
kl
mno p
q r st
u v
w x y
z
lub
['ab cd e ', ' f ghij ', ' kl', 'mno p ', ' q r st ', 'u v', ' w x y ', 'z ']
Cztery operacje są left, right, up, i down. Wynik każdego z powyższych danych wejściowych:
Lewo:
abcde
fghij
kl
mnop
qrst
uv
wxy
z
lub
['abcde ', 'fghij ', 'kl ', 'mnop ', 'qrst ', 'uv ', 'wxy ', 'z ']
Dobrze:
abcde
fghij
kl
mnop
qrst
uv
wxy
z
lub
[' abcde', ' fghij', ' kl', ' mnop', ' qrst', ' uv', ' wxy', ' z']
W górę:
abocdiel
mf ghsjv
un rp k
zq x t
w y
lub
['abocdiel', 'mf ghsjv', 'un rp k ', 'zq x t ', ' w y ', ' ', ' ', ' ']
Na dół:
b e
af c j
mn gd k
uq rhitl
zwoxpsyv
lub
[' ', ' ', ' ', ' b e ', 'af c j ', 'mn gd k ', 'uq rhitl', 'zwoxpsyv']
Twoim celem jest obrócenie, która operacja jest wykonywana podczas każdej iteracji, wykonując je w czasie wejściowym n. Więc jeśli twoje zamówienie jest URDL, a dane wejściowe mówią, aby zacząć od D( 2, indeksowane 0), a potrzebujesz 5operacji, wykonujesz D-L-U-R-D, a następnie drukujesz.
Wejście:
- Ciąg w formacie jak wyżej
- Spacje końcowe nie są wymagane (ale prawdopodobnie są pomocne)
- Będzie to co najmniej 2x2
- Będzie zawierać tylko drukowalne ASCII i spacje (oraz znaki nowego wiersza według formatu wejściowego)
- Powinieneś teoretycznie obsługiwać dowolną długość, ale ograniczenia pamięci są w porządku
- Nieujemna liczba całkowita,
ndla liczby operacji, które zostaną wykonane - Liczba całkowita
0-3lub1-4literaUDLRopisująca operację na początek.- Twój program musi być w stanie rozpocząć lub zakończyć się dowolną operacją
- Możesz zdefiniować je w dowolnej kolejności dla celów początkowych, ale musi to być spójna kolejność, więc
Uczasami nie można wykonać,Ra czasem także wykonaćL.
- Operacje muszą być wykonywane nietrywialnie
- Możesz wykonywać operacje w kolejności
LDRU(w lewo, w dół, w prawo, w górę) wielokrotnie, ale nieDLRUlubUDLR(ponieważUDjest taki sam, jakDiLRrobi to samoR.)
- Możesz wykonywać operacje w kolejności
Wynik:
- Łańcuch po wykonaniu czterech operacji
nrazy - Format wyjściowy musi być taki sam jak format wejściowy
- Spacje końcowe nie są wymagane (ale prawdopodobnie są pomocne)
Przykład:
W tym przykładzie użyto zamówienia URDL.
Wejście:
10 (number of times operations are applied)
0 (starts with Up)
ab cd e
f ghij
kl
mno p
q r st
u v
w x y
z
Dane wyjściowe dla n = 0-5: (wystarczy wydrukować wynik końcowy)
ab cd e
f ghij
kl
mno p
q r st
u v
w x y
z
---------------
abocdiel
mf ghsjv
un rp k
zq x t
w y
---------------
abocdiel
mfghsjv
unrpk
zqxt
wy
---------------
el
dijv
chspk
bognrxt
amfuzqwy
---------------
el
dijv
chspk
bognrxt
amfuzqwy
---------------
eljvkxty
disprqw
chgnz
bofu
am
Moja ładna, nie golfowa implementacja