Hasil - 19 Juli 2014
King of the Hill saat ini adalah Mercenary oleh pengguna Fabigler ! Terus kirimkan entri dan jatuhkan dia dari singgasananya!
Klik di sini untuk melihat Papan Skor.
Program yang diajukan pada atau sebelum 19 Juli 2014 dimasukkan. Semua pengiriman lainnya akan dimasukkan dalam uji coba mendatang. Hasil baru harus diposting sekitar 9 Agustus, sehingga memberi Anda banyak waktu.
Diilustrasikan oleh Chris Rainbolt, kakak saya dan lulusan baru dari Savannah College of Art and Design
pengantar
Para malaikat dan iblis bertempur dan, seperti biasa, menggunakan bumi sebagai medan pertempuran mereka. Manusia terjebak di tengah dan dipaksa memihak. Kekuatan netral yang tidak dikenal memberi penghargaan kepada mereka yang secara konsisten berjuang untuk pihak yang kalah.
Permainan
Setiap percobaan, Anda akan dipasangkan secara acak dan kemudian dikocok dengan antara 20 dan 30 pengiriman lainnya. Setiap percobaan akan terdiri dari 1000 putaran. Setiap putaran, Anda akan melewati input dan diharapkan menghasilkan output. Output Anda akan direkam dan dinilai. Proses ini akan diulang 1000 kali.
Memasukkan
Anda akan menerima argumen tunggal yang mewakili suara masa lalu masing-masing pemain. Putaran dibatasi oleh koma. A 0
mewakili pemain yang memihak Evil pada ronde itu. A 1
mewakili pemain yang memihak Good. Dalam suatu percobaan, para pemain akan selalu berada dalam urutan yang sama. Pilihan Anda sendiri akan dimasukkan, tetapi tidak diidentifikasi secara eksplisit. Sebagai contoh:
101.100.100
Dalam contoh ini, tiga putaran telah selesai dan tiga pemain bersaing. Pemain satu selalu memihak Baik. Pemain dua selalu memihak Evil. Pemain tiga bertukar dari Baik di ronde 1 ke Jahat di ronde 2 dan 3. Salah satu pemain itu adalah Anda.
Keluaran
Pengajuan Java
- Kembalikan string
good
jika Anda ingin berpihak pada Good. - Kembalikan string
evil
jika Anda ingin memihak Jahat.
Kiriman Non-Jawa
- Keluarkan string
good
ke stdout jika Anda ingin berpihak pada Good. - Keluarkan string
evil
ke stdout jika Anda ingin memihak Jahat.
Jika program Anda menghasilkan atau mengembalikan apa pun, melempar pengecualian, tidak mengkompilasi, atau membutuhkan waktu lebih dari satu detik untuk menghasilkan apa pun pada mesin yang tepat ini , maka itu akan didiskualifikasi.
Mencetak gol
Skor akan diposting dalam spreadsheet Google docs untuk mudah dilihat segera setelah saya dapat mengkompilasi semua entri saat ini. Jangan khawatir - saya akan terus menjalankan uji coba selama kalian terus mengirimkan program!
- Anda menerima 3 poin untuk berpihak pada mayoritas selama putaran.
- Anda menerima n - 1 poin untuk berpihak pada minoritas selama putaran, di mana n adalah jumlah kali berturut-turut Anda memihak minoritas.
Skor Anda akan menjadi median dari 5 uji coba. Setiap percobaan terdiri dari 1000 putaran.
Kiriman
Kiriman Non-Jawa
Anda harus mengirimkan judul unik, program, dan string baris perintah Windows yang akan menjalankan program Anda. Ingatlah bahwa argumen dapat ditambahkan ke string itu. Sebagai contoh:
python Angel.py
- Perhatikan bahwa yang ini tidak memiliki argumen. Ini bulat satu! Bersiaplah untuk ini.
python Angel.py 11011,00101,11101,11111,00001,11001,11001
Pengajuan Java
Anda harus mengirimkan judul unik dan kelas Java yang memperluas kelas Manusia abstrak yang ditulis di bawah ini.
public abstract class Human {
public abstract String takeSides(String history) throws Exception;
}
Pengujian
Jika Anda ingin menguji kiriman Anda sendiri, ikuti instruksi di sini .
catatan tambahan
Anda dapat mengirimkan banyak pengiriman berbeda seperti yang Anda inginkan. Kiriman yang tampaknya berkolusi akan didiskualifikasi. Penulis tantangan ini akan menjadi satu-satunya hakim dalam hal ini.
Sebuah instance baru dari program atau kelas Java Anda akan dibuat setiap kali dipanggil. Anda dapat menyimpan informasi dengan menulis ke file. Anda tidak boleh mengubah struktur atau perilaku apa pun kecuali kelas Anda sendiri.
Pemain akan dikocok sebelum sidang dimulai. Demon dan Angel akan berpartisipasi dalam setiap percobaan. Jika jumlah pemainnya genap, Petyr Baelish juga akan bergabung. Demon fights for Evil, Angel for Good, dan Petyr Baelish memilih sisi pseudorandom.
sumber
Jawaban:
Mercenary
Selalu memihak orang yang membayar paling banyak uang putaran terakhir.
Memperhatikan bahwa orang baik berpenghasilan lebih banyak secara statistik.
sumber
Hipster, Ruby
Cukup dengan minoritas putaran terakhir, hanya karena segala sesuatu yang lain adalah arus utama.
Jalankan seperti
sumber
Petyr Baelish
Anda tidak pernah tahu sisi siapa Petyr Baelish berada.
Entri ini hanya akan dimasukkan jika jumlah pemainnya genap. Ini memastikan bahwa akan selalu ada mayoritas.
sumber
C ++, The Meta Scientist
Yang satu ini pada dasarnya sama dengan The Scientist, tetapi tidak beroperasi pada putaran secara keseluruhan tetapi pada pemain individu. Ia mencoba untuk memetakan gelombang (atau fungsi konstan) untuk masing-masing pemain secara terpisah dan memprediksi gerakan mereka di babak berikutnya. Dari prediksi putaran yang dihasilkan, The Meta Scientist memilih pihak mana saja yang tampaknya memiliki mayoritas.
Jika Anda ingin mengaktifkan pernyataan debug, ubah baris bacaan
#if 0
menjadi#if 1
.Kompilasi dengan
g++ -O3 -std=c++0x -o MetaScientist MetaScientist.cpp
(Anda tidak perlu peringatan, jadi tidak ada-Wall
) dan jalankan denganMetaScientist.exe
(mungkin termasuk argumen tentu saja). Jika Anda bertanya dengan sangat baik, saya dapat memberikan Anda executable Windows.EDIT: Rupanya, versi sebelumnya kehabisan waktu sekitar 600 putaran ke dalam permainan. Ini seharusnya tidak melakukan itu. Konsumsi waktu dikendalikan oleh
#define WINDOW (...)
garis, lebih banyak lebih lambat tetapi terlihat lebih jauh ke belakang.sumber
malaikat
Pemain paling murni dari semuanya.
Program
Perintah
sumber
Artemis Fowl
Dalam Buku 7, Kompleks Atlantis , Artemis Fowl mengidap penyakit psikologis (disebut kompleks Atlantis) yang memaksanya melakukan segala sesuatu dalam kelipatan 5 (berbicara, bertindak, dll). Ketika dia tidak bisa melakukannya dalam kelipatan 5, dia panik. Pada dasarnya saya melakukan itu: lihat apakah baik atau jahat (bias disengaja) dibagi dengan 5, jika tidak ada, maka saya panik & melihat mana yang lebih besar & menjalankannya atau panik lebih jauh & memilih secara acak.
sumber
break;
diswitch
.Disparnumerophobic
Angka ganjil itu menakutkan.
sumber
Linus, Ruby
Berusaha mengacaukan analis dengan selalu melanggar pola .
Simpan sebagai
linus.rb
dan jalankanruby linus.rb
sumber
BackPacker
Menentukan pemain yang telah memilih minoritas yang paling cocok dan memilih suara terakhirnya.
CrowdFollower
Menentukan pemain yang telah memilih mayoritas yang paling cocok dan memilih suara terakhirnya.
sumber
goWithMajority = true
dan satu di manafalse
. Apakah itu oke, atau apakah saya perlu menambahkan BackPacker kedua untuk ini?Peramal
Ini masih dalam proses. Saya belum mengujinya. Saya hanya ingin melihat apakah OP berpikir itu melanggar aturan atau tidak.
Idenya adalah untuk mensimulasikan putaran selanjutnya dengan mengeksekusi semua peserta lain beberapa kali untuk mendapatkan probabilitas hasil dan bertindak sesuai.
sumber
C ++, Ilmuwan
Yang satu ini mencoba, dengan sejarah apa yang dipilih mayoritas per putaran
wave
(majority()
memberikan pilihan mayoritas pada putaran), cocok dengan gelombang ke data, panjang gelombang2*period
dan fasephase
. Jadi, diberikan0,1,1,1,0,1,0,1,1,1,0,0,0,1,0
itu memilihperiod=3, phase=5
(maxat=={3,5}
): nilainya menjadi9 3 11 5 5 3 5 7 9 7 7 7 7 7 7
. Itu melingkupi semua periode yang mungkin dan jika, untuk periode itu, skor lebih tinggi daripada maksimum saat ini, itu menyimpan{period,phase}
yang terjadi.Itu kemudian mengekstrapolasi gelombang yang ditemukan ke babak berikutnya dan mengambil mayoritas yang diprediksi.
Kompilasi dengan
g++ -O3 -std=c++0x -o Scientist Scientist.cpp
(Anda tidak perlu peringatan, jadi tidak ada-Wall
) dan jalankan denganScientist.exe
(mungkin termasuk argumen tentu saja). Jika Anda bertanya dengan sangat baik, saya dapat memberikan Anda executable Windows.Oh, dan jangan berani mengacaukan format input. Itu akan melakukan hal-hal aneh sebaliknya.
EDIT: Rupanya, versi sebelumnya kehabisan waktu sekitar 600 putaran ke dalam permainan. Ini seharusnya tidak melakukan itu. Konsumsi waktu dikendalikan oleh
#define WINDOW (...)
garis, lebih banyak lebih lambat tetapi terlihat lebih jauh ke belakang.sumber
Pelari Kode
Jadi, untuk membuat hal-hal menarik, saya membuat skrip untuk secara otomatis mengunduh kode dari setiap jawaban yang diposting, kompilasi jika perlu, dan kemudian jalankan semua solusi sesuai dengan aturan. Dengan cara ini, orang dapat memeriksa bagaimana kinerja mereka. Simpan saja skrip ini ke run_all.py (memerlukan BeautifulSoup) lalu:
Beberapa hal:
def submission_type(lang)
.CPPSubmission
). Jenis bahasa diambil dari tag kode meta< !-- language: lang-java -- >
, jadi pastikan untuk menambahkannya jika Anda ingin kode Anda dijalankan (Hapus spasi tambahan sebelum dan sesudah <>). UPDATE : Sekarang ada beberapa kesimpulan yang sangat mendasar untuk mencoba dan mendeteksi bahasa jika tidak didefinisikan.blacklist.text
dan akan dihapus dari uji coba selanjutnya secara otomatis. Jika Anda memperbaiki kode Anda, hapus saja entri Anda dari daftar hitam dan jalankan kembaliget
,Bahasa yang didukung saat ini:
Tanpa basa-basi:
sumber
The Beautiful Mind, Ruby
Membuat keputusan berdasarkan pola signifikansi yang dipertanyakan dalam representasi bit babak terakhir
Jalankan seperti
sumber
Piustitious, Lua
Program takhayul yang mempercayai Signs and Wonders.
jalankan dengan:
diikuti oleh input.
sumber
The Winchesters
Sam dan Dean baik (sebagian besar waktu).
sumber
9:1
rasio yang tepat? Mungkin kita harus melakukan penambangan data dan mendapatkan rasio yang lebih tepat?9:1
sepertinya tidak masalah bagi saya;)Ahli statistik
sumber
Math.ceil(Math.random()-Math.random())
Anda juga bisa melakukannyaMath.round(Math.random())
.R, bot yang agak Bayesian
Gunakan tabel frekuensi untuk setiap pengguna sebagai probabilitas sebelumnya dari output pengguna lain.
Dipanggil menggunakan
Rscript BayesianBot.R
diikuti oleh input.Sunting : Hanya untuk memperjelas apa yang dilakukan ini, berikut adalah langkah demi langkah dengan contoh input:
Kemudian garis yang dimulai dengan
result<-
, untuk setiap pemain, memilih secara acak 0 atau 1 menggunakan tabel terakhir ini sebagai bobot (yaitu untuk pemain 1 probabilitas memilih 0 adalah 2/7, dari memilih 1 5/7, dll). Itu mengambil satu hasil untuk setiap pemain / kolom dan akhirnya mengembalikan nomor yang berakhir menjadi yang paling umum.sumber
Orang Swiss
Selalu mempertahankan netralitas. Ditakdirkan untuk tidak pernah menang.
sumber
HAL 9000
Sunting: mungkin ini lebih cocok untuk HAL 9000, tapi hati-hati! Itu sangat jahat. Saya sarankan
cd
untuk mengosongkan direktori sebelum menjalankannya.Doa yang tidak begitu jelas:
Dalam M $
Dalam * nix
sumber
Will of the Mayoritas
Simpan sebagai
WotM.py
, jalankan sebagaipython3 WotM.py
diikuti oleh input.Program sederhana, hanya untuk melihat bagaimana itu akan dilakukan. Cocok dengan apa pun yang dikatakan mayoritas terakhir kali, atau acak.
sumber
Alan Shearer
Ulangi apa pun yang dikatakan orang yang duduk di sebelahnya. Jika orang tersebut ternyata salah, ia beralih ke orang berikutnya dan mengulangi apa yang mereka katakan.
sumber
lastRound
sebelum Anda mendeklarasikannya. Anda juga menambahkan tanda kurung ke semua AndaString.length
tetapi itu bukan fungsi. Bisakah Anda mendapatkan kiriman Anda ke titik di mana ia akan dikompilasi?lastRound.length
masih diakses (di if pertama) sebelumlastRound
dideklarasikan (in if's else). Coba kompilasi (dan mungkin jalankan) kode Anda sebelum mengirimkannya di sini.Nanti adalah Jahat, JavaScript ( node.js )
Mengukur jumlah waktu antara eksekusi. Jika perbedaan waktu lebih besar dari waktu terakhir, itu pasti jahat. Kalau tidak, bagus.
Jalankan dengan:
node laterisevil.js
sumber
Pencari Pola, Python
Mencari pola berulang, dan jika tidak dapat menemukannya, cukup gunakan mayoritas.
jalankan bersama
sumber
Turncoat
Turncoat percaya bahwa karena kombatan lain sejauh ini, mayoritas akan bergantian setelah setiap putaran antara yang baik dan yang jahat lebih sering daripada tetap di sisi yang sama. Dengan demikian ia memulai babak pertama dengan berpihak sewenang-wenang dengan yang baik, kemudian bergantian setiap putaran dalam upaya untuk tetap pada tim yang menang atau kalah lebih sering daripada tidak.
Setelah menulis ini, saya menyadari bahwa karena entri yang didasarkan pada analisis statistik, momentum akan menyebabkan mayoritas untuk beralih sisi lebih sedikit karena lebih banyak putaran telah selesai. Karena itu, Malas Turncoat.
The Malas Turncoat
Lazy Turncoat dimulai seperti Turncoat, tetapi ketika putaran berlalu, ia menjadi semakin malas untuk beralih ke sisi lain.
sumber
Penulis biografi, Ruby
Upaya saya pada entri yang hampir cerdas (yang benar-benar cerdas akan membutuhkan pengujian terhadap bidang). Ditulis dalam Ruby, jadi ada kemungkinan ini akan terlalu lambat, tetapi pada komputer saya, ini membutuhkan 0,11 detik untuk menghitung putaran terakhir ketika ada 40 pemain acak, jadi saya harap ini akan bekerja dengan cukup baik.
simpan sebagai
biographer.rb
, jalankan sebagairuby biographer.rb
Idenya adalah bahwa untuk setiap pemain, itu memperkirakan peluang mereka untuk memilih "baik" dengan melihat kedua pilihan mereka sendiri untuk sepuluh putaran terakhir, dan hasil keseluruhan, dan menemukan contoh di masa lalu di mana keadaan yang sama (suara mereka + keseluruhan hasil) terjadi. Ini mengambil tampilan terpanjang di belakang panjang, hingga 10 putaran, sehingga ada preseden, dan menggunakannya untuk membuat frekuensi (disesuaikan sesuai dengan Hukum Suksesi Laplace, sehingga kami tidak pernah 100% yakin tentang siapa pun).
Kemudian menjalankan beberapa simulasi dan melihat seberapa sering Good menang. Jika simulasi ternyata sebagian besar dengan cara yang sama, maka itu mungkin akan melakukan prediksi dengan baik secara umum sehingga mengambil prediksi minoritas. Jika tidak percaya diri, ia memilih mayoritas yang diprediksi.
sumber
Lubang di pintu
Yudas adalah orang yang sangat baik. Sangat disayangkan dia akan mengkhianati orang baik untuk beberapa sen.
sumber
,
darihistory
, bahkan lebih sehingga Rusher akan berpisah permainan dalam kelompok.The Fallacious Gambler (Python)
Jika satu pihak telah memenangkan mayoritas beberapa kali berturut-turut, penjudi menyadari bahwa pihak lain lebih mungkin menjadi mayoritas putaran berikutnya (kan?) Dan ini mempengaruhi suaranya. Dia mengincar minoritas, karena jika dia berhasil menjadi minoritas begitu dia akan berhasil di sana beberapa kali (kan?) Dan mendapatkan banyak poin.
Pemakaian
Untuk babak pertama:
dan sesudahnya:
sumber
Otomat Seluler
Ini menggunakan aturan konvensional untuk Permainan Kehidupan Conway untuk memilih pihak. Pertama, kisi 2D dibuat dari suara sebelumnya. Kemudian, "dunia" melangkah maju satu tahap, dan jumlah total sel hidup yang tersisa dihitung. Jika jumlah ini lebih besar dari setengah jumlah total sel, "baik" dipilih. Kalau tidak, "kejahatan" dipilih.
Maafkan kesalahan apa pun, ini hancur selama jam makan siang saya. ;)
sumber
Profesor Ridge
Saya harap menggunakan perpustakaan diperbolehkan, jangan merasa seperti melakukan ini tanpa satu =)
Ide dasarnya adalah untuk melatih classifier regresi ridge untuk setiap peserta pada putaran terakhir, menggunakan 30 hasil sebelum setiap putaran sebagai fitur. Awalnya termasuk babak terakhir hasil untuk semua pemain untuk memprediksi hasil untuk setiap pemain juga, tapi itu memotongnya agak dekat untuk waktu ketika jumlah peserta semakin besar (katakanlah, 50 atau lebih).
Untuk Mengkompilasi
Simpan kode sumber dalam file yang disebut
ridge_professor.cc
, unduh perpustakaan Eigen dan unzip folder Eigen yang ditemukan di dalam folder yang sama dengan file sumber. Kompilasi dengang++ -I. -O3 -ffast-math -o ridge_professor ridge_professor.cc
.Untuk berlari
panggil ridge_professor.exe dan berikan argumen yang diperlukan.
Pertanyaan
Karena saya belum bisa berkomentar di mana saja, saya akan bertanya di sini: bukankah ukuran argumen pada windows membuatnya tidak mungkin untuk memanggil binari yang dihasilkan dengan seluruh sejarah pada beberapa ratus putaran? Saya pikir Anda tidak dapat memiliki lebih dari ~ 9000 karakter dalam argumen ...
sumber
Crowley
Karena Winchesters jauh lebih menarik tanpa orang ini. Dia jelas memihak kejahatan ... kecuali jika dibutuhkan untuk mengurus kejahatan yang lebih besar.
Saya melihat dua putaran terakhir (0 koma sejauh ini dan 1 koma sejauh ini) dan jika keduanya membiarkan kejahatan menang, saya memilih yang baik. Kalau tidak, saya memilih yang jahat.
sumber