pengantar
Anda terdampar di pulau terpencil dengan beberapa pelayan dan sedang berburu harta karun. Semakin lama pencarian, semakin banyak harta yang ditemukan. Semakin sedikit orang yang mencari, semakin banyak setiap orang menemukan.
Karena persediaan terbatas, pemimpin telah memutuskan bahwa beberapa orang, hingga seperempat dari kelompok, harus dibiarkan mati setiap malam. Dia telah memutuskan untuk tidak memberi tahu siapa pun dengan pasti berapa banyak orang yang akan mati pada hari tertentu sebelumnya.
Anda mengendalikan sekelompok kecil 5 orang, yang akan keluar dari kamp untuk menemukan harta karun untuk Anda.
Objektif
Tujuan dari kompetisi ini adalah untuk mengumpulkan harta sebanyak mungkin. Setiap belokan yang pelayan Anda tidak berusaha kembali ke kemah, mereka akan menemukan sejumlah harta karun. Hamba Anda dapat kembali ke kemah pada waktu yang berbeda.
Setiap belokan yang ditinggalkan seorang pekerja untuk mencari harta karun, pekerja menemukan 1+R
potongan-potongan harta, di mana R
jumlah pekerja (dari semua bot) sudah kembali ke kamp. Bot mati tidak memperhitungkan perhitungan ini.
Di awal setiap hari, nomor acak ( n
) dari 2
ke max(3, floor(num_live_players/4))
akan dipilih. (Untuk 10 pemain pada hari 1, ini adalah 2
untuk max(3,50/4)=12
. Untuk 20 pemain pada hari 1, ini adalah 2
untuk max(3,100/4)=25
.) Angka ini mewakili jumlah pemain yang akan dibiarkan mati untuk hari itu, dan tidak akan diberikan ke program Anda .
Jika seorang pelayan adalah salah satu dari orang terakhir yang n
kembali, dia akan mati dan tidak dapat memindahkan harta yang dia temukan kepada milikmu. Selain itu, pelayan tidak akan dapat berpartisipasi dalam perburuan harta karun selama sisa petualangan.
Skor akhir Anda adalah jumlah rata-rata harta yang Anda peroleh per petualangan (run of the controller).
Jika lebih banyak orang berusaha untuk kembali ke kemah pada giliran yang sama daripada yang ada slot terbuka, angka acak akan menentukan siapa yang masuk dan siapa yang mati.
Sehari di pulau ini dari matahari terbit hingga terbenam berlangsung selama 30 putaran. Karena ada banyak hewan berbahaya di malam hari, kegagalan untuk kembali saat matahari terbenam berarti Anda tidak akan diizinkan masuk ke kamp.
Input output
Program Anda harus dijalankan untuk keseluruhan simulasi.
Di awal simulasi, INDEX I
akan dimasukkan, di mana I
indeks bot Anda (indeks ini dihitung dari 1 ke atas).
Pada awal setiap hari, START_DAY D/N
akan dimasukkan ke program Anda, di mana D
nomor hari (mulai dari 1
), dan N
sama dengan max(3, floor(num_live_players/4))
, yang merupakan jumlah maksimum orang yang mungkin mati pada hari tertentu.
Pada awal setiap belokan, START_TURN T
akan dimasukkan ke program Anda, di mana T
nomor belokan (mulai dari 1
).
Setelah program Anda menerima ini, itu harus merespons dengan daftar gerakan pelayan Anda, masing-masing dipisahkan oleh koma.
Bergerak yang valid adalah:
R
: Cobalah untuk kembali ke kemah.S
: Tetap mencari harta karun.N
: Hamba sudah mati atau di kamp.
Memasuki langkah yang tidak valid akan diartikan seolah- S
olah bot itu hidup dan tidak di kamp, dan N
sebaliknya.
Pada akhir setiap belokan, sebuah string akan diteruskan ke program Anda:
END_TURN [Turn #] [Bot 1 Moves] [Bot 2 Moves] ...
di mana setiap gerakan pelayan bot dipisahkan oleh koma.
Bergerak ini akan menjadi salah satu dari yang berikut:
R
: Berhasil kembali ke kemah itu.r
: Gagal kembali ke kemah yang berbelok.S
: Masih mencari harta karun.D
: Meninggal pada giliran sebelumnya.N
: Sudah kembali di kemah.
Bot dan pelayan tetap dalam urutan yang sama di seluruh simulasi.
Sebagai contoh:
INDEX 2
....
END_TURN 8 N,N,N,N,N r,r,r,r,D D,D,D,N,R S,D,D,N,D
Di sini, Anda adalah bot kedua ( r,r,r,r,r
), yang mencoba mengembalikan keempat pelayan yang masih hidup (dan sayangnya gagal pada keempatnya). Para pelayan Bot 1 semuanya kembali ke kemah. Bot 3 memiliki tiga pelayan yang mati, satu lagi di kamp, dan seorang pelayan kelima yang berhasil kembali. Bot 4 memiliki satu pelayan yang tetap (dan akan mati, karena ini adalah pergantian terakhir dalam sehari), satu pelayan di kemah, dan tiga pelayan yang mati.
Setelah masing-masing string ini, kecuali string yang menandakan akhir hari juga telah dikeluarkan (lihat di bawah), program Anda adalah untuk menampilkan gerakan pelayan Anda berikutnya, dipisahkan dengan koma. Semua pelayan harus diperhitungkan (dengan N
jika sudah di kamp, dan D
jika sudah mati). Perpindahan yang tidak valid akan diperlakukan seolah- S
olah pelayan belum berada di kemah / mati. Contoh:
N,N,S,S,R
yang berarti:
Servant # | Action
1 | Do nothing.
2 | Do nothing.
3 | Stay put (keep looking for treasure).
4 | Stay put (keep looking for treasure).
5 | Try to return to camp.
Pada akhir hari, string berikut harus dilewatkan setelah END
string belokan terakhir , memberi tahu semua orang tentang siapa yang hidup:
END_DAY [Day #] [Bot 1 Status] [Bot 2 Status]
di mana statusnya adalah daftar yang dipisahkan koma baik A
(hidup) atau D
(mati). Hari berikutnya dimulai segera setelahnya.
Simulasi berakhir ketika ada kurang dari 6 pelayan hidup. Program Anda akan menerima input berikut di akhir simulasi:
EXIT
Aturan / Detail
- Hanya secara bergantian di mana tindakan
S
Anda akan Anda menemukan harta karun. - Jumlah simulasi yang dijalankan: 1000 kali
- Program Anda tidak boleh lebih dari 1 detik untuk menentukan gerakan.
- Program Anda tidak boleh keluar lebih awal; itu akan dimulai tepat sekali.
- Pastikan buffer output (jika ada) memerah setelah setiap output.
- File dapat ditulis ke dalam folder bot Anda (
./players/BotName/
). Nama bot Anda adalah apa pun yang Anda beri nama bot Anda, dengan semua karakter non-alfanumerik dihapus dan ditulis dalam CamelCase. Entri dapat menyimpan data di antara run dari controller, karena run dilakukan secara berurutan. - Program Anda harus keluar setelah menerima
EXIT
. - Program yang gagal menyusun atau melempar kesalahan atau menghasilkan teks yang tidak valid (tidak dalam format 5 karakter yang dipisahkan oleh koma) dapat dikecualikan dari kompetisi. Baris baru harus mengikuti setiap output.
- Pengontrol dapat ditemukan di GitHub .
Harap sertakan nama bot, bahasa + versi, kode, dan perintah untuk dikompilasi (jika ada) dan jalankan bot Anda.
Contoh
Teks yang dihasilkan oleh program diawali di sini dengan a >
. Program Anda seharusnya tidak menampilkan karakter ini.
INDEX 2
START_DAY 1/3
START_TURN 1
>S,S,S,S,S
END_TURN 1 S,R,S,S,S S,S,S,S,S
START_TURN 2
>S,S,S,S,S
END_TURN 2 S,N,S,R,S S,S,S,S,S
START_TURN 3
>R,R,S,S,S
END_TURN 3 R,N,R,N,R R,R,S,S,S
START_TURN 4
>N,N,S,S,S
END_TURN 4 N,N,N,N,N N,N,S,S,S
START_TURN 5
>N,N,R,R,R
END_TURN 5 N,N,N,N,N N,N,r,r,R
END_DAY 1 A,A,A,A,A A,A,D,D,A
START_DAY 2/3
START_TURN 1
>S,S,N,S,N
END_TURN 1 R,R,R,R,R S,S,D,D,N
END_DAY 2 A,A,A,A,A D,D,D,D,D
EXIT
Skor untuk contoh di atas adalah:
Bot# Day 1 Day 2 Total
1 10 0 10
S1 1+2 0 3
S2 0 0 0
S3 1+2 0 3
S4 1 0 1
S5 1+2 0 3
2 20 0 20
S1 1+2 0 3
S2 1+2 0 3
S3 0 0 0
S4 0 0 0
S5 1+2+3+8 0 14
Karena itu pemenangnya adalah pemain, bot 2. Perhatikan bahwa pemenang tidak harus bertahan sampai akhir mutlak. (Juga perhatikan bahwa pemain bisa tetap sampai 30 pada hari 1, karena kamp tidak akan penuh sampai pemain mengirim satu bot lagi).
Skor
Bot Score
Bob 2939.422
Statisticians 2905.833
Morning Birds 1652.325
Evolved 1578.285
Slow Returners 1224.318
Wandering Fools 1065.908
Randomizers 735.313
Drunkards 0
Plague 0
Log tersedia di GitHub . Hasil per setiap percobaan tersedia di google spreadsheet ini .