EDIT: Baru-baru ini, pertanyaan saya telah diajukan sebagai duplikat 2048 Bot Challenge . Saya ingin menekankan bahwa pertanyaan ini berbeda dari pertanyaan itu, dan akan memerlukan jawaban untuk dianggap berbeda dari pertanyaan itu. 2048 Bot Challenge meminta pengguna untuk membuat bot, dan itu akan berjalan selama satu jam, dengan skor tertinggi adalah skor pengguna. Selain itu, ia memiliki batas 555 byte. Tantangan saya menjalankan kode jauh lebih jarang, hanya 3 kali. Skor Anda dihitung dengan menggunakan skor rata-rata dari tiga kali dan membaginya dengan panjang karakter kode golf Anda. Pertanyaan saya mendorong entri menjadi "lebih pintar," dan tidak mencoba dan mendapatkan skor tertinggi dengan kekerasan.
-
EDIT: Metode get diubah menjadi getTile, untuk menghindari pertentangan dengan get kata kunci JS. Selain itu, bagian skor tinggi ditambahkan.
Baru-baru ini, saya membuat situs yang memungkinkan game populer 2048 dikendalikan menggunakan JavaScript. Situs saya tertaut di sini:
Bagaimana:
Editor Ace terletak di atas papan. Anda menempatkan kode di dalamnya, yang dijalankan sekali setiap 250 ms, atau 4 kali per detik. Ini disebut siklus.
Gunakan metode berikut untuk mengontrol papan. Anda tidak dapat menggunakan tombol panah.
up(); //move up
down(); //move down
left(); //move left
right(); //move right
move(integer); //integer is a direction. 0:up,1:right,2:down,3:left
getTile(y,x); //gets the value of the tile in position y,x on the board. See diagram
Variabel berikut ditentukan untuk kenyamanan Anda:
eother //boolean, alternates every cycle
frozen //integer, counts how many cycles the board has remained stationary
lastDir //integer, indicates the last direction that was tried to move in
//uses same format as the move method above.
startup //boolean, will always be true when the game first starts
//you can change it as you wish
a
b //a b and c are all persistant variables, they do not change each cycle
c //any other variables defined in the cycle will be reset every time
Aturan:
- Tanpa Keacakan, Anda harus menggunakan logika. (Ya, saya tahu kode contoh menggunakan acak.)
- Tidak mengaitkan ke fungsi permainan atau menipu dengan cara lain
- Secara umum, cobalah hanya memanggil metode satu langkah per siklus. Tidak apa-apa jika Anda menggunakan lebih banyak, tetapi itu kacau dengan animasi
- Papan harus mulai dalam keadaan acak, tidak ada modifikasi dari kondisi sebelum pertandingan
- Anda harus memberikan versi kode yang tidak dikompresi dan golf di pos Anda.
- Anda harus memberikan tautan ke situs yang sudah memuat versi kode Anda yang tidak terkompresi, disajikan melalui PasteBin (Misalnya, ... thatcoolidea.com/2048?i=pH18GWtu memuat kode contoh.)
Mencetak:
- Kode Anda akan dicetak oleh saya.
- Bagian A dari skor Anda adalah rata-rata 3 run dari kode, dibulatkan ke bawah.
- Bagian B dari skor Anda adalah panjang karakter kode golf Anda.
- Skor akhir Anda adalah Bagian A dibagi dengan Bagian B
Pemenang akan memiliki kode mereka diabadikan sebagai kode contoh di situs, jika mereka memilih, dan diakui dalam komentar dalam kode.
Semoga berhasil! Semoga Anda menikmati tantangan.
Skor Tinggi Saat Ini 225,22 - Freezer - user3217109
sumber
Jawaban:
Sinker / Shaker, 65 byte
Ini milik saya . Begitu buta dan sesederhana mereka datang.
Tidak terkompresi (ish) ...
Yang ia lakukan hanyalah mengulangi, kanan, bawah, kiri, dll. Dan memukul sekali jika macet. Ini tidak selalu bekerja dengan sangat baik, tetapi kadang-kadang akan mendapatkan 512-an. Skor tinggi saya selama pengujian adalah 7520.
sumber
Lampu lalu lintas -
2321 byteIni tautannya.
Ini akan bergerak secara bergantian ke atas dan ke kanan, kecuali ketika papan tetap diam untuk dua gerakan terakhir, dalam hal ini akan bergerak ke bawah dan kiri masing-masing.
Pengajuan asli saya, yang secara fungsional setara adalah sepanjang 23 byte dan mencetak 182,72:
sumber
Pusaran Air -
372117 byte - Nilai: 211,22Saya memutuskan untuk pergi dengan pendekatan "kurang lebih". Kode saya adalah desain sederhana yang mencoba naik, kanan, turun, kiri ... Saya akan mengerjakan AI pembelajaran untuk melihat cara yang lebih optimal untuk mendekati puzzle.
Pengoptimal membantu memperpendek
a
inisialisasi.Sam membantu mempersingkat
a
inisialisasi, dihapusvar
.Tidak disatukan?
Skor tertinggi saya dengan AI ini adalah 5120.
Freezer - 12 byte - Nilai: 225,22
Bot ini memiliki prioritas bergerak. Mencoba untuk naik. Jika itu bisa 'naik, itu berjalan dengan benar. Jika itu tidak bisa berjalan dengan benar, itu turun. Jika tidak bisa turun itu ke kiri.
Penjelasan James Bond
Kode terenkripsi mendekripsi untuk mengatakan:
Pengoptimal seharusnya mem-golf-kan kodenya. Ini bisa jadi #Optimized.
sumber
a
juga. Sehingga harus ditambahkan panjang kode.a
sekali dan melupakannya, tetapi jika Anda menutup tab / jendela dan kembali ke sana, saya tidak berpikir itu akan berfungsi lagi. Inilah sebabnya saya harus menambahkan bit if (startup) pada milik saya.var a=a|0;move(a++%4)
- 21 bytea
tanpa melakukanvar a
Hanger - 20 byte
Skor resmi: 224,87 - 2 tempat dengan 0,35 poin
Bot ini menggunakan pendekatan turun, kiri, bawah, kanan, tetapi dengan fitur tidak biasa yang tidak akan pernah naik. Saya tidak yakin bagaimana cara menilai kasus di mana hang dan tidak lengkap, atau apakah fakta yang terjadi menjadikannya ilegal. Ini dia:
Pola inisialisasi berkat @Optimizer.
Dalam 3 pengujian saya, skor saya adalah 4284, 6352, dan 4232, dengan rata-rata 4.956. Saya akan memperbarui ketika tes resmi dijalankan.
Versi alternatif yang keluar dari hang (27 byte):
sumber