Ini adalah musim panas yang kering di padang rumput. Keempat petani di daerah tersebut menyadari bahwa mereka dapat memojokkan pasar dengan jagung dengan membakar tanaman tetangga mereka. Tetapi mereka membutuhkan strategi untuk melakukannya; di situlah Anda masuk.
Tugas Anda adalah menulis bot untuk memberi tahu petani apa yang harus dibakar. Tujuannya adalah untuk menyelesaikan permainan dengan area tanah tidak terbakar terbesar. Lapangan bermain adalah kotak 32x32. Setiap sel mungkin salah satu dari yang berikut:
. - Ground
@ - A bot
# - Ash
W - Wet ground
1,2,3,4,5, or 6 - Fire
Api tumbuh dalam intensitas dengan 1 setiap belokan. Setelah 3 atau lebih tinggi, itu akan mengatur sel di sebelahnya (horizontal atau vertikal) terbakar. Setelah api mengenai 6, itu berubah menjadi abu.
Pada setiap belokan, bot menerima sebagai STDIN sebagai berikut: bot mulai x, bot mulai y, posisi bot saat ini x, posisi bot saat ini y, dan papan, dipisahkan oleh baris baru. Sebuah contoh:
8
22
6
24
................................
................................
................................
.....................1..........
....................1#1.........
...................1#363........
....................16@1........
.....................31.........
................................
.........1.1....................
........15#62...................
........15@2....................
.........32.....................
................................
................................
................................
................................
................................
................................
................................
................................
................................
....4.1.........................
.....1#3........................
.....@3.........................
.....W..........................
................................
................................
................................
................................
................................
................................
(dalam hal ini Anda adalah bot di kiri bawah).
Anda harus menampilkan tiga karakter, dengan baris baru opsional, yang mewakili yang berikut:
Pindahkan - salah satunya L, R, U, D, or S (stay)
Aksi - salah satunya B (burn), P (pour water) or X (do nothing)
Arah - salah satu dari L, R, U, D or S
- mengontrol sel tempat Anda melakukan tindakan
Api tidak memengaruhi bot.
Ubah urutan adalah sebagai berikut: Semua bot bergerak; semua bot melakukan tindakan; kemudian aturan lingkungan terjadi. Jika Anda menuangkan air ke tanah, air akan menjadi basah ( W
) untuk satu putaran. Api tidak akan menyebar ke tanah basah. Jika Anda menuangkan air di tanah basah, air akan terus basah. Jika Anda menuangkan air ke api, itu kembali ke tanah biasa. Anda tidak dapat melakukan apa pun untuk abu.
Putaran dijalankan dengan 4 bot sekaligus. Putaran berakhir setelah 50 putaran, atau ketika satu bot kehabisan tanah yang tidak terbakar, mana yang lebih dulu. Skor Anda dihitung sebagai jumlah sel tanah atau basah di kotak 9x9 yang berpusat di tempat bot Anda dimulai.
Berikut adalah contoh bot; mengambil ketiga huruf secara acak dan umumnya berakhir membakar bidangnya sendiri.
RandomBurner:
#!/usr/bin/env python
import random
print random.choice('LRUDS')+random.choice('BPX')+random.choice('LRUDS')
Aturan:
- Tidak ada akses sistem file di luar folder Anda sendiri.
- Anda dapat menulis ke file jika Anda perlu menyimpan data yang persisten di antara belokan, tetapi hanya maksimal 1 kb per bot
- Anda tidak boleh menimpa bot orang lain
- Jika Anda menghasilkan gerakan yang tidak valid, bot Anda akan duduk diam. Jika Anda menghasilkan tindakan yang tidak valid, bot Anda tidak akan melakukan apa pun.
- Harap tetap menggunakan bahasa umum yang dapat dijalankan pada kotak OSX atau Linux.
Kode pengontrol dapat ditemukan di sini.
Hasil awal:
Average of 15 rounds:
---------------------
81 Farmer
56 CautiousBot
42 GetOff
41 Visigoth
40 DontBurnMeBro
37 FireFighter
35 Pyro
11 Protector
Pembaruan : Menambahkan Petani, CautiousBot, GetOff, FireFighter, dan Pyro.
sumber
Jawaban:
orang biadab
Visigoth mencoba membakar musuh-musuhnya ke tanah. Ia berharap untuk melakukan ini sebelum orang lain sampai ke tanahnya.
Menjalankan:
python visigoth.py
Ini adalah entri pertama saya, kritik konstruktif dihargai!
sumber
min
tempat yang seharusnyamax
. Aku telah memperbaikinya.Jawa, Pelindung
Berusaha mengelilingi ladangnya dengan pagar abu.
Sunting: Logika sedikit ditingkatkan. Mungkin tidak akan membuat perbedaan.
Tempatkan dalam file bernama
Protector.java
.Kompilasi dengan:
javac Protector.java
Jalankan dengan:
java Protector
sumber
GetOff, Python
GetOff hanya ingin menjaga tanahnya untuk dirinya sendiri, dan dia tidak takut untuk mengejar bot sialan itu di seluruh tanahnya, menyemprotkan mereka dengan pistol air sampai mereka pergi. Meskipun propertinya tidak dilanggar, ia berusaha sebaik mungkin untuk memastikan tanahnya tidak terbakar.
sumber
a < b < c
sintaks berfungsi dalam Python? Saya pikir itu mengevaluasi(a < b) < c
, yang dapat1 < c
atau0 < c
. Koreksi saya jika saya salah. (Ditemukan dalam kondisi pertama bot loop.)1<3>2
mengevaluasi keTrue
mesin saya (jika mengelompokkan mereka itu akan kembali salah:1>2
dan1<1
kemungkinan).Petani, Jawa
Petani hanya peduli dengan hasil panennya. Dia terus mengawasi ladangnya untuk kemungkinan kebakaran atau penyerbu.
sumber
isFire
Anda bisa menggunakannyaCharacter.isDigit
sebagai gantinya.Pyro, python
Pyro suka api. Pyro mencintai api. Pyro hidup dalam api. Saya sedang berpikir "Pyro from TF2". Pyro suka membakar barang. Dia tidak akan membakar wilayahnya sendiri, tetapi dia akan mencoba untuk keluar dari sana, menggunakan algoritma "pathfinding" sederhana.
sumber
DontBurnMeBro
Entri Python lain. Dijamin bukan menjadi yang pertama mati (saya pikir).
sumber
P
tidakW
.Pemadam Kebakaran, Jawa
Melawan semua kebakaran.
sumber
Penjaga, Python 2
Bisa disederhanakan, tapi saya lelah.
Penjaga berusaha menjaga medan dari bahaya. Jika api muncul, ia bergegas ke sana dan memadamkannya secepat mungkin.
Saya dapat menambahkan akomodasi untuk kebakaran yang masuk juga.
sumber
ValueError: min() arg is an empty sequence
- ia melempar kesalahan jika belum ada yang terbakar.CautiousBot, Node.js (ES5)
Bot ini keluar dan mencoba untuk membakar tanah bot lain. Itu bahkan duduk di atas api selama 3 kutu untuk menyembunyikannya! Namun, seseorang tidak pernah bisa terlalu berhati-hati, jadi selalu pastikan itu cukup dekat untuk memadamkan api di tanahnya sendiri.
Catatan:
state.json
disimpan dalam direktori kerjanya, digunakan untuk menyimpan informasi tentang posisi awal bot lain dan untuk menentukan berapa lama untuk menyembunyikan api yang dimulai. Ini harus dihapus setelah putaran selesai (misalnya, ketika beberapa bot telah menang). Kalau tidak, bot akan bingung pada putaran berikutnya. (Beri tahu saya jika ini melanggar aturan.)split
modul.sumber
Error: Cannot find module 'split'
. Saya menggunakan Node.js v0.10.30.cd botdir
npm install split
untuk beberapa alasan node tidak suka itu diinstal secara global untuk saya tetapi Anda bisa mencobanya juga