En el juego 2048, tienes una cuadrícula y puedes mover los elementos en cuatro direcciones. Todos se mueven en esa dirección lo más lejos que pueden. Para este desafío, se le dará una cadena 2D cuadrada y acolchada (ya sea con nuevas líneas o una lista de cadenas), de esta manera:
ab cd e
f ghij
kl
mno p
q r st
u v
w x y
z
o
['ab cd e ', ' f ghij ', ' kl', 'mno p ', ' q r st ', 'u v', ' w x y ', 'z ']
Las cuatro operaciones son left
, right
, up
, y down
. El resultado de cada uno en la entrada anterior:
Izquierda:
abcde
fghij
kl
mnop
qrst
uv
wxy
z
o
['abcde ', 'fghij ', 'kl ', 'mnop ', 'qrst ', 'uv ', 'wxy ', 'z ']
Derecho:
abcde
fghij
kl
mnop
qrst
uv
wxy
z
o
[' abcde', ' fghij', ' kl', ' mnop', ' qrst', ' uv', ' wxy', ' z']
Arriba:
abocdiel
mf ghsjv
un rp k
zq x t
w y
o
['abocdiel', 'mf ghsjv', 'un rp k ', 'zq x t ', ' w y ', ' ', ' ', ' ']
Abajo:
b e
af c j
mn gd k
uq rhitl
zwoxpsyv
o
[' ', ' ', ' ', ' b e ', 'af c j ', 'mn gd k ', 'uq rhitl', 'zwoxpsyv']
Su objetivo es rotar qué operación se realiza en cada iteración, realizándolas en los n
tiempos de entrada . Entonces, si su orden es URDL
, y la entrada dice que comience con D
( 2
, indexado a 0), y necesita 5
operaciones, realice D-L-U-R-D
, luego imprima.
Entrada:
- Una cadena en un formato como el anterior
- No se requieren espacios finales (pero probablemente sean útiles)
- Será al menos 2x2
- Solo contendrá ASCII y espacios imprimibles (y nuevas líneas según su formato de entrada)
- Teóricamente deberías admitir cualquier longitud, pero las restricciones de memoria están bien
- Un entero no negativo
n
para el número de operaciones que se realizarán. - Un entero
0-3
o1-4
una letra queUDLR
describe la operación para comenzar.- Por lo tanto, su programa debe poder comenzar o finalizar con cualquier operación
- Puede definirlos en cualquier orden para fines de inicio, pero debe ser un orden coherente, por
U
lo que a veces no puede seguirR
y también a veces seguirL
.
- Las operaciones deben realizarse de manera no trivial
- Puede realizar operaciones en el orden
LDRU
(izquierda, abajo, derecha, arriba) repetidamente, pero noDLRU
oUDLR
(porqueUD
es lo mismo queD
, yLR
es lo mismo que hacerR
).
- Puede realizar operaciones en el orden
Salida:
- La cadena después de realizar las cuatro operaciones
n
veces - El formato de salida debe ser el mismo que el formato de entrada.
- No se requieren espacios finales (pero probablemente sean útiles)
Ejemplo:
Este ejemplo usa el orden URDL
.
Entrada:
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
Salidas para n = 0-5: (solo imprima el resultado final)
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
Mi implementación bonita y sin golf
Respuestas:
Jalea , 23 bytes
Pruébalo en línea!
Estoy un poco insatisfecho, pero MATL necesitaba algo de competencia. :PAG
Utiliza el pedido
URDL
. Entradas:U
, 2 =R
, 3 =D
, 4 =L
)Explicación
fuente
JavaScript (ES6), 168 bytes
Sin golf:
d
es el índice inicial en las direcciones que sonURDL
.fuente
Python 2 ,
226224204193 bytes-1 byte gracias a Trelzevir
Pruébalo en línea!
Función que elimina todos los espacios de cada elemento en la lista y completa con espacios a la izquierda o derecha.
Esto para transponer (rotar 90º) cuando la entrada es
0
o1
(U
oD
) y aplicarg
fuente
for i in (...)
.MATL ,
2423 bytesPedido sea
URDL
,1
basados en. Entonces1
es Ù,
2is
R` etc.Las entradas son: número de veces, dirección inicial, matriz de caracteres (usando
;
como separador de filas).Pruébalo en línea!
fuente