Pemberitahuan: Ini king-of-the-bukit tantangan telah selesai. Ini berarti bahwa tanda centang hijau, yang telah diberikan kepada C5H8NNaO4 untuk entri mereka, Pengamat tidak akan dipindahkan ke jawaban baru apa pun.
Anda mungkin masih mengirimkan entri baru, tetapi mungkin ada penundaan dalam turnamen baru berjalan karena saya tidak aktif memeriksa entri baru lagi.
pengantar
Dalam tantangan ini, Anda bermain gim arcade berjudul The Ultimate Samurai Showdown Edisi Khusus Ultimate Version 2.0 X Alpha Omega Turbo (atau hanya Ultimate Samurai Showdown ). Lawanmu? Tidak lain adalah anggota lain dari Programming Puzzles & Code Golf!
Seperti yang mungkin Anda harapkan dari game arcade PPCG, Anda tidak bermain Ultimate Samurai Showdown secara langsung, tetapi menulis program yang akan memainkan game untuk Anda. Program ini akan berjuang melawan program yang diajukan oleh pengguna lain dalam duel satu lawan satu. Program yang paling terampil akan dinobatkan sebagai Samurai Tertinggi PPCG, dan diberikan tanda centang hijau legenda.
Deskripsi Game
Bagian ini menjelaskan mekanisme di balik game.
Kondisi Kemenangan
Sebuah pertandingan terdiri dari dua samurai yang menghadapi off melawan satu sama lain. Setiap samurai memulai setiap pertandingan dengan 20 poin hit dan 1 kehormatan . Seorang samurai menang jika lawannya mati dan dia masih hidup. Ada dua metode yang digunakan seorang samurai untuk mati:
- Jika poin hit samurai diturunkan ke 0, dia akan mati.
- Jika seorang samurai membawa kehormatan mereka sendiri di bawah 0, ia akan dihajar oleh para dewa karena bertindak tidak terhormat dalam duel.
Dipukul oleh para dewa memiliki prioritas lebih tinggi daripada memiliki poin hit dikurangi menjadi 0, jadi dalam situasi di mana satu samurai berada pada 0 poin kesehatan dan yang lainnya pada kehormatan -1, samurai dengan 0 poin kesehatan akan menang. Dalam situasi di mana kedua samurai berada di kehormatan -1, mereka berdua dikejutkan oleh para dewa dan permainan itu seri.
Pertandingan terdiri dari hingga 500 putaran . Jika semua 500 putaran berlalu dan pertandingan belum diputuskan (tidak ada samurai yang mati), para dewa menjadi bosan dan menjatuhkan kedua samurai itu, sehingga menghasilkan undian.
Tindakan
Pada setiap belokan, samurai harus melakukan persis salah satu tindakan berikut:
W
Samurai harus menunggu dan tidak melakukan tindakan apa pun. Ini membuatnya terlihat keren tetapi tidak membantunya mengalahkan lawannya. Ini juga merupakan tindakan default.
B
Samurai akan tunduk pada lawannya dengan cara yang terhormat. Ini menyenangkan para dewa dan karenanya sang samurai akan mendapatkan 1 Kehormatan. Kehormatan sangat penting untuk kesuksesan samurai Anda karena Kehormatan pada dasarnya adalah "sumber daya" untuk permainan ini - semua bergerak terpisah B
dan W
dapat mengurangi Kehormatan. Juga, jika seorang samurai memperoleh 7 Honor atau lebih, ia diberikan penggunaan Pedang para Dewa . Implikasi dari hal ini dijelaskan di bawah ini.
Namun, membungkuk pada lawan membuat Anda terbuka jika lawan Anda memutuskan untuk menyerang Anda dengan pedangnya, jadi berhati-hatilah saat Anda memilih untuk membungkuk.
G
Samurai harus memasuki posisi defensif dan menjaga terhadap serangan pedang. Langkah ini akan berhasil memblokir semua serangan pedang, bahkan yang dilakukan dengan Pedang para Dewa .
Namun, para dewa tidak menyukai samurai yang terlalu defensif, jadi langkah ini akan memakan 1 Kehormatan jika tindakan samurai di belokan yang sebelumnya juga dijaga. Tidak mengkonsumsi Honor sebaliknya.
I
Samurai akan berusaha menyerang lawannya dengan menarik pedangnya dengan cepat dari sarungnya. Jika samurai memiliki 7 Honor atau lebih, ia akan menggunakan Pedang para Dewa sebagai ganti pedang biasa. Langkah ini menghabiskan 1 Honor.
Penarikan cepat adalah pemogokan cepat yang akan mengalahkan serangan overhead yang lebih lambat, namun, itu akan kalah melawan parries. Jika serangan berhasil terhubung, itu akan melakukan 1 kerusakan, atau 2 kerusakan dengan Pedang para Dewa .
P
Samurai harus berusaha menangkis setiap serangan yang masuk, kemudian meluncurkan serangannya sendiri. Jika samurai memiliki 7 Honor atau lebih, ia akan menggunakan Pedang para Dewa sebagai ganti pedang biasa. Langkah ini menghabiskan 1 Honor.
Parry adalah manuver yang baik melawan serangan cepat, tetapi akan dikalahkan oleh serangan overhead yang lebih lambat. Jika serangan berhasil terhubung, itu akan melakukan 1 kerusakan, atau 2 kerusakan dengan Pedang para Dewa .
O
Samurai akan berusaha untuk menyerang lawannya dengan serangan overhead yang lebih lambat. Jika samurai memiliki 7 Honor atau lebih, dia akan menggunakan Pedang Dewa bukan pedang biasa. Langkah ini memakan 1 kehormatan.
Pemogokan overhead bisa mengalahkan partai, tetapi akan kalah dari serangan cepat. Jika serangan berhasil terhubung, itu akan melakukan 1 kerusakan, atau 2 kerusakan dengan Pedang para Dewa .
Pedang para Dewa
Seorang samurai dengan Kehormatan yaitu 7 atau lebih memperoleh kemampuan untuk menggunakan Pedang para Dewa . Jika Yang Mulia berkurang di bawah 7, kemampuan untuk menggunakan Pedang Para Dewa akan dicabut darinya. The Sword of the Gods memberikan 2 damage, bukan 1.
The Sword of the Gods tidak memungkinkan pemogokan untuk mengalahkan serangan pedang yang biasanya tidak akan mengalahkan. Sebagai contoh, Pedang para Dewa menangkis masih akan kalah dari serangan overhead biasa, dan Pedang Dewa cepat tidak akan mengalahkan undian biasa. Memang, yang disebut Pedang Dewa sebenarnya tidak terlalu kuat - mungkin itu adalah lelucon kosmik yang dimainkan oleh para dewa ...
Tabel Interaksi
Cuplikan Stack di bawah ini berisi tabel yang secara eksplisit mencantumkan semua hasil yang mungkin dari kombinasi tindakan yang berbeda yang dapat dilakukan oleh dua samurai. Untuk melihatnya, klik "Tampilkan Cuplikan Kode", lalu klik "Jalankan Cuplikan Kode".
Komunikasi Program
Untuk memfasilitasi jalannya turnamen, sebuah program pengendali ditulis untuk memainkan peran "para dewa" - program itu menyimpan catatan kehormatan dan kesehatan serta menghajar para samurai. Bagian ini menjelaskan bagaimana program Anda akan berkomunikasi dengan program pengontrol.
Deskripsi Input
Program pengontrol akan memanggil program Anda dari baris perintah seperti ini:
<command> <history> <enemy_history> <your_health> <enemy_health> <your_honour> <enemy_honour>
dimana:
<command>
adalah perintah yang diperlukan untuk menjalankan program Anda. Misalnya, jika program Anda ada dalam filesuper_sentai.pl
, perintahnya mungkinperl super_sentai.pl
.<history>
adalah riwayat gerakan yang Anda buat. Misalnya,WWBP
berarti Anda menunggu dua kali, membungkuk sekali, dan menangkis satu kali.<enemy_history>
adalah sejarah gerakan yang dilakukan musuh Anda. Misalnya,BBBI
musuh Anda akan membungkuk tiga kali dan melakukan satu penarikan cepat.<your_health>
adalah kesehatan Anda saat ini.<enemy_health>
adalah kesehatan musuh saat ini.<your_honour>
adalah kehormatan Anda saat ini.<enemy_honour>
adalah kehormatan musuh saat ini.
Untuk belokan pertama, history
dan enemy_history
akan kosong, jadi program Anda hanya akan dipanggil dengan empat argumen terakhir seperti ini:
<command> <your_health> <enemy_health> <your_honour> <enemy_honour>
Bersiaplah untuk ini!
Pembaca yang cerdik mungkin memperhatikan bahwa empat argumen yang memberikan kehormatan dan kesehatan kedua samurai itu, sampai batas tertentu, berlebihan; karena ini adalah permainan informasi yang sempurna, kehormatan dan kesehatan samurai dapat ditentukan hanya dengan menggunakan sejarah.
Nilai-nilai ini disediakan untuk tujuan kenyamanan sehingga Anda tidak harus menguraikan argumen sejarah. Ini seharusnya terbukti bermanfaat untuk menerapkan strategi sederhana, seperti tidak menyerang ketika Yang Mulia 0.
Deskripsi Output
Untuk memilih tindakan, program anda harus output salah W
, B
, G
, I
, P
, atau O
untuk output standar, tergantung pada apa tindakan yang Anda ingin membuat. Jika program Anda tidak menghasilkan apa pun dalam 1000 ms, itu akan dihentikan dan program Anda akan diperlakukan seolah-olah itu dikeluarkan W
.
Jika program Anda menghasilkan lebih dari satu huruf, hanya huruf pertama yang akan dipertimbangkan - jadi keluaran Parry
akan sama dengan keluaran P
.
Jika output dari huruf pertama program Anda bukan salah satu dari opsi yang tercantum di atas, maka defaultnya adalah W
.
Format pengiriman
Kirim program sebagai jawaban untuk posting ini. Anda dapat mengirimkan beberapa program. Jika Anda mengirimkan beberapa program sederhana, saya sarankan mengirimkannya sebagai satu jawaban; jika Anda mengirimkan beberapa program kompleks, saya sarankan mengirimkannya sebagai jawaban terpisah. Setelah saya berhasil menambahkan program Anda ke turnamen, saya akan membuat komit ke repositori git dengan entri Anda (ditautkan di bawah).
Jika saya menemui masalah yang mencegah program Anda ditambahkan ke turnamen, saya akan meninggalkan komentar pada entri Anda yang menunjukkan masalah.
Harap sertakan yang berikut dalam kiriman Anda:
- Nama yang bisa dibaca manusia dari program Anda, untuk digunakan di papan skor. Spasi diperbolehkan di sini; koma dan karakter Unicode tidak.
- Bahasa program Anda ditulis. Harap menghindari menulis dalam bahasa yang aneh dan sulit diakses seperti TinyMUSH.
- Sinopsis singkat program Anda. Ini bisa berupa deskripsi tentang cara kerja program, atau hanya beberapa teks rasa tentang program Anda (jika Anda ingin semua bersifat rahasia), atau mungkin keduanya.
- Perintah yang diperlukan untuk menjalankan program Anda. Misalnya, jika Anda menulis kiriman Anda di Java disebut
example.java
, Anda akan memberikan instruksi kompilasijavac example.java
kemudian menjalankan instruksijava example
. - Kode sumber untuk program ini.
Untuk membantu dalam pengiriman, saya menyediakan template pengiriman yang dapat ditemukan di sini . Template membuat pengiriman terlihat lebih bagus. Saya sangat menyarankan untuk menggunakannya.
Saya juga memberikan dua entri contoh. Meskipun entri contoh akan berpartisipasi dalam round robin, tujuan utama mereka adalah untuk memperjelas format pengajuan dan input / output untuk turnamen, daripada menjadi pesaing serius untuk gelar Ultimate Samurai.
Struktur Turnamen
Bagian ini menjelaskan bagaimana turnamen antar peserta akan dijalankan.
Program Kontrol
Program kontrol ditulis dalam Python 2 dan dapat ditemukan di repositori Ultimate Samurai Showdown Github . Jika Anda ingin menjalankannya sendiri, petunjuk tentang cara menjalankannya termasuk dalam file README.md di tautan. Namun, hanya turnamen yang dijalankan di komputer saya yang resmi untuk menghindari perbedaan perangkat keras yang memengaruhi hasil turnamen.
Program kontrol akan dijalankan pada komputer laptop yang menjalankan Arch Linux. Ini memiliki prosesor Intel Core i7 dan 8GB RAM. Saya akan berusaha untuk membuat semua entri berjalan di komputer saya, tetapi saya akan sangat menghargainya jika Anda menghindari bahasa yang tidak dapat diakses secara bebas (karena tanpa biaya moneter).
Sistem penilaian
Sistem penilaian adalah round robin. Setiap program akan memainkan delapan pertandingan melawan setiap program lainnya. Kemenangan memberikan program 1 poin, kerugian tanpa poin, dan imbang 0,5 poin. Program dengan skor tertinggi memenangkan permainan. Jika ada undian, saya akan berduel dua program teratas satu sama lain untuk menentukan pemenang.
Jumlah kali setiap program akan memainkan satu sama lain program dapat dikurangi dari 8 jika ada jumlah pendatang yang sangat besar. Saya akan menambahkan catatan di sini jika ini terjadi.
Saya akan menjalankan round robin berkali-kali karena kiriman baru diposting, tetapi hanya round robin terbaru yang akan dihitung.
Diskualifikasi
Dimungkinkan untuk program Anda didiskualifikasi dari turnamen. Diskualifikasi dapat terjadi jika:
- Program Anda tidak mengkompilasi atau menjalankan;
- Program Anda adalah duplikat strategis dari program lain (yaitu, ia mengimplementasikan strategi yang sama persis dengan program lain);
- Program Anda mencoba menyabotase program lain dengan memodifikasi kode pengontrol, kode program lain, dll;
- Program Anda mencoba untuk mengeksploitasi bug dalam kode pengontrol. Alih-alih mengeksploitasi bug Anda malah harus membuka masalah di repositori git, buat komentar di sini, atau ping saya di chat.
Hasil Masa Lalu
Hasil terperinci dari semua turnamen tersedia di halaman wiki .
Turnamen terbaru selesai pada 2015-07-17 07:20. Berikut ini ringkasan hasilnya:
The Observer: 209.0
Coward: 203.0
Monk: 173.0
Elephant Warrior: 157.0
Iniqy: 157.0
Agent 38: 144.0
Ninja: 138.0
Meiyo Senshi: 138.0
Kakashi: 136.0
Yoshimitsu: 131.0
Hermurai: 121.0
Warrior Princess: 120.0
Gargoyle: 119.5
The Honourable: 119.0
Hebi: 118.5
Predictor: 116.0
Whack-a-mole: 107.0
The Fool: 106.0
The Prophet: 105.0
Copy-san: 97.0
YAGMCSE: 80.0
The Waiter: 66.0
Swordsman: 43.0
Spork Holder: 32.5
Blessed Samurai: 27.5
Attacker: 27.0
The Terminator: 17.0
Master Yi: 16.0