Dalam permainan 2048, Anda memiliki kisi, dan Anda dapat memindahkan elemen dalam empat arah. Mereka semua bergerak ke arah itu sejauh yang mereka bisa. Untuk tantangan ini, Anda akan diberi string 2D persegi berlapis (baik dengan baris baru, atau daftar string), seperti:
ab cd e
f ghij
kl
mno p
q r st
u v
w x y
z
atau
['ab cd e ', ' f ghij ', ' kl', 'mno p ', ' q r st ', 'u v', ' w x y ', 'z ']
Empat operasi yang left
, right
, up
, dan down
. Hasil masing-masing pada input di atas:
Kiri:
abcde
fghij
kl
mnop
qrst
uv
wxy
z
atau
['abcde ', 'fghij ', 'kl ', 'mnop ', 'qrst ', 'uv ', 'wxy ', 'z ']
Baik:
abcde
fghij
kl
mnop
qrst
uv
wxy
z
atau
[' abcde', ' fghij', ' kl', ' mnop', ' qrst', ' uv', ' wxy', ' z']
Naik:
abocdiel
mf ghsjv
un rp k
zq x t
w y
atau
['abocdiel', 'mf ghsjv', 'un rp k ', 'zq x t ', ' w y ', ' ', ' ', ' ']
Turun:
b e
af c j
mn gd k
uq rhitl
zwoxpsyv
atau
[' ', ' ', ' ', ' b e ', 'af c j ', 'mn gd k ', 'uq rhitl', 'zwoxpsyv']
Tujuan Anda adalah memutar operasi mana yang dilakukan setiap iterasi, dan menjalankannya pada waktu input n
. Jadi jika pesanan Anda adalah URDL
, dan input mengatakan mulai dengan D
( 2
, 0-diindeks), dan Anda perlu 5
operasi, Anda lakukan D-L-U-R-D
, kemudian cetak.
Memasukkan:
- Sebuah string dalam format seperti di atas
- Ruang tambahan tidak diperlukan (tetapi mungkin membantu)
- Paling tidak akan 2x2
- Hanya akan berisi ASCII dan spasi yang dapat dicetak (dan baris baru per format input Anda)
- Secara teoritis Anda harus mendukung panjang apa pun, tetapi kendala memori tidak masalah
- Integer non-negatif
n
,, untuk jumlah operasi yang akan dilakukan - Integer
0-3
atau1-4
, atau suratUDLR
, yang menjelaskan operasi untuk memulai.- Jadi program Anda harus dapat memulai atau mengakhiri dengan operasi apa pun
- Anda dapat menentukannya dalam urutan apa pun untuk tujuan awal, tetapi haruslah urutan yang konsisten, sehingga
U
terkadang tidak dapat mengikutiR
dan juga terkadang mengikutiL
.
- Operasi harus dilakukan secara non-sepele
- Anda bisa melakukan operasi dalam urutan
LDRU
(kiri, bawah, kanan, atas) berulang kali, tetapi tidakDLRU
atauUDLR
(karenaUD
sama sepertiD
, danLR
sama seperti melakukanR
.)
- Anda bisa melakukan operasi dalam urutan
Keluaran:
- Tali setelah melakukan empat
n
kali operasi - Format output harus sama dengan format input Anda
- Ruang tambahan tidak diperlukan (tetapi mungkin membantu)
Contoh:
Contoh ini menggunakan perintah URDL
.
Memasukkan:
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
Output untuk n = 0-5: (cetak saja hasil akhirnya)
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
Implementasi saya yang cantik dan tidak serigala
Jawaban:
Jelly , 23 byte
Cobalah online!
Saya agak tidak puas, tetapi MATL membutuhkan beberapa kompetisi. : P
Menggunakan pesanan
URDL
. Input:U
, 2 =R
, 3 =D
, 4 =L
)Penjelasan
sumber
JavaScript (ES6), 168 byte
Tidak Disatukan:
d
adalah indeks awal ke arah yangURDL
.sumber
Python 2 ,
226224204193 byte-1 byte berkat Trelzevir
Cobalah online!
Fungsi yang menghapus semua spasi dari setiap elemen dalam daftar dan lengkap dengan spasi di kiri atau kanan.
Ini untuk mengubah posisi (putar 90º) ketika inputnya adalah
0
atau1
(U
atauD
) dan terapkang
sumber
for i in (...)
.MATL ,
2423 bytePesanan
URDL
,1
berbasis. Begitu1
juga Ù,
2is
R` dll.Input adalah: berapa kali, arah awal, matriks char (menggunakan
;
sebagai pemisah baris).Cobalah online!
sumber