Tugas Anda adalah mensimulasikan permainan yang sempurna secara matematis tahun 2048. Idenya adalah menemukan batas teoretis seberapa jauh permainan 2048 dapat berjalan, dan menemukan cara untuk sampai ke sana.
Untuk mendapatkan gambaran seperti apa ini, mainkan dengan klon 2x2 ini dan cobalah untuk mencetak 68 poin. Jika ya, Anda akan mendapatkan ubin 2, 4, 8, dan 16. Tidak mungkin untuk maju melewati titik itu.
Tugas Anda menjadi lebih mudah karena Anda dapat memilih tempat ubin bertelur dan apa nilainya, seperti klon ini .
Anda harus menulis sebuah program atau fungsi yang menerima papan 2048 sebagai input, dan mengeluarkan papan dengan ubin spawned dan papan setelah ubin runtuh. Sebagai contoh:
Input:
-------
0 0 0 0
0 0 0 0
0 0 0 0
0 0 8 8
Output:
-------
0 0 0 0
0 0 0 0
0 0 0 0
0 4 8 8
0 0 0 0
0 0 0 0
0 0 0 0
0 0 4 16
Program Anda akan berulang kali diberi output sendiri untuk mensimulasikan seluruh permainan tahun 2048. Input pertama dari program ini adalah papan kosong. Anda harus menelurkan satu ubin di atasnya, tidak seperti dua ubin game asli. Pada langkah terakhir permainan, Anda tidak akan bisa bergerak, sehingga dua papan keluaran Anda bisa identik.
Tentu saja Anda hanya harus mengeluarkan langkah hukum. Hanya 2 atau 4 yang dapat muncul, Anda harus memindahkan atau menciutkan setidaknya satu ubin saat bepergian, dll.
Saya sengaja membuat persyaratan input dan output tidak jelas. Anda bebas memilih format input dan output. Anda dapat menggunakan matriks, array, string, atau apa pun yang Anda inginkan. Selama Anda dapat mensimulasikan game 2048 dengan mereka, input dan output Anda baik-baik saja.
Pemenang akan menjadi orang yang mengakhiri permainan dengan jumlah ubin tertinggi di papan, kemudian dengan jumlah byte terendah dalam kode sumber. Skor dari game asli tidak akan diperhitungkan. (Petunjuk: gunakan 4-an)
sumber
Jawaban:
Ruby, Into the Corner, Nilai: 3340
Berikut adalah strategi yang sangat sederhana untuk memulai ini. Saya memang punya ide untuk skor sempurna (hampir), tapi saya kesulitan memformalkannya, jadi di sini ada sesuatu yang sederhana untuk menyelesaikannya.
The
advance
Fungsi adalah salah satu Anda minta. Dibutuhkan papan sebagai array 1d dan mengembalikan papan setelah ubin telah muncul dan setelah langkah dibuat.Anda dapat mengujinya dengan cuplikan ini
Strateginya sangat sederhana, dan ini adalah yang saya gunakan untuk melompat ke 128 ketika saya bermain 2048 sendiri: hanya bergantian antara atas dan kiri . Untuk membuat ini berfungsi selama mungkin,
4
s baru muncul di sudut kanan bawah.EDIT: Saya telah menambahkan sakelar kode keras untuk meluruskan beberapa kali pada langkah-langkah spesifik tepat sebelum akhir, yang sebenarnya membuat saya mencapai 1024. Namun, ini agak tidak terkendali, jadi saya akan berhenti dengan ini untuk saat ini dan pikirkan pendekatan yang umumnya lebih baik besok. (Jujur, fakta bahwa saya dapat meningkatkan skor saya dengan faktor 4 dengan menambahkan peretasan tweaked hanya memberitahu saya bahwa strategi saya adalah omong kosong.)
Papan inilah yang akhirnya Anda miliki
sumber