2048 adalah gim yang sangat asyik dan adiktif yang tujuannya adalah membuat ubin dengan 2048.
Berikut deskripsi singkat gim ini:
Menekan tombol panah akan menggeser semua blok di panggung ke arah itu. Misalnya, jika x
mewakili sebuah blok, dan Anda menekan panah ke atas dalam hal ini:
...x
.x..
..x.
xx..
Maka papan akan menjadi
xxxx
.x..
....
....
Selanjutnya, blok diberi nomor, mulai dari 2
. Jika dua dari blok bernomor yang sama dipindahkan bersama, mereka akan bergabung ke nomor berikutnya. Misalnya, menekan "naik" di papan ini:
.2..
..22
.2..
....
Akan membuat ini:
.422
....
....
....
Dan kemudian setelah menekan "benar," itu akan menjadi ..44
, dan karena itu menekan kanan lagi akan membuat blok "8", dan seterusnya.
Setiap belokan, blok "2" baru dibuat pada kotak terbuka acak. (Sebenarnya tidak selalu "2," tetapi untuk kesederhanaan mari kita tetap di situ.) Jika tidak ada gerakan yang mungkin tersisa (yaitu, papan penuh dan Anda tidak dapat menggabungkan apa pun), permainan hilang, dan jika blok 2048 dibuat, Anda menang!
Tantangan Anda adalah menciptakan kembali game ini, bermain golf!
Untuk casing tepi, seperti menekan "kanan" di papan ini:
.... .222 .... ....
Anda harus menggabungkan ubin yang paling dekat dengan tepi tombol panah yang ditekan. Sebagai contoh, ini akan menjadi
..24
, karena "2" kedua dan ketiga adalah yang paling dekat dengan tepi kanan.Jika pemain menekan gerakan yang tidak valid (seperti "naik" di papan seperti
2.2. / .... / .... / ....
), Anda harus mengabaikan gerakan itu.Bergerak dapat diterima dengan cara apa pun, seperti mengklik, tombol panah
ULRD
, dll.Semua ubin harus memiliki bentuk yang sama — ubin "1024" harus berukuran sama dengan ubin "2".
Ubin harus dipisahkan dengan beberapa cara. Sebagai contoh,
|1024| 2|1024|1024|
adalah contoh valid dari sebuah baris (dengan asumsi bahwa ubin adalah kotak), sedangkan1024 210241024
tidak.Anda harus menampilkan "Anda menang" jika pemain membuat ubin 2048, atau "Anda kalah" jika tidak ada gerakan yang valid tersisa.
Ini adalah kode-golf , jadi kode terpendek dalam byte akan menang!
sumber
Jawaban:
APL (Dyalog APL) ,
153150167156 byteAnjuran untuk pindah; 0 = Kiri, 1 = Atas 2 = Kanan, 3 = Bawah
Cobalah online!
Tidak disatukan, dengan spasi putih
Penjelasan
Baris kosong menunjukkan baris baru, sedangkan blok garis berada pada satu baris
sumber
GolfScript, 323 karakter
Kunci yang harus Anda gunakan adalah
wasd
tetapi Anda dapat mengubah konstanta dalam kode ke kunci apa pun yang Anda suka. Itu anggun mengabaikan kunci tidak dikenal atau langkah ilegal. Sayangnya Anda harus menekan enter setelah setiap tombol.Solusi 256 karakter
Di sini keluarannya adalah logaritmik heksadesimal, yaitu
0
kependekan dari.
,1
untuk2
,2
untuk4
,3
untuk8
...B
untuk2048
. Karena kita semua tahu heksadesimal dan kekuatan dua hal ini seharusnya tidak menjadi batasan sama sekali.Contoh lari (gerakan pertama):
sumber
J -
240230216 charIni menghitung baris tambahan, karena Anda memerlukannya untuk mulai menjalankan game di konsol. Mainkan dengan mengetik salah satu
udlr
dan kemudian menekan Enter. Bergerak yang tidak melakukan apa pun pada papan ditangani dengan benar, tetapi program akan marah pada Anda jika Anda memberikannya masukan yang buruk.Versi yang dapat dibaca dan penjelasannya sedikit terlalu besar untuk masuk ke dalam postingan: Anda dapat menemukan artikel di tautan ini .
Pemakaian:
sumber
Mathematica, 484 karakter
Sangat jelek.
Dikendalikan oleh tombol panah.
Tidak Disatukan:
sumber
Delphi XE3 (Menunggu banyak {whispers} 2,979 bytes -> ungolfed 4,560 bytes)
Saya suka menyebutnya "2048 code the novel"
Digunakan lebih banyak byte daripada yang saya suka tetapi berfungsi dan itu menyenangkan untuk dilakukan.
Saya masih akan mencoba membuatnya lebih pendek nanti.
Permainan sedang berlangsung
Golf
Tidak disatukan
sumber
,
dan.
dalam jumlah!C (standar C89), 881 byte
Gunakan kunci WASd untuk bergerak. Kompilasi dalam GCC dan dentang secara default, kecuali ditetapkan ke standar C99 (saya kira). Menggunakan termios.h, bekerja di Linux dan MacOS X. Tidak yakin tentang Windows.
Patah dalam beberapa baris:
Terlihat:
Itu bisa diperbaiki pasti.
sumber
Jawa:
13461269Sunting Jadi, meskipun kontes ini selesai, terkadang saya tidak bisa melepaskan ketika perbaikan dapat dilakukan. Versi ini menawarkan fungsi lipat yang lebih ramping, lebih kejam, di tempat, penggusuran sebagian besar
boolean
jenis kecuali jika akan lebih bertele-tele tanpa mereka, dan sel-sel yang sedikit lebih kecil (4x4 bukannya 5x5) untuk memotong beberapa karakter tambahan di sana.Jadi ini menyenangkan. Terima kasih untuk posting! Tidak dikelompokkan, ini adalah 2.856 byte, golf saya menyusut menjadi 1346 byte. Menjadi Jawa, saya tidak akan menang, tetapi saya ingin menunjukkan yang baik. Mencari tahu fungsi roll-up "umum" untuk menangani sambungan ubin dan gerakan adalah hal yang menyenangkan - Anda tentu saja dapat melihat "kemajuan" saya dengan melihat melalui komit pada repositori github saya untuk solusi ini .
Golf:
Tidak tergabung: (Periksa repositori github saya untuk proyek ini untuk versi terbaru, termasuk tes berbasis pernyataan untuk fungsi lipat baru)
Menggunakan program ini sederhana. Untuk membangun dan menjalankan:
Tekan
u
untuk melipat ke atas,r
untuk melipat ke kanan,d
untuk melipat ke bawah,l
untuk melipat ke kiri. Kunci lainnya diabaikan, gerakan yang tidak valid (tidak ada hasil) diabaikan. Menjadi Java, tekanenter
setelah setiap tombol untuk menyiram buffer garis. Seperti yang disyaratkan oleh aturan, jika Anda memenangkan output programyou win
, jika Anda kehilangan output programyou lose
. Baru2
ditempatkan secara acak di ubin terbuka. Penggabungan mengikuti aturan yang dinyatakan. Sel adalah karakter 4x4, dengan batas yang mengelilingi setiap sel. Tentu saja, beri saya komentar jika saya mengacaukan sesuatu dan saya akan memastikan untuk memperbaikinya.Contoh output:
sumber
Lua,
622616615612592590575 byteQuery stdin untuk 1,2,3,4 berkorelasi dengan kiri, bawah, kanan, atas (dibuat untuk input numpad); macet jika Anda memberikannya input yang buruk.
Kotak kosong dicetak sebagai '0's.
Contoh output:
sumber
Clojure: 599
jalankan dalam REPL
bermain golf
ungolfed
sumber