Papan Skor Terbaru @ 2014-08-02 12:00
| Pos # | Author | Name | Language | Score | Win | Draw | Loss | Avg. Dec. Time |
+-------+----------------------+-------------------------+------------+-------+-------+-------+-------+----------------+
| 1st | Emil | Pony | Python2 | 064 | 064 | 000 | 005 | 0026.87 ms |
| 2nd | Roy van Rijn | Gazzr | Java | 062 | 062 | 001 | 006 | 0067.30 ms |
| 2nd | Emil | Dienstag | Python2 | 062 | 062 | 001 | 006 | 0022.19 ms |
| 4th | ovenror | TobiasFuenke | Python2 | 061 | 061 | 001 | 007 | 0026.89 ms |
| 5th | PhiNotPi | BayesianBot | Perl | 060 | 060 | 000 | 009 | 0009.27 ms |
| 6th | Claudiu | SuperMarkov | Python2 | 058 | 058 | 001 | 010 | 0026.77 ms |
| 7th | histocrat | Alternator | Ruby | 057 | 057 | 001 | 011 | 0038.53 ms |
| 8th | histocrat | LeonardShelby | Ruby | 053 | 053 | 000 | 016 | 0038.55 ms |
| 9th | Stretch Maniac | SmarterBot | Java | 051 | 051 | 002 | 016 | 0070.02 ms |
| 9th | Martin Büttner | Markov | Ruby | 051 | 051 | 003 | 015 | 0038.45 ms |
| 11th | histocrat | BartBot | Ruby | 049 | 049 | 001 | 019 | 0038.54 ms |
| 11th | kaine | ExcitingishBot | Java | 049 | 049 | 001 | 019 | 0065.87 ms |
| 13th | Thaylon | UniformBot | Ruby | 047 | 047 | 001 | 021 | 0038.61 ms |
| 14th | Carlos Martinez | EasyGame | Java | 046 | 046 | 002 | 021 | 0066.44 ms |
| 15th | Stretch Maniac | SmartBot | Java | 045 | 045 | 001 | 023 | 0068.65 ms |
| 16th | Docopoper | RoboticOboeBotOboeTuner | Python2 | 044 | 044 | 000 | 025 | 0156.55 ms |
| 17th | Qwix | Analyst | Java | 043 | 043 | 001 | 025 | 0069.06 ms |
| 18th | histocrat | Analogizer | Ruby | 042 | 042 | 000 | 027 | 0038.58 ms |
| 18th | Thaylon | Naan | Ruby | 042 | 042 | 004 | 023 | 0038.48 ms |
| 20th | Thaylon | NitPicker | Ruby | 041 | 041 | 000 | 028 | 0046.21 ms |
| 20th | bitpwner | AlgorithmBot | Python2 | 041 | 041 | 001 | 027 | 0025.34 ms |
| 22nd | histocrat | WereVulcan | Ruby | 040 | 040 | 003 | 026 | 0038.41 ms |
| 22nd | Ourous | QQ | Cobra | 040 | 040 | 003 | 026 | 0089.33 ms |
| 24th | Stranjyr | RelaxedBot | Python2 | 039 | 039 | 001 | 029 | 0025.40 ms |
| 25th | JoshDM | SelfLoathingBot | Java | 038 | 038 | 001 | 030 | 0068.75 ms |
| 25th | Ourous | Q | Cobra | 038 | 038 | 001 | 030 | 0094.04 ms |
| 25th | Ourous | DejaQ | Cobra | 038 | 038 | 001 | 030 | 0078.31 ms |
| 28th | Luis Mars | Botzinga | Java | 037 | 037 | 002 | 030 | 0066.36 ms |
| 29th | kaine | BoringBot | Java | 035 | 035 | 000 | 034 | 0066.16 ms |
| 29th | Docopoper | OboeBeater | Python2 | 035 | 035 | 002 | 032 | 0021.92 ms |
| 29th | Thaylon | NaanViolence | Ruby | 035 | 035 | 003 | 031 | 0038.46 ms |
| 32nd | Martin Büttner | SlowLizard | Ruby | 034 | 034 | 004 | 031 | 0038.32 ms |
| 33rd | Kyle Kanos | ViolentBot | Python3 | 033 | 033 | 001 | 035 | 0032.42 ms |
| 34th | HuddleWolf | HuddleWolfTheConqueror | .NET | 032 | 032 | 001 | 036 | 0029.86 ms |
| 34th | Milo | DogeBotv2 | Java | 032 | 032 | 000 | 037 | 0066.74 ms |
| 34th | Timmy | DynamicBot | Python3 | 032 | 032 | 001 | 036 | 0036.81 ms |
| 34th | mccannf | YAARBot | JS | 032 | 032 | 002 | 035 | 0100.12 ms |
| 38th | Stranjyr | ToddlerProof | Java | 031 | 031 | 010 | 028 | 0066.10 ms |
| 38th | NonFunctional User2..| IHaveNoIdeaWhatImDoing | Lisp | 031 | 031 | 002 | 036 | 0036.26 ms |
| 38th | john smith | RAMBOBot | PHP | 031 | 031 | 002 | 036 | 0014.53 ms |
| 41st | EoinC | SimpleRandomBot | .NET | 030 | 030 | 005 | 034 | 0015.68 ms |
| 41st | Martin Büttner | FairBot | Ruby | 030 | 030 | 006 | 033 | 0038.23 ms |
| 41st | Docopoper | OboeOboeBeater | Python2 | 030 | 030 | 006 | 033 | 0021.93 ms |
| 44th | undergroundmonorail | TheGamblersBrother | Python2 | 029 | 029 | 000 | 040 | 0025.55 ms |
| 45th | DrJPepper | MonadBot | Haskel | 028 | 028 | 002 | 039 | 0008.23 ms |
| 46th | Josef E. | OneBehind | Java | 027 | 027 | 007 | 035 | 0065.87 ms |
| 47th | Ourous | GitGudBot | Cobra | 025 | 025 | 001 | 043 | 0053.35 ms |
| 48th | ProgramFOX | Echo | .NET | 024 | 024 | 004 | 041 | 0014.81 ms |
| 48th | JoshDM | SelfHatingBot | Java | 024 | 024 | 005 | 040 | 0068.88 ms |
| 48th | Trimsty | Herpetologist | Python3 | 024 | 024 | 002 | 043 | 0036.93 ms |
| 51st | Milo | DogeBot | Java | 022 | 022 | 001 | 046 | 0067.86 ms |
| 51st | William Barbosa | StarWarsFan | Ruby | 022 | 022 | 002 | 045 | 0038.48 ms |
| 51st | Martin Büttner | ConservativeBot | Ruby | 022 | 022 | 001 | 046 | 0038.25 ms |
| 51st | killmous | MAWBRBot | Perl | 022 | 022 | 000 | 047 | 0016.30 ms |
| 55th | Mikey Mouse | LizardsRule | .NET | 020 | 020 | 007 | 042 | 0015.10 ms |
| 55th | ja72 | BlindForesight | .NET | 020 | 020 | 001 | 048 | 0024.05 ms |
| 57th | robotik | Evolver | Lua | 019 | 019 | 001 | 049 | 0008.19 ms |
| 58th | Kyle Kanos | LexicographicBot | Python3 | 018 | 018 | 003 | 048 | 0036.93 ms |
| 58th | William Barbosa | BarneyStinson | Lua | 018 | 018 | 005 | 046 | 0005.11 ms |
| 60th | Dr R Dizzle | BartSimpson | Ruby | 017 | 017 | 001 | 051 | 0038.22 ms |
| 60th | jmite | IocainePowder | Ruby | 017 | 017 | 003 | 049 | 0038.50 ms |
| 60th | ArcticanAudio | SpockOrRock | PHP | 017 | 017 | 001 | 051 | 0014.19 ms |
| 60th | Dr R Dizzle | BetterLisaSimpson | Ruby | 017 | 017 | 000 | 052 | 0038.23 ms |
| 64th | Dr R Dizzle | LisaSimpson | Ruby | 016 | 016 | 002 | 051 | 0038.29 ms |
| 65th | Martin Büttner | Vulcan | Ruby | 015 | 015 | 001 | 053 | 0038.26 ms |
| 65th | Dr R Dizzle | Khaleesi | Ruby | 015 | 015 | 005 | 049 | 0038.29 ms |
| 67th | Dr R Dizzle | EdwardScissorHands | Ruby | 014 | 014 | 002 | 053 | 0038.21 ms |
| 67th | undergroundmonorail | TheGambler | Python2 | 014 | 014 | 002 | 053 | 0025.47 ms |
| 69th | cipher | LemmingBot | Python2 | 011 | 011 | 002 | 056 | 0025.29 ms |
| 70th | Docopoper | ConcessionBot | Python2 | 007 | 007 | 000 | 062 | 0141.31 ms |
+-------+----------------------+-------------------------+------------+-------+-------+-------+-------+----------------+
Total Players: 70
Total Matches Completed: 2415
Total Tourney Time: 06:00:51.6877573
Catatan Tourney
- WOO HOO 70 BOT
- Emil masih dengan KOTH
Pony
dan bot barunyaDienstag
mengambil tempat ke-3 - Selamat kepada Roy karena telah melompat ke posisi 2 dengan
Gazzr
botnya - William Barbosa memenangkan penghargaan Quick Draw untuk botnya
BarneyStinson
Dan penghargaan Slow Poke diberikan kepada Docopoper untuk botnya
R.O.B.O.T
danConcessionbot
yang keduanya> 140ms per tanganLog tersedia @ https://github.com/eoincampbell/big-bang-game/blob/master/tourneys/Tournament-2014-08-01-23-24-00.zip?raw=true
Bot yang Dikecualikan
- BashRocksBot - masih tidak senang dengan .net mengeksekusi skrip cygwin bash
- CounterPreferenceBot - menunggu perbaikan bug
- RandomlyWeighted - menunggu perbaikan bug
- CasinoShakespeare - dikecualikan karena memerlukan koneksi internet aktif
Pertanyaan Asli yang Diposting
Anda telah berayun ke rumah teman Anda untuk Pertempuran pertarungan epik yang paling epik dari Rock, Paper, Scissors, Lizard, Spock. Dengan gaya nerd-tastic BigBang sejati, tidak ada pemain yang bermain sendiri tetapi telah membuat bot konsol untuk bermain atas nama mereka. Anda mencabut kunci USB Anda dan menyerahkannya ke Sheldor the Conqueror untuk dimasukkan dalam showdown. Penny pingsan. Atau mungkin Howard pingsan. Kami tidak menilai di sini di apartemen Leonard.
Aturan
Berlaku standar Rock, Kertas, Gunting, Kadal, Spock.
- Gunting memotong kertas
- Kertas mencakup Batu
- Rock menghancurkan Lizard
- Kadal meracuni Spock
- Spock menghancurkan Gunting
- Gunting memenggal Kadal
- Kadal makan Kertas
- Kertas membuktikan Spock
- Spock menguapkan Batu
- Batu menghancurkan Gunting
Bot masing-masing pemain akan memainkan satu Pertandingan melawan satu sama bot lainnya di turnamen.
Setiap Pertandingan akan terdiri dari 100 iterasi game RPSLV.
Setelah setiap pertandingan, pemenangnya adalah pemain yang telah memenangkan paling banyak game / hand out dari 100.
Jika Anda memenangkan pertandingan, Anda akan diberikan 1 poin di tabel liga. Dalam hasil pertandingan seri, tidak ada pemain yang mendapat poin.
Persyaratan Bot
Bot Anda harus dapat dijalankan dari baris perintah.
Kotak * nix Sheldor telah mati, jadi kami menjalankannya dari Windows 8 Gaming Laptop, jadi pastikan solusi yang Anda berikan dapat berjalan di windows. Sheldor telah dengan ramah menawarkan untuk menginstal runtimes yang diperlukan (layaknya) untuk dapat menjalankan solusi Anda. (.NET, Java, Php, Python, Ruby, Powershell ...)
Input
Di game pertama setiap pertandingan, tidak ada argumen yang diberikan ke bot Anda. Dalam setiap pertandingan berikutnya dari setiap pertandingan: - Arg1 akan berisi sejarah tangan / keputusan bot Anda dalam pertandingan ini. - Arg2 akan berisi sejarah tangan / keputusan lawan Anda dalam pertandingan ini.
Sejarah akan diwakili oleh urutan huruf kapital tunggal yang mewakili tangan yang mungkin Anda bisa mainkan.
| R | Rock |
| P | Paper |
| S | Scissors |
| L | Lizard |
| V | Spock |
Misalnya
- Game 1: MyBot.exe
- Game 2: MyBot.exe SV
- Game 3: MyBot.exe SS VL
- Game 4: MyBot.exe SSR VLS
Keluaran
Bot Anda harus menulis respons karakter tunggal yang mewakili "tangannya" untuk setiap game. Hasilnya harus ditulis ke STDOUT dan bot kemudian harus keluar. Huruf kapital tunggal yang valid adalah di bawah ini.
| R | Rock |
| P | Paper |
| S | Scissors |
| L | Lizard |
| V | Spock |
Jika bot Anda tidak mengembalikan kartu yang valid (yaitu 1 dari 5 huruf kapital tunggal di atas, maka Anda secara otomatis kehilangan kartu itu dan pertandingan berlanjut.
Jika kedua bot tidak mengembalikan kartu yang valid, maka permainan dianggap seri dan pertandingan berlanjut.
Format Kecocokan
Setiap bot yang dikirimkan akan memainkan satu pertandingan melawan satu sama bot lainnya di turnamen.
Setiap pertandingan akan berlangsung tepat 100 game.
Pertandingan akan dimainkan secara anonim, Anda tidak akan memiliki pengetahuan lanjutan tentang bot spesifik yang Anda lawan, namun Anda dapat menggunakan informasi apa pun dan semua yang Anda dapat kumpulkan dari pengambilan keputusannya selama sejarah pertandingan saat ini untuk mengubah strategi Anda melawan Anda lawan. Anda juga dapat melacak sejarah gim sebelumnya untuk membangun pola / heuristik dll ... (Lihat peraturan di bawah)
Selama satu gim, mesin orkestrasi akan menjalankan bot Anda dan lawan Anda memisahkan 100 milidetik dan kemudian membandingkan hasilnya untuk menghindari tabrakan PRNG dalam bahasa / runtime yang sama. (ini benar-benar terjadi pada saya selama pengujian).
Penilaian & Kendala
Dr. Sheldon Cooper dengan kedok Sheldor Sang Penakluk dengan baik hati menawarkan untuk mengawasi jalannya turnamen. Sheldor Sang Penakluk adalah pengawas yang adil dan adil (kebanyakan). Semua keputusan oleh Sheldor bersifat final.
Permainan akan dilakukan dengan cara yang adil dan benar:
- Skrip / program bot Anda akan disimpan di mesin orkestrasi di bawah subfolder
Players\[YourBotName]\
- Anda dapat menggunakan subfolder
Players\[YourBotName]\data
untuk mencatat data atau riwayat permainan apa pun dari turnamen saat ini. Direktori data akan dibersihkan pada awal setiap turnamen dijalankan. - Anda tidak dapat mengakses direktori Pemain dari pemain lain di turnamen
- Bot Anda tidak dapat memiliki kode spesifik yang menargetkan perilaku bot tertentu
- Setiap pemain dapat mengirimkan lebih dari satu bot untuk dimainkan selama mereka tidak berinteraksi atau saling membantu.
Edit - Kendala Tambahan
- Mengenai kehilangan, mereka tidak akan didukung. Bot Anda harus memainkan salah satu dari 5 tangan yang valid. Saya akan menguji setiap bot di luar turnamen dengan beberapa data acak untuk memastikan bahwa mereka berperilaku. Setiap bot yang melempar kesalahan (mis. Kesalahan kehilangan) akan dikeluarkan dari turnamen sampai bug diperbaiki.
- Bot mungkin turunan selama mereka secara ringkas berbeda dalam perilaku mereka. Bot (termasuk dalam bahasa lain) yang melakukan perilaku yang sama persis dengan bot yang ada akan didiskualifikasi
- Sudah ada bot spam untuk yang berikut jadi tolong jangan kirim ulang
- Rock - BartSimpson
- Kertas - LisaSimpson
- Scissor - EdwardScissorhands
- Spock - Vulcan
- Kadal - Khaleesi
- Pseudo Random - SimpleRandomBot & FairBot
- Psuedo Random RPS - ConservativeBot
- Psuedo Random LV - Barney Stinson
- Bot tidak boleh memanggil layanan pihak ketiga atau sumber daya web (atau apa pun yang secara signifikan memperlambat kecepatan / waktu pengambilan keputusan pertandingan).
CasinoShakespeare
adalah satu-satunya pengecualian karena bot itu dikirimkan sebelum batasan ini ditambahkan.
Sheldor akan memperbarui pertanyaan ini sesering mungkin dengan hasil Turnamen, karena lebih banyak bot yang dikirimkan.
Program Orkestrasi / Kontrol
Program orkestrasi, bersama dengan kode sumber untuk setiap bot tersedia di github.
https://github.com/eoincampbell/big-bang-game
Rincian Pengiriman
Kiriman Anda harus mencakup
- Nama Bot Anda
- Kode Anda
- Perintah untuk
- jalankan bot Anda dari shell mis
- ruby myBot.rb
- python3 myBot.py
- ATAU
- kompilasi pertama Anda berdua dan kemudian jalankan. misalnya
- csc.exe MyBot.cs
- MyBot.exe
Pengiriman Sampel
BotName: SimpleRandomBot
Compile: "C:\Program Files (x86)\MSBuild\12.0\Bin\csc.exe" SimpleRandomBot.cs
Run: SimpleRandomBot [Arg1] [Arg2]
Kode:
using System;
public class SimpleRandomBot
{
public static void Main(string[] args)
{
var s = new[] { "R", "P", "S", "L", "V" };
if (args.Length == 0)
{
Console.WriteLine("V"); //always start with spock
return;
}
char[] myPreviousPlays = args[0].ToCharArray();
char[] oppPreviousPlays = args[1].ToCharArray();
Random r = new Random();
int next = r.Next(0, 5);
Console.WriteLine(s[next]);
}
}
Klarifikasi
Ada pertanyaan, tanyakan di komentar di bawah.
sumber
Jawaban:
Pony (Python 2)
Ini didasarkan pada bot batu-kertas-gunting yang saya tulis beberapa waktu lalu untuk tantangan pemrograman di akhir kelas online Udacity . Saya mengubahnya untuk memasukkan Spock dan kadal dan membuat beberapa perbaikan.
Program ini memiliki 11 strategi sederhana yang berbeda, masing-masing dengan 5 varian. Ini memilih dari antara ini berdasarkan seberapa baik mereka akan melakukan selama putaran terakhir.
Saya menghapus strategi mundur yang hanya dimainkan secara acak melawan lawan yang lebih kuat. Saya kira ini lebih menyenangkan seperti ini.
Jalankan sebagai:
Sunting : Saya membuat perubahan kecil dengan menempatkan bias terhadap strategi paling sederhana (yaitu selalu memainkan langkah yang sama) dalam kasus yang tidak pasti. Ini sedikit membantu untuk tidak mencoba menemukan pola yang terlalu rumit di mana tidak ada, misalnya dalam bot seperti ConservativeBot.
Catatan : Saya mencoba menjelaskan strategi dasar pencocokan riwayat yang digunakan bot ini dalam pos untuk bot Dienstag saya yang lain .
sumber
Markov, Ruby
Melihat dua gerakan terakhir lawan dan menentukan tindak lanjut yang mungkin (dan kemungkinan besar). Jika kombinasi belum dipilih sebelumnya, ia hanya menggunakan semua gerakan lawan (sejauh ini). Kemudian ia mengumpulkan semua respons yang mungkin untuk ini dan mengambil yang acak.
Jalankan seperti
sumber
ConservativeBot, Ruby
Hal-hal baru adalah hal-hal buruk.
Jalankan seperti
sumber
Kipas Star Wars - Ruby
Persetan denganmu, Spock
Jalankan seperti:
sumber
Barney Stinson - Lua
Saya hanya punya satu aturan: Baru selalu lebih baik. Persetan Jo Ken Po tua atau apa pun namanya.
Jalankan seperti:
sumber
Boring Bot (Jawa)
Dia menganggap semua orang selalu memainkan hal yang sama dan merencanakannya. Dia biasanya memetik batu dalam ikatan, karena begitu juga orang lain?
sumber
max
IocainePowder, Ruby
Didasarkan dari (tanpa malu dicuri dari) strategi RPS di sini . Bot terlihat memilih tebakan yang identik dengan bot Markov, tetapi kemudian mengasumsikan lawan telah menebak apa yang akan dipilih, dan memilih langkah untuk mengalahkan yang sesuai.
Perhatikan bahwa saya baru saja mengadaptasi ide dasar strategi tertaut, tidak mengikutinya secara rinci.
Jalankan seperti
sumber
HuddleWolfTheConqueror - C #
HuddleWolf kembali dan lebih baik dari sebelumnya. Dia akan mengalahkan Sheldor Sang Penakluk di pertandingan konyolnya sendiri. HuddleWolf cukup pintar untuk mengidentifikasi dan melawan spammer. Untuk lawan yang lebih cerdas, HuddleWolf menggunakan pengetahuannya tentang statistik dasar kelas 5 dan menggunakan roll dadu berbobot berdasarkan sejarah permainan lawan.
sumber
Bukti Balita
Bot yang cukup bodoh ini mengasumsikan sedang bermain balita yang akan "mengejar" gerakannya, selalu berusaha untuk mengalahkan apa pun yang terakhir kali dilemparkan. Jika bot dikalahkan beberapa kali berturut-turut, bot akan melompat ke titik baru dalam pola. Ini didasarkan pada strategi saya untuk selalu mengalahkan adik saya yang jauh lebih muda. :)
SUNTING:: Mengubah panjang garis kerugian yang diperlukan untuk melompat ke lemparan acak Juga memperbaiki bug utama dengan lompatan acak.
Simpan sebagai
ToddlerProof.java
, kompilasi, lalu jalankan denganjava ToddlerProof [me] [them]
sumber
Bart Simpson
"Batu tua yang bagus! Tidak ada yang mengalahkan batu!"
Jalankan sebagai
Lisa Simpson
"Kas miskin, bisa ditebak. Selalu memilih rock."
Jalankan sebagai
Lisa Simpson yang lebih baik
Aku merasa tidak enak membuat Lisa sangat bodoh, jadi aku membiarkannya memilih secara acak antara salah satu tangan yang akan mengalahkan rock. Masih bodoh, tapi bagaimanapun juga dia seorang Simpson. Mungkin krayon tersangkut di otaknya?
Jalankan sebagai
sumber
Gema
Ditulis dalam C #. Kompilasi dengan
csc Echo.cs
. Jalankan sepertiEcho.exe ARG1 ARG2
.Jalankan pertama, Echo mengambil opsi acak. Setiap menjalankan setelah yang pertama, Echo hanya mengulangi tindakan terbaru lawan.
sumber
Vulcan, Ruby
Jari-jariku direkatkan.
Jalankan seperti
(Saya pikir ini adalah satu-satunya strategi karakter untuk pengaturan latar belakang Anda.)
sumber
Tyrannosaurus, Godzilla, Barney ... Aturan Kadal. Kadang-kadang mereka mendapat masalah dan perlu memanggil Spock atau melempar Rocks
sumber
BayesianBot, Perl (sekarang v2!)
Di atas segalanya, ini adalah program yang unik. Di dalamnya, Anda akan melihat perpaduan cemerlang antara statistik dan bentuk pemrograman yang mengerikan. Juga, bot ini mungkin melanggar banyak aturan statistik Bayesian, tetapi namanya terdengar lebih keren.
Esensi inti dari bot ini adalah pembuatan 250 model prediksi yang berbeda. Setiap model mengambil bentuk "Mengingat saya bermain giliran terakhir rock dan lawan saya bermain gunting dua putaran lalu, ini adalah distribusi probabilitas untuk langkah selanjutnya lawan saya." Setiap distribusi probabilitas mengambil bentuk distribusi Dirichlet multi-dimensi.
Setiap belokan, prediksi semua model yang berlaku (biasanya 10) dikalikan bersama untuk membentuk prediksi keseluruhan, yang kemudian digunakan untuk menentukan gerakan mana yang memiliki hasil tertinggi yang diharapkan.
Sunting 1: Dalam versi ini, saya mengubah distribusi sebelumnya dan membuat bot lebih acak ketika kehilangan.
Ada beberapa hal yang mungkin mengalami peningkatan, seperti jumlah model (250 hanya angka 3 digit), pilihan distribusi sebelumnya (saat ini Dir (3,3,3,3,3)), dan metode prediksi sekering. Juga, saya tidak pernah repot-repot menormalkan salah satu distribusi probabilitas, yang oke untuk saat ini karena saya mengalikannya.
Saya tidak memiliki harapan yang sangat tinggi, tetapi saya berharap bot ini akan dapat melakukannya dengan baik.
Saya sudah menjalankan program ini seperti ini:
sumber
DynamicBot
Bot dinamis hampir selalu berubah. Itu benar-benar benci terulang
Bahasa: Python 3.4.1
Perintah:
python dynamicbot.py <history>
ataupython3 dynamicbot.py <history>
tergantung pada sistem Andasumber
SmartBot - Java
Entri pertama saya untuk apa pun di situs ini!
Meskipun bukan nama yang sangat kreatif ...
SmartBot menemukan urutan gerakan di mana lawan dan / atau gerakan itu sendiri mirip dengan gerakan yang terakhir dibuat dan rencana yang sesuai.
name = SmartBot
Saya pikir untuk menjalankannya, koreksi saya jika saya salah.
java -jar SmartBot.jar
Ini memberikan skor untuk setiap kemungkinan langkah selanjutnya dengan berapa kali pola yang sama terjadi.
Itu sedikit lebih menyukai kadal.
sumber
java ABot
harus bekerja (ingat untuk memberi nama file yang sama dengan kelas publik)SpockOrRock - PHP
Ketika dimainkan di dunia nyata, kebanyakan orang secara naluriah memilih gunting. Bot ini memilih Spock atau Rock untuk mengalahkan pemain rata-rata. Ini tidak terganggu dengan putaran sebelumnya.
jalankan bersama
php spockorrock.php
sumber
SlowLizard, Ruby
Setelah memulai dengan Lizard, ia selalu memilih gerakan acak yang mengalahkan gerakan lawan sebelumnya.
Jalankan seperti
sumber
LexicographicBot
Bot ini suka memesan surat-suratnya, jadi dia akan memilih respons yang 1 lebih tinggi dari yang diberikan lawannya di babak sebelumnya - kecuali jika lawan memilih Vulcan, maka dia akan secara acak memilih respons.
Ini mengharapkan lawan untuk dibagikan kedua:
sumber
Werevulcan - Ruby
Jalankan sebagai
ruby werevulcan.rb
Para vulcan terlihat normal pada siang hari, tetapi ketika bulan naik, telinganya tumbuh runcing, dan gerakannya tumbuh lebih logis.
sumber
Analogizer - Ruby
Jalankan dengan
ruby analogizer.rb
. Saya telah membuat perbaikan logika ke kode, tetapi tidak tahu mengapa ada kesalahan dengan ini.Anggap bot lawan selalu bereaksi terhadap gerakan saya sebelumnya, dan entah memilih sesuatu yang akan mengalahkannya, sesuatu yang akan kalah darinya, atau gerakan yang sama, mungkin dari serangkaian gerakan yang mungkin terbatas. Itu kemudian mengambil langkah terbaik mengingat asumsi itu.
Kecuali bahwa sepuluh langkah pertama adalah hardcode: pertama saya berpura-pura saya hanya tahu kadal, maka saya menganggap lawan saya selalu melempar sesuatu untuk mengalahkan hal terakhir yang saya lemparkan sampai saya memiliki cukup data untuk analisis yang tepat.
sumber
Java - SelfLoathingBot
Bot dimulai secara acak, kemudian ~ 33% untuk menjadi acak, atau ~ 33% untuk memainkan taktik kemenangan melawan salah satu dari bermain segera sebelumnya, dengan 50% pilihan taktik kemenangan.
sumber
Analis
Analis menganalisis beberapa hal dan melakukan beberapa hal untuk mencoba mengalahkan Anda.
kompilasi dengan
javac Analyst.java
dan jalankan sebagaijava Analyst
sumber
The Gambler - Python 2
Berlawanan dengan namanya, satu-satunya waktu keacakan digunakan dalam program ini adalah pada putaran pertama, ketika tidak ada informasi. Sebaliknya, itu dinamai untuk kesalahan penjudi, keyakinan bahwa jika kejadian acak lebih jarang terjadi di masa lalu, itu lebih mungkin terjadi di masa depan. Misalnya, jika Anda melempar koin yang adil sebanyak 20 kali, dan 15 yang pertama adalah kepala, kesalahan penjudi menyatakan bahwa peluang sisa flip menjadi ekor meningkat. Tentu saja, ini tidak benar; terlepas dari membalik sebelumnya, peluang koin yang adil untuk selalu muncul selalu 50%.
Program ini menganalisis sejarah lawan, menemukan 2 gerakan yang telah digunakan sejauh ini, dan mengasumsikan bahwa gerakan lawan kali ini akan menjadi salah satu dari keduanya. Menetapkan 2 untuk menang, 1 untuk imbang dan 0 sampai kalah, ia menemukan gerakan dengan skor maksimum terhadap dua gerakan yang diprediksi ini dan melemparkannya.
The Gambler's Brother - Python 2
Dengan mengganti
MODE
variabel ke 0, program ini akan beroperasi berdasarkan kekeliruan terkait, juga kadang-kadang disebut sebagai kekeliruan penjudi. Ini menyatakan bahwa jika peristiwa acak telah terjadi lebih sering di masa lalu, itu lebih mungkin terjadi di masa depan. Misalnya, jika Anda melempar koin 20 kali dan 15 yang pertama adalah kepala, fallacy ini menyatakan bahwa flip yang tersisa lebih cenderung menjadi kepala, karena saat ini ada goresan. Dalam mode 0, program ini beroperasi dengan cara yang sama, kecuali mengasumsikan bahwa lawan akan melempar salah satu dari dua gerakan yang dilemparnya paling sering sejauh ini.Jadi ya, kedua program ini hanya terpisah satu karakter. :)
sumber
Dienstag (Python 2)
Entri pertama saya, Pony, tampaknya cukup baik dengan semua tebakan keduanya (tebakan tripple, ...) dan meta reasoning. Tetapi apakah itu bahkan perlu?
Jadi, inilah Dienstag, teman kecil Pony, dengan hanya satu dari 55 strategi: Prediksikan langkah lawan berikutnya dan kalahkan.
Pada akhirnya Dienstag menang atau mengikat dengan setiap Bot di sepuluh teratas papan peringkat saat ini. Kecuali untuk Pony.
Jalankan sebagai:
Saya akui bahwa kodenya agak dikaburkan. Jika ada yang mau tahu lebih banyak tentang itu, saya dapat menambahkan penjelasan.
Sunting: Berikut adalah contoh
singkatlangkah-langkah untuk menjelaskan gagasan:Program mendapatkan sejarahnya sendiri dan gerakan lawan:
sys.arg[1] = 'LLVLLVL', sys.arg[2] = 'RPSPSSP'
Sejarah digabungkan ke dalam daftar pasangan dan gerakan diterjemahkan ke angka (R = 0, ...):
hist = [[4, 0], [4, 1], [3, 2], [4, 1], [4, 2], [3, 2], [4, 1]]
Jumlah putaran yang dimainkan sejauh ini ditentukan:
N = 7
Ide dasarnya sekarang adalah mencari rantai tak terputus terpanjang dari gerakan terakhir dalam sejarah sebelumnya. Program ini melacak di mana rantai tersebut berakhir dalam daftar
cand
(untuk 'kandidat'). Pada awalnya, tanpa memeriksa, setiap posisi dalam sejarah kecuali yang terakhir dianggap:cand = [0, 1, 2, 3, 4, 5]
Sekarang panjang rantai yang mungkin bertambah langkah demi langkah. Untuk panjang rantai
l = 1
terlihat kejadian sebelumnya dari pasangan langkah terakhir[4, 1]
. Ini dapat ditemukan di posisi riwayat1
dan3
. Hanya ini yang disimpan dalamcand
daftar:cand = [1, 3]
Selanjutnya, untuk
l = 2
itu periksa kandidat mana yang mungkin didahului oleh pasangan langkah kedua hingga terakhir[3, 2]
. Ini hanya berlaku untuk posisi3
:cand = [3]
Sebab
l = 3
dan banyak lagi tidak ada rantai sebelumnya yang panjangnya dancand
akan kosong. Dalam hal ini elemen terakhircand
disimpan:cand = [3]
Bot sekarang mengasumsikan bahwa sejarah akan berulang. Terakhir kali kain itu
[3, 2], [4, 1]
terjadi, itu diikuti oleh[4, 2]
. Jadi, lawan bermain2
(gunting) yang bisa dikalahkan oleh(2+1)%5 = 3
(Spock) atau(2+3)%5 = 0
(batu). Bot menjawab, dengan alternatif pertama atau kedua tergantung pada apakahN
aneh atau bahkan hanya untuk memperkenalkan beberapa variasi.Di sini langkah
3
dipilih yang kemudian diterjemahkan kembali:print 'V'
Catatan: Dienstag memiliki kompleksitas waktu O ( N 2 ) untuk mengembalikan langkah berikutnya setelah putaran N. Pony memiliki kompleksitas waktu O ( N 3 ). Jadi dalam aspek ini mereka mungkin jauh lebih buruk daripada kebanyakan entri lainnya.
sumber
Bash Rocks
Apakah cygwin terlalu banyak bertanya sebagai runtime?
bashrocks.sh:
dan jalankan seperti ini:
sumber
R
. ;)dos2unix
di cygwin sebelum menjalankannya?Algoritma
Algoritma demi memiliki satu.
Karena selalu terasa lebih aman melakukan sesuatu, semakin rumit semakin baik.
Belum melakukan beberapa Matematika serius, jadi algoritma ini mungkin tidak efektif.
Program Python 2:
python algorithm.py
sumber
FairBot, Ruby
Mari kita mulai dari yang sederhana.
Jalankan seperti
sumber
ViolentBot
Bot ini memilih opsi paling kejam berdasarkan lawan pilihan sebelumnya:
Jalankan sebagai
sumber
Haskell - MonadBot
Saya tidak tahu apakah ghc dianggap "masuk akal", tetapi mari kita asumsikan saja. Strategi bot ini adalah untuk melawan gerakan lawannya yang paling populer.
Kode:
sumber