Entri sekarang ditutup. Entri atau suntingan baru tidak akan dihitung pada putaran terakhir.
Bergabunglah dengan obrolan!
Tantangan
Cobalah untuk mengisi kanvas dengan cat sebanyak mungkin. Hati-hati dengan bot lain yang mungkin mengecat kerja keras Anda!
Catatan: Dalam deskripsi tantangan ini, cat berarti mengubah warna kotak pada kotak dan tidak dicat berarti bahwa kotak pada kotak memiliki warna 0 dan tidak dikaitkan dengan bot.
Memasukkan
Fungsi Anda akan diberikan empat argumen: diri Anda, kisi, posisi semua bot pada kisi dan informasi permainan.
Diri
Ini adalah array 1D yang menunjukkan warna dan posisi di grid: [id, xpos, ypos]
.
Sudut kiri atas grid adalah posisinya (0, 0)
. Posisi (1,0)
di sebelah kanan itu dan posisinya di (0,1)
bawah
Id Anda adalah bilangan bulat yang identik dengan warna Anda (lihat di bawah untuk mengetahui bagaimana id Anda memengaruhi cara Anda melukis kisi-kisi). ID Anda unik untuk bot Anda.
Kisi
Ini adalah array 2D yang berisi bilangan bulat yang memberi tahu Anda apa warna setiap sel. Jika jumlah sel kotak 0
, itu berarti sel tidak dicat. Jika jumlah sel kisi adalah bilangan bulat x
, ini berarti bahwa sel telah dicat oleh bot dengan ID x
.
Untuk mendapatkan warna grid pada posisi (x, y)
, menggunakan array seperti: grid[x][y]
.
Bot
Ini adalah larik yang berisi informasi tentang posisi bot. Setiap elemen dari array bot adalah array yang menggambarkan setiap bot dan terlihat seperti:, di [id, xpos, ypos]
mana id
ID bot, xpos
adalah posisi x bot dan ypos
posisi y bot.
Array ini mencakup posisi dan id bot Anda sendiri. Bot yang dihilangkan tidak akan termasuk dalam larik ini.
Informasi Permainan
Ini adalah array yang berisi informasi tentang game saat ini dan terlihat seperti: di [roundNum, maxRounds]
mana roundNum
jumlah putaran saat ini (1-diindeks) dan maxRounds
merupakan jumlah putaran di game saat ini.
Keluaran
Outputnya harus berupa string yang dikembalikan oleh fungsi Anda. Ini adalah perintah gerakan.
Perintah gerakan menentukan langkah Anda selanjutnya. Perintah yang tersedia adalah:
up
down
left
right
wait
Setiap kali Anda bergerak, Anda mengecat kotak tempat Anda pindah. (lihat di bawah untuk informasi lebih lanjut)
Di mana wait
berarti Anda tidak bergerak. (tapi Anda mengecat kotak tempat Anda tinggal)
Jika Anda mencoba untuk pindah ke luar kotak, perintah Anda akan diabaikan dan Anda akan tetap di tempat yang sama.
Lukisan grid
Setiap kali Anda pindah ke kotak, Anda melukisnya, tetapi ada aturan yang menentukan apa warna kotak itu.
Jika kotak tidak dicat (0), Anda cukup mengecatnya dengan warna yang sama dengan ID Anda sendiri. Namun, jika kotak telah dicat sebelumnya (bukan nol) maka warna yang dihasilkan kotak akan ditemukan sesuai dengan kode JavaScript berikut:
[botColour, 0, floorColour][Math.abs(botColour - floorColour)%3]
Formula ini dibuat untuk memungkinkan bot bergerak di atas warnanya sendiri tanpa mengecat ulang.
Eliminasi
Jika, setelah putaran 5, Anda memiliki satu atau lebih sedikit kotak yang dicat (jumlah kotak pada kotak yang warnanya sama dengan Anda) maka Anda akan dihilangkan. Ini berarti bahwa Anda tidak akan lagi berada dalam permainan dan secara otomatis akan kalah.
Aturan
- Kode Anda harus memiliki fungsi tipe
function(myself, grid, bots, gameInfo) {
// Code here
return move;
}
- Kotak akan menjadi persegi panjang sisi
- Untuk mencegah penargetan bot tertentu, ID bot akan diacak.
- Ketika dua bot menempati ruang yang sama, warna ruang itu akan dibuat tidak dicat.
- Gerakan berbasis giliran yaitu selama putaran, semua bot disediakan dengan identik
grid
,bots
dangameInfo
argumen
- Anda dapat membuat maksimal tiga bot
- Bot dapat bekerja bersama tetapi tidak boleh berkomunikasi satu sama lain dan tidak akan saling mengenal ID. Kemenangan akan diberikan secara individual daripada sebagai tim.
- Anda tidak boleh membuat bot yang dengan sengaja menargetkan bot tunggal yang dipilih sebelumnya. Namun, Anda dapat menargetkan taktik kelas bot umum.
- Bot Anda dapat menyimpan data dalam
window.localStorage
. Setiap bot harus menggunakan objek data mereka sendiri. Jika bot diketahui sedang membaca data bot lain (secara tidak sengaja atau sengaja) bot akan didiskualifikasi sampai masalah teratasi. - Jika bot Anda menggunakan angka acak, silakan gunakan
Math.random()
Pengendali
Pengontrol dapat ditemukan di sini:
https://gist.github.com/beta-decay/10f026b15c3babd63c004db1f937eb14
Atau Anda dapat menjalankannya di sini: https://beta-decay.github.io/art_attack
catatan: Saya akan menyarankan Anda melakukan pengujian offline (unduh controller dari intinya) karena halaman web dapat berubah sewaktu-waktu.
Ketika semua bot telah ditambahkan, saya akan menjalankan 10.000 game dengan pengontrol stripped down tanpa antarmuka grafis. Anda dapat menjalankannya di sini: https://beta-decay.github.io/art_attack/fast
Kemenangan
Pemain yang telah mengisi sebagian besar kanvas memenangkan permainan (permainan adalah 2000 putaran). Jika terjadi seri, semua pemain yang ditarik menang.
Pemain yang memenangkan 10.000 pertandingan terbanyak memenangkan tantangan.
10.000 pertandingan diperkirakan akan berjalan Senin depan (2018-08-27 pukul 23.00 UTC + 1).
[botColour, 0, floorColour][Math.abs(botColour - floorColour)%3]
formula, apakah bot beruntung atau tidak melukis pesaing besar (atau dilukis). Juga pertimbangkan troll / pemburu yang dapat menghancurkan bot pilihan mereka sendiri. Either way, itu akan keluar rata-rata pada 10.000 game.
[botColour, 0, floorColour][Math.abs(botColour - floorColour)%3]
ke dalam bahasa Inggris?