В игре 2048 у вас есть сетка, и вы можете перемещать элементы в четырех направлениях. Все они движутся в этом направлении так далеко, как могут. Для этого задания вам будет предоставлена квадратная 2D-строка с добавками (либо с символами новой строки, либо со списком строк), например:
ab cd e
f ghij
kl
mno p
q r st
u v
w x y
z
или
['ab cd e ', ' f ghij ', ' kl', 'mno p ', ' q r st ', 'u v', ' w x y ', 'z ']
Четыре операции left, right, up, и down. Результат каждого на приведенном выше входе:
Осталось:
abcde
fghij
kl
mnop
qrst
uv
wxy
z
или
['abcde ', 'fghij ', 'kl ', 'mnop ', 'qrst ', 'uv ', 'wxy ', 'z ']
Правильно:
abcde
fghij
kl
mnop
qrst
uv
wxy
z
или
[' abcde', ' fghij', ' kl', ' mnop', ' qrst', ' uv', ' wxy', ' z']
Up:
abocdiel
mf ghsjv
un rp k
zq x t
w y
или
['abocdiel', 'mf ghsjv', 'un rp k ', 'zq x t ', ' w y ', ' ', ' ', ' ']
Вниз:
b e
af c j
mn gd k
uq rhitl
zwoxpsyv
или
[' ', ' ', ' ', ' b e ', 'af c j ', 'mn gd k ', 'uq rhitl', 'zwoxpsyv']
Ваша цель состоит в том, чтобы чередовать, какая операция выполняется на каждой итерации, выполняя их во время ввода n. Так что, если ваш заказ URDL, и ввод говорит начать с D( 2, 0-индексированный), и вам нужны 5операции, вы выполняете D-L-U-R-D, а затем печатаете.
Входные данные:
- Строка в формате, как указано выше
- Конечные пробелы не требуются (но они, вероятно, полезны)
- Это будет как минимум 2х2
- Будет содержать только печатные ASCII и пробелы (и переводы строк в соответствии с вашим форматом ввода)
- Вы должны теоретически поддерживать любую длину, но ограничения памяти в порядке
- Неотрицательное целое число,
nдля количества операций, которые будут выполнены - Целое число
0-3или1-4, или букваUDLR, описывающая операцию, с которой нужно начать.- Таким образом, ваша программа должна иметь возможность начинать или заканчивать любую операцию
- Вы можете определить их в любом порядке для начальных целей, но это должен быть последовательный порядок, поэтому
Uиногда нельзя следовать,Rа иногда и следоватьL.
- Операции должны выполняться нетривиально
- Вы можете выполнять операции в порядке
LDRU(влево, вниз, вправо, вверх) несколько раз, но неDLRUилиUDLR(потому чтоUDэто то же самоеD, что иLRто же самое, что и выполнениеR).
- Вы можете выполнять операции в порядке
Выход:
- Строка после выполнения четырех операций
nраз - Формат вывода должен совпадать с форматом ввода
- Конечные пробелы не требуются (но они, вероятно, полезны)
Пример:
В этом примере используется порядок URDL.
Входные данные:
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
Выходы для n = 0-5: (просто выведите конечный результат)
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
Моя симпатичная, не одураченная реализация