Test Driver • Diskusi Tantangan • Kirim Adventurer
( Sumber Gambar )
Beberapa petualang saingan menggerebek reruntuhan untuk harta, tetapi mereka hanya bisa membawa begitu banyak pada suatu waktu dan memiliki batas daya tahan mereka. Mereka ingin mendapatkan harta yang paling berharga dan keluar sebelum mereka menjadi terlalu lelah untuk melanjutkan. Mereka berusaha menjadi sekaya mungkin dari kejahatan mereka yang menjarah.
Gameplay
Setiap petualang mulai di ruang pertama ruang bawah tanah dengan 1000 poin stamina dan 50kg ruang di ransel mereka.
Permainan beroperasi berdasarkan mode giliran, dengan semua pemain menyelesaikan giliran secara bersamaan. Setiap belokan, Anda dapat melakukan salah satu tindakan berikut:
- Pindah ke kamar sebelah.
- Pindah ke kamar sebelumnya.
- Tawaran stamina untuk mengambil harta.
- Jatuhkan harta.
Bergerak di antara kamar membutuhkan 10 stamina, ditambah 1 untuk setiap 5kg saat ini di ransel Anda, dibulatkan. Misalnya, seorang petualang yang membawa 3kg harta membutuhkan 11 stamina untuk bergerak dan satu yang membawa 47kg membutuhkan 20 stamina untuk bergerak.
Menjatuhkan harta membutuhkan 1 stamina terlepas dari harta yang dijatuhkan.
Saat keluar dari reruntuhan, tidak ada lagi belokan yang akan diambil oleh pemain.
Jika seorang pemain tidak dapat mengambil tindakan ini (karena kekurangan stamina atau tidak adanya harta), petualang mereka meninggal karena kelelahan, menumpahkan harta yang mereka miliki ke ruang yang saat ini diduduki. Demikian pula, jika seorang pemain mencoba melakukan tindakan yang tidak valid, petualang mereka akan terbunuh oleh jebakan, yang mengakibatkan tumpahan harta yang sama.
Menawar
Tawaran minimum untuk harta adalah 1 stamina per 1kg yang beratnya ditimbang. Anda juga dapat mengajukan poin stamina tambahan untuk lebih mungkin mendapatkan harta. Stamina yang dicoba dikonsumsi tidak peduli apa hasilnya.
Jika ada beberapa pemain yang memiliki tawaran untuk mengambil harta yang sama, pemain yang menawar tertinggi akan mendapat harta. Jika lebih dari satu pemain melakukan penawaran tertinggi, tidak ada dari mereka yang akan menerima harta.
Kondisi menang
Pemain dengan nilai total harta terbesar adalah pemenangnya. Dalam hal yang tidak mungkin terjadi dasi, ikatan pergi ke berat total terkecil, kemudian jumlah harta terkecil, kemudian nilai harta paling berharga, kedua paling berharga, ketiga ... sampai dasi rusak. Dalam hal yang hampir mustahil bahwa masih ada ikatan pada titik ini, pengemudi tes mengatakan "sekrupkan" dan pemenangnya ditentukan secara sewenang-wenang.
Dalam konteks turnamen, pemain akan diperingkat dengan tempat pertama menerima 10 poin, tempat kedua dengan 9 poin, tempat ketiga dengan 8 poin, dll ..., dengan pemain mati dan petualang tanpa harta mencetak 0 poin.
Tentang Reruntuhan
- Setiap kamar awalnya berisi antara danharta. (Di manaadalah nomor kamar)
- Ada banyak kamar yang sewenang-wenang, hanya dibatasi oleh stamina dan keinginan petualang untuk menjelajah.
- Setiap harta akan memiliki nilai moneter (dalam seluruh $) dan berat (dalam seluruh kg).
- Harta karun cenderung lebih berharga dan berlimpah saat Anda masuk lebih dalam ke reruntuhan.
- Rumus khusus untuk menghasilkan harta adalah sebagai berikut: (menggunakan notasi untuk dadu gulungan)
- Berat dihasilkan pertama kali menggunakan rumus (minimal 1)
- Nilai harta kemudian dihasilkan melalui (di mana adalah nomor kamar dan adalah berat)
Informasi Yang Terlihat oleh Pemain
Di setiap belokan, pemain mendapatkan informasi berikut:
- Jumlah kamar mereka saat ini. Ini adalah 1-diindeks, jadi secara konseptual pintu keluarnya ada di "kamar 0"
- Daftar harta saat ini di dalam ruangan
- Daftar pemain lain yang juga saat ini ada di dalam ruangan.
- Persediaan harta karun Anda saat ini
- Level stamina Anda saat ini
Coding
Driver tes dapat ditemukan di sini .
Anda harus mengimplementasikan subkelas dari Adventurer
kelas ini :
class Adventurer:
def __init__(self, name, random):
self.name = name
self.random = random
def get_action(self, state):
raise NotImplementedError()
def enter_ruins(self):
pass
Anda hanya perlu mengganti get_action
metode. enter_ruins
dijalankan sebelum permainan dimulai dan merupakan kesempatan Anda untuk mempersiapkan apa pun yang Anda ingin siapkan untuk permainan. Anda tidak perlu menimpa __init__
, dan Anda benar - benar tidak boleh melakukannya . Jika __init__
macet, Anda akan didiskualifikasi.
get_action
menerima argumen tunggal yang namedtuple
dengan bidang berikut (dalam urutan ini, jika Anda lebih suka merusak):
room
: jumlah kamar tempat Anda berada saat initreasures
: daftar harta karun di dalam ruanganplayers
: daftar pemain lain di dalam ruangan. Anda hanya mendapatkan nama pemain dengan cara ini, jadi Anda tidak tahu bot apa yang mengendalikan mereka atau inventaris / stamina mereka.inventory
: daftar harta di ransel Andastamina
: tingkat stamina Anda saat ini
Objek ini juga menyediakan dua properti utilitas:
carry_weight
: total berat semua harta yang Anda bawatotal_value
: nilai total semua harta yang Anda bawa
Daftar treasures
dan inventory
berisi namedtuple
s dengan atribut ini:
name
: nama harta karun (untuk keperluan kosmetik)value
: nilai moneter dari harta dalam $.weight
: berat harta dalam kg
get_action
harus mengembalikan salah satu dari nilai / pola berikut:
'next'
atau'previous'
untuk pindah ke kamar berikutnya / sebelumnya'take', <treasure index>, <bid>
(ya, sebagai tuple, meskipun urutan apa pun secara teknis akan berfungsi juga) untuk menawar harta pada indeks yang diberikan dalam daftar harta karun kamar. Kedua argumen harus bilangan bulat. Mengapung akan dibulatkan ke bawah.'drop', <inventory index>
untuk menjatuhkan harta yang dibawa ditemukan pada indeks yang diberikan. Indeks harus (secara alami) menjadi bilangan bulat.
Batasan Lainnya
- Anda hanya dapat menggunakan contoh acak yang diberikan kepada Anda selama inisialisasi untuk pseudorandomness.
- Hal lain yang mungkin memperkenalkan perilaku non-determinasi tidak diperbolehkan. Maksudnya di sini adalah untuk membuat bot berperilaku identik ketika diberi benih yang sama untuk membantu dalam menguji bot baru (dan berpotensi bug di driver tes). Hanya radiasi kosmik yang harus menyebabkan penyimpangan / nondeterminisme.
- Perlu diingat bahwa kode hash diacak dalam Python 3, jadi menggunakan
hash
untuk pengambilan keputusan apa pun tidak diperbolehkan.dict
s baik-baik saja bahkan ketika menggunakan perintah iterasi untuk keputusan karena pesanan telah dijamin konsisten sejak Python 3.6.
- Anda tidak boleh mengelak dari driver tes menggunakan
ctypes
hacks atauinspect
stack voodoo (atau metode lain). Ada beberapa hal menakutkan yang dapat Anda lakukan dengan modul-modul itu. Tolong jangan.- Setiap bot di-sandbox dengan cukup baik melalui salinan defensif dan
namedtuple
ketidakmampuan alami dari s, tetapi ada beberapa celah / eksploitasi yang tidak dapat ditambal. - Fungsionalitas lain dari
inspect
danctypes
dapat digunakan selama keduanya tidak digunakan untuk menghindari fungsi pengontrol. - Metode apa pun untuk mengambil instance bot lain dalam gim Anda saat ini tidak diperbolehkan.
- Setiap bot di-sandbox dengan cukup baik melalui salinan defensif dan
- Bot harus beroperasi sendiri dan tidak boleh berkoordinasi dengan bot lain dengan cara apa pun untuk tujuan apa pun. Ini termasuk menciptakan dua bot dengan tujuan yang berbeda sehingga satu mengorbankan dirinya untuk keberhasilan yang lain. Setelah ada lebih dari 10 pesaing, Anda tidak akan benar-benar dijamin memiliki dua bot dalam permainan yang sama dan nama petualang tidak memberikan indikasi kelas bot, jadi jenis strategi ini tetap terbatas.
- Saat ini tidak ada batasan keras pada waktu pelaksanaan, namun saya berhak untuk membatasi dengan keras di masa depan jika turnamen mulai memakan waktu terlalu lama. Bersikaplah masuk akal dan cobalah untuk tetap memproses di bawah 100 ms , karena saya tidak mengantisipasi perlu membatasi di bawah ambang itu. (Turnamen akan berjalan sekitar 2 jam jika semua bot membutuhkan waktu sekitar 100 ms per putaran.)
- Kelas bot Anda harus dinamai secara unik di antara semua kiriman.
- Anda mungkin tidak ingat apa pun di antara game. (Namun, Anda dapat mengingat hal-hal di antara belokan )
- Jangan edit sys.modules. Apa pun di luar variabel instance harus diperlakukan sebagai konstanta.
- Anda tidak boleh memodifikasi kode bot apa pun secara terprogram, termasuk kode Anda.
- Ini termasuk menghapus dan mengembalikan kode Anda. Ini untuk membuat debugging dan turnamen lebih efisien.
- Kode apa pun yang menyebabkan pengontrol macet akan segera didiskualifikasi. Sementara sebagian besar pengecualian akan ditangkap, beberapa mungkin lolos dan segfault tidak dapat ditandingi. (Ya, Anda dapat melakukan segmentasi dengan Python terima kasih kepada
ctypes
)
Pengajuan
Untuk membantu pengikisan jawaban, sebutkan nama bot Anda di bagian atas jawaban dengan #Header1
dan pastikan jawaban Anda menyertakan setidaknya satu blok kode (hanya yang pertama dalam jawaban Anda yang akan digunakan). Anda tidak perlu memasukkan impor atau dokumen, karena akan ditambahkan secara otomatis oleh scraper.
Saya akan lebih cenderung memilih jawaban dengan penjelasan terperinci dan dapat dimengerti. Orang lain cenderung berperilaku sama.
Secara kasar, jawaban Anda harus diformat seperti ini:
# Name of Bot
Optional blurb
#imports go here
class BotName(Adventurer):
#implementation
Explanation of bot algorithm, credits, etc...
(diterjemahkan sebagai)
Nama Bot
Uraian opsional
#imports go here class BotName(Adventurer): #implementation
Penjelasan tentang algoritma bot, kredit, dll ...
Menjalankan Test Driver Secara Lokal
Anda akan membutuhkan Python 3.7+ dan saya sarankan Anda juga menginstal tabulate
via pip. Memotong halaman ini untuk pengiriman juga membutuhkan lxml
dan requests
. Anda juga harus menggunakan terminal dengan dukungan untuk pelolosan warna ANSI untuk hasil terbaik. Info tentang cara mengatur ini di Windows 10 dapat ditemukan di sini .
Tambahkan bot Anda ke file dalam subdirektori dalam direktori yang sama dengan ruins.py
( ruins_bots
secara default) dan pastikan untuk menambahkan from __main__ import Adventurer
ke bagian atas modul. Ini ditambahkan ke modul ketika scraper mengunduh kiriman Anda, dan meskipun pasti hacky, ini adalah cara paling mudah untuk memastikan bot Anda memiliki akses Adventurer
.
Semua bot dalam direktori itu akan dimuat secara dinamis saat runtime, jadi tidak ada perubahan lebih lanjut yang diperlukan.
Turnamen
Pemenang utama akan ditentukan dalam serangkaian game dengan hingga 10 bot di setiap game. Jika ada lebih dari 10 total pengiriman, 10 bot teratas akan ditentukan dengan secara sistematis memecahnya menjadi kelompok-kelompok 10 hingga setiap bot telah memainkan (tepatnya) 20 pertandingan. 10 bot teratas akan dipilih dari grup ini dengan skor reset dan akan memainkan permainan sampai bot tempat pertama telah mencapai 50 poin memimpin di atas bot tempat kedua atau sampai 500 pertandingan telah dimainkan.
Sampai setidaknya ada 10 pengajuan, slot kosong akan diisi dengan "Pemabuk" yang berkeliaran secara acak melalui reruntuhan dan mengambil (dan kadang-kadang menjatuhkan) harta acak sampai kehabisan stamina dan harus menuju ke pintu keluar.
Turnamen akan dijalankan kembali setiap minggu jika ada kiriman baru. Ini adalah tantangan KOTH terbuka tanpa tanggal akhir yang ditetapkan.
Papan peringkat
Dari lari pada 4 Mei 2019 pada 16:25 MDT: (2019-05-04 4:25 -6: 00)
Seed: K48XMESC
Bot Class | Score | Mean Score
--------------+---------+--------------
BountyHunter | 898 | 7.301
Scoundrel | 847 | 6.886
Accountant | 773 | 6.285
Ponderer | 730 | 5.935
Artyventurer | 707 | 5.748
PlanAhead | 698 | 5.675
Sprinter | 683 | 5.553
Accomodator | 661 | 5.374
Memorizer | 459 | 3.732
Backwards | 296 | 2.407
Pembaruan - 15 Apr: pembaruan / klarifikasi peraturan pasangan
Pembaruan - 17 Apr: melarang beberapa kasus tepi dari tindakan jahat seperti memodifikasi kode bot lain.
Pembaruan - 4 Mei: Hadiah yang diberikan kepada Sleafar karena benar-benar menghancurkan Mundur. Selamat!
sumber
pip
menginstal dan menghidupkanPATH
(yang merupakan standar untuk instalasi yang lebih baru AFAIK) maka dari windows Anda dapat menjalankannyapip install modulename
di command prompt. Untuk keadaan lain (yang saya tidak tahu), buka pip , cari modul yang diperlukan dan pilih opsi.Jawaban:
Akuntan
Akuntan adalah orang yang sangat menghindari risiko. Dia suka memastikan bahwa apa yang dia lakukan benar-benar adalah pilihan terbaik dalam situasi tertentu. Jadi, dia menetapkan dirinya tujuan, dan hanya akan mengambil harta jika perhitungannya menunjukkan ini menempatkannya di jalur yang benar menuju tujuan itu. Namun, dia sangat birokratis dan tidak suka menjatuhkan barang yang sudah dia putuskan dia inginkan; setiap upaya untuk mengajarinya melakukannya sejauh ini mengakibatkan Akuntan menjatuhkan barang, dan kemudian mengambilnya kembali segera setelah itu.
Mungkin akan dilanjutkan.
sumber
Akomodasi
Berbasis longgar pada bot LightWeight saya yang lain. Di mana bot LightWeight sederhana, bot ini jauh lebih kompleks untuk mengakomodasi interaksi dengan bot lain: baik jinak dan sengaja mengganggu.
Bot ini pertama-tama akan berlari ke ruangan yang ditugaskan secara acak dan kemudian akan mencoba menawar untuk nilai rasio rasio berat / berat terbaik, jika ada pemain lain di ruangan itu kemudian berasumsi bahwa mereka juga akan menawar jadi ganti tawaran untuk harta terbaik kedua. Jika tawaran itu gagal maka pada gilirannya giliran tawaran untuk harta terbaik berikutnya.
Setelah penawaran berhasil, ulangi penawaran untuk best / secondbest hingga tidak ada lagi harta di ruangan kemudian pindah lebih dalam ke kehancuran
Untuk setiap kamar masuk ke dalam ruin, ulangi penawaran untuk best / secondbest sampai tidak ada lagi harta di ruangan itu kemudian pindah lebih dalam ke reruntuhan atau jika kami mendeteksi bahwa kami tidak bisa masuk lebih dalam kemudian bertukar ke keadaan 'Keluar' dan mulai jatuhkan yang terburuk harta sampai kita dapat menjamin bahwa kita dapat keluar dari kehancuran hidup-hidup.
Ketika dalam keadaan keluar kita akan memeriksa untuk melihat apakah kita dapat menambahkan harta 1kg dan masih membuatnya hidup-hidup, jika demikian maka kita akan berusaha untuk menawar harta 1kg, jika tidak maka kita akan menuju ke kamar sebelumnya.
Kinerjanya sangat bervariasi ... namun biasanya akan menjadi salah satu dari tiga bot teratas.
sumber
Pelari cepat
Mirip dengan Diver, Sprinter masuk ke dalam dan mengambil barang-barang terbaik dalam perjalanan kembali.
Sprinter masuk lebih dalam lalu menghitung skor untuk setiap harta dan mengambil apa pun di atas ambang batas tertentu. Ambang ini tergantung pada ruangan tempat dia berada saat ini karena harganya lebih mahal untuk mengambil barang dari kamar yang lebih dalam di reruntuhan.
Saya masih memiliki 2 optimisasi mengenai "memperjuangkan harta" yang direncanakan untuk hari-hari berikutnya.
17.04 .: Scoundrel menjadi terlalu pintar, Sprinter memutuskan untuk mendorongnya ke dalam perangkap awalnya saya ingin membunuh bot yang mencoba memohon Sprinter tetapi penguji sayangnya tidak menangani pengecualian yang terjadi pada init. Jadi perbaikan selanjutnya untuk Scoundrel cukup mudah ...
sumber
Rencanakan ke Depan
Saya menggunakan bakhil perhitungan terbaik / terburuk dari jawaban Artemis Fowl , tetapi logika pilihan sepenuhnya dari desain saya sendiri dan sejak itu telah dimodifikasi untuk memasukkan beberapa faktor tambahan, seperti harta karun yang terlihat di kamar sebelumnya (untuk meminimalkan pengambilan harta, hanya untuk mundur, jatuhkan, dan mengambil sesuatu yang lain).
Bot usaha sedalam yang dianggapnya cukup aman untuk dilakukan (perhitungan ini secara efektif berhasil menyelam ke kedalaman tertentu, tetapi memiliki fleksibilitas penanganan nilai stamina awal lainnya), mengumpulkan artefak (memprioritaskan biaya tinggi dan berat rendah), kemudian mulai mundur begitu ia memutuskan bahwa ia tidak dapat membawa lagi.
Di jalan keluar ia akan mengambil harta tambahan yang dilihatnya menentukan masih bisa dibawa dengan aman ke pintu keluar. Bahkan akan menjatuhkan artefak yang sudah dipegang jika yang baru adalah kesepakatan yang lebih baik dan tidak akan menyebabkan kelelahan. Jika memiliki ruang di tas punggungnya, ia akan mengambil harta yang baru sebelum menjatuhkan yang berkualitas lebih rendah, meminimalkan pertempuran dengan bot lain.
sumber
__init__
fungsi sudah diterapkan, Anda tidak perlu menimpanya.Artyventurer
Beats the Drunkards sekitar $ 1000! Tidak dapat memikirkan nama kreatif, tetapi di sini Anda semua adalah:
Kadang-kadang sebagian besar kode di sini tidak pernah melakukan apa-apa (setidaknya ketika saya mengujinya terhadap pemabuk), program hanya (mencoba) menemukan langkah terbaik, termasuk memproses untuk situasi yang mencoba untuk tidak menempatkan dirinya ke dalam. Beberapa di antaranya tidak pernah bisa berjalan, hanya ada di sana sehingga saya bisa bermain-main dengan angka-angka, yang mungkin masih bisa ditingkatkan.
Penjelasan
if state.inventory ... worsti = None
Temukan item 'terburuk' dalam inventori, yaitu item yang memiliki rasio nilai terendah terhadap berat. Ini menyimpan
worsti
, yang berisi indeks itu, nilainya, dan beratnya, sebagai tuple, atauNone
jika tidak ada item dalam persediaan.if self.drop ... return 'drop', worsti[0]
Jika saya mengatakan untuk membatalkan giliran terakhir ini (lihat di bawah), dan itu bisa, jatuhkan item 'terburuk' seperti yang dihitung di atas.
extra = ... * state.room
Hitung berapa banyak stamina yang tersisa jika saya mengatakannya untuk langsung kembali sekarang.
if extra > CONTINUE_IN:\ return 'next'
Jika lebih dari CONTINUE_IN, kembali
'next'
.if extra < 0 and worsti:\ return 'drop', worsti[0]
Jika kurang dari itu
0
, jatuhkan item terburuk.if extra < state.room:\ return 'previous'
Jika kurang dari nomor kamar (tidak dapat membawa harta lagi) kembali.
if state.treasures: ... bestt = None
Cari harta karun terbaik untuk diambil, mirip dengan item terburuk dalam inventaris di atas. Menyimpannya dalam
bestt
.if extra > 0 and bestt: ... return 'take', bestt[0], bid
Dengan angka saat ini, ini dieksekusi setiap kali kita sudah sejauh ini dan ada harta yang tersedia. Jika aman untuk mengambil harta yang 'terbaik', maka ia melakukannya. Tawarannya adalah minimum, atau satu lebih dari itu jika ada yang hadir.
if bestt and worsti: ... return 'take', bestt[0], bid
Dengan angka saat ini, blok kode ini tidak akan pernah dijalankan, karena blok kode sebelumnya memiliki kondisi yang lebih luas. Ini dijalankan jika kita sudah sejauh ini dan ada harta karun dalam inventaris dan ruang. Jika harta 'terbaik' di ruangan itu lebih berharga daripada harta 'terburuk' dalam inventori saya, dan akan lebih aman untuk menukar mereka dalam dua putaran berikutnya, itu akan melakukannya.
return 'previous'
Jika tidak ada yang terjadi, kembali saja.
Pembaruan 16/04/19:
Tindakan anti-bajingan. Ini akan menjadi perang penawaran :(
Pembaruan Lebih Lanjut 16/04/19:
Dikembalikan sebelumnya, alih-alih secara acak beralih setiap elemen lainnya saat menemukan yang terbaik, misalnya.
[1, 2, 3, 4, 5, 6] → [2, 1, 3, 4, 6, 5]
. Seharusnya lebih sulit untuk menyalin :).Pembaruan 17/04/19:
Dikembalikan sebelumnya, alih-alih menghapus kode sumbernya sendiri . Ia melakukan ini di
__init__
mana akan selalu ada sebelumnyaScoundrel.enter_ruins
, dan dengan demikian akan menghentikan Scoundrel dari memuatnya. Ia mengganti kode ketikaget_action
pertama kali dipanggil, sehingga akan siap untuk waktu berikutnya. TETAP, Scoundrel sekarang mati pada saat kedatangan.Pembaruan Lebih Lanjut 17/04/19:
Dikembalikan sebelumnya, sebagai gantinya menggantikan
sys.modules
entri dengan modul matematika, sehingga ketika Scoundrel mencoba memuatnya, itu memuat modul matematika sebagai gantinya. :)Juga, saya baru menyadari bahwa stamina bergerak adalah 10 + berat / 5 , jadi coba perbaiki itu.
Pembaruan Lebih Lanjut 17/04/19:
Sekarang termasuk bawang putih dari kedua pembaruan sebelumnya.
Pembaruan 18/04/19:
Mengotak-atik angka dan perhitungan, sekarang mendapat $ 2000 - $ 3000.
Pembaruan Lebih Lanjut 18/04/19:
Bawang putih dihapus file-dihapus karena telah dilarang, menambahkan bawang putih baru yang memastikan
'draco'
tidak bertanggung jawab untuk itu berjalan, jika itu hanya kembaliprevious
pada belokan pertama. Hasil telah mengambil menyelam misterius ke $ 1200- $ 1800, yang saya cari.sumber
Bajingan
Scoundrel utamanya berfungsi untuk mengganggu kontestan lain. Saat ini mengganggu Sprinter, Artyventurer, dan Akuntan (daftar ini akan bertambah seiring waktu asalkan sesuai dengan kepentingan terbaik Scoundrel). Hal ini dilakukan dengan meniru bot lain dan kemudian keluar penawaran, pemotongan, atau memperebutkan peninggalan. Dengan demikian, kemungkinan entri ini tidak akan pernah mendominasi papan peringkat dan sebaliknya beroperasi sebagai kekuatan yang memanjakan. Revisi saat ini pada saat posting ini menempatkannya di posisi ke-2 dengan skor rata-rata sekitar 7.
Scoundrel menggagalkan upaya bot lain untuk memodifikasi diri mereka untuk bertahan melawan Scoundrel dengan secara langsung mengeksekusi kode pendatang lain sebagai salinan klon yang tidak dapat dibedakan. Masalah dengan impor yang menghasilkan duplikat pendaftar diselesaikan melalui pembuatan klon melalui Refleksi (perang edit yang melibatkan perincian penentuan matematis yang baik tidak diinginkan dari sudut pandang Stack Exchange, tetapi akan menghasilkan hasil yang sama). Tantangan KOTH memiliki sejarah yang memungkinkan hal ini juga.
Scoundrel menggantikan Teamsters untuk menjaga Teamsters demi menarik. Setelah pengeditan ini, Teamsters seharusnya tidak lagi dikikis oleh pengontrol.
Pembaruan 4/17/2019: langkah-langkah balasan lebih lanjut.
The Teamsters (dianggap ilegal)
Tetapi merasa bebas untuk berlari secara lokal di mana tidak ada lebih dari 8 kontestan lain!
Entri ini (walaupun sekarang secara eksplisit tidak valid), pada kenyataannya, dua bot, dan pengontrol akan melakukannya dengan senang hati mengikis keduanya dan menambahkannya ke daftar kontestan (karena hore Python?)
Fase 1:
1. Jika tidak ada harta yang beratnya kurang dari 3 di lantai, ia bergerak ke bawah
2. Karena ia cukup dijamin menjadi petualang terakhir yang kembali ke permukaan, yang harus ia lakukan hanyalah menemukan seseorang.
Fase 2:
Nama harta sebenarnya berguna untuk membantu logika tidak memuat sampah di lantai 25 dan pergi lebih awal karena tidak ada cara untuk berkomunikasi antara dua bot (dan TeamsterA akan selalu menemukan dirinya di sebuah ruangan dengan orang lain sebelumnya) TeamsterB telah kembali).
Kesimpulan logis berikutnya: Menciptakan pasukan
Secara teori ini dapat digunakan untuk menyelami kedalaman dan mendapatkan harta dari sedalam Kamar 98, namun, karena itu akan membutuhkan lebih dari 2 bot, logika terdiri dari bot itu akan menjadi semakin kompleks, dan seperti yang saya yakin bahwa ini adalah pengajuan ilegal karena melanggar aturan tidak tertulis, jadi saya tidak akan repot.
Secara efektif
A
menunggu di 30,B
menunggu di 50 ...n
menyelam ke 98, mengambil harta, bergerak ke 97, menjatuhkannya (dan kemudian mati),n-1
mengambilnya dan bergerak ke 96 ...C
menjatuhkannya (mati),B
mengambilnya naik dan bergerak ke 30, menjatuhkannya (mati),A
mengambilnya dan kembali ke pintu keluar.Saya memperkirakan bahwa ini akan membutuhkan 11 bot.
Namun, itu tidak layak dilakukan kecuali Anda dapat memulihkan sekitar 4 harta dari kedalaman itu untuk bersaing dengan entri seperti PlanAhead atau Artyventure, karena penskalaan antara biaya stamina untuk bergerak dan nilai rata-rata harta.
Contoh hasil
Skor jarang di bawah $ 4000, kadang-kadang puncak $ 6000.
sumber
Ke belakang
Karena beroperasi secara terbalik
Mengapa disebut Mundur?
Karena saya mengambil The Accountant dan mencoba membuatnya menjalankan logikanya sehingga akan menyelam lebih dalam, kemudian mengambil rampasan yang disukai di jalan keluar (mundur dari Akuntan).
Pada akhirnya ia masih mengumpulkan sebagian besar hadiahnya di jalan (mengambilnya sebelum para pencari in-collect-out tradisional melakukannya, beroperasi mundur ke semua orang), tetapi jauh lebih banyak lagi. selektif. tentang mana yang dibutuhkan, meskipun masih mengambil barang-barang dalam perjalanan kembali.
Hasil akhirnya adalah bahwa stamina dilestarikan dalam perjalanan sementara masih memprioritaskan harta bernilai tinggi, kemudian mengambil keuntungan dari perputaran yang dalam dan pengambilan mudah dalam perjalanan kembali. Mundur dikenal untuk mengumpulkan harta dari Ruang 41 (dan selama pengembangan akan masuk, maka segera pergi, Kamar 42).
sumber
Bounty Hunter
Metode sederhana adalah yang terbaik. Rebutlah harta berharga dan ringan sembari melangkah sedalam mungkin. Rebut harta yang kurang berharga dalam perjalanan kembali.
sumber
Berat ringan
Bot sederhana yang masih berkinerja cukup baik.
Setelah merambah ke reruntuhan (saat ini 21 kamar) itu akan mengambil harta karun terbaik di ruangan itu yang hanya 1kg (maka nama bot) dan lebih berharga daripada harta paling tidak berharga dalam persediaan. Jika inventaris penuh, jatuhkan harta paling tidak bernilai. Jika tidak ada tindakan lain yang dipilih, pindahlah ke reruntuhan. Jika kita berada pada batas stamina kita untuk dapat keluar hidup-hidup maka pergilah ke pintu keluar
sumber
dumping
dienter_ruins
metode. Ini benar-benar akan mengingatnya di antara gim dan tidak akan berfungsi pada gim 2. Secara teknis tidak diizinkan, tetapi saya menambahkan aturan tadi (saya lupa sebelumnya tetapi itu adalah keinginan saya), jadi saya akan mengendur. : PMemorizer
Saya dapat mengirimkan bot ke KotH saya sendiri, bukan?
Bot ini menyelam ke kamar 30 dan mengingat semua harta yang telah dilihatnya. Pada saat itu, ia memulai perjalanannya kembali ke pintu masuk, mencoba mengambil harta karun yang diingatnya di kamar-kamar sebelumnya.
Saya berharap ini akan lebih baik. Kemungkinan peningkatan mungkin berasal dari perencanaan yang lebih baik dan menjadi lebih dinamis di ruangan mana ia berhenti menyelam dan lebih bersedia untuk mengeksplorasi opsi cadangan.
Perbarui: sekarang ambil harta karun 1kg senilai $ 60 atau lebih dalam perjalanan masuk
sumber
[Turn 072] Ryu Ridley (Memorizer) collapsed in the doorway to room #1 and died of exhaustion
Ponderer
Saya pikir itu sangat mirip dengan Memorizer karena menggunakan pengetahuan tentang kamar yang dikunjungi untuk memilih kamar dan harta yang dikumpulkan dari dalam perjalanan kembali ke pintu keluar, namun telah diperoleh secara independen.
Bot ini berlari hingga sebuah ruang dalam acak mengambil catatan harta yang ditemukan di sepanjang jalan. Begitu sampai di ruang target maka akan direnungkan pilihan harta yang ideal untuk dibawa kembali ke pintu keluar. Setiap belokan itu akan direnungkan lagi untuk menentukan pilihan harta yang paling mungkin diambil.
Saat ini ada algoritma sederhana (kekuatan terbalik dari nomor kamar) yang menghasilkan asumsi jumlah harta yang diambil (atau akan diambil ketika dikunjungi oleh bot ini) untuk setiap kamar dan karenanya harta ini diabaikan ketika merenungkan harta / kamar yang mana untuk mengambil dari. Saya punya ide untuk algoritma lebih maju lainnya untuk memodelkan harta yang tersisa. Tetapi saya harus melihat apakah manfaatnya sepadan.
sumber
Penimbun
Sang Penimbun tinggal di sebuah ruangan sampai ia mengambil semua harta di dalam ruangan (atau menghitung bahwa ia tidak memiliki stamina yang cukup untuk terus mengambil / melanjutkan). Ketika semua harta hilang, jika bot bisa bergerak dengan aman itu akan, dan melanjutkan proses mengambil semua harta.
sumber
Backwards
's,Sprinter
' s danMemorizer
's kerja strategi; karena mereka tahu apa nilai relatif dari setiap harta yang mereka lihat.Penyelam
(Tidak dapat menguji saat ini, jadi beri tahu saya jika ini rusak.)
Harta terbaik ada di reruntuhan yang lebih dalam, jadi selami kedalamannya, lalu raih apa yang kita bisa saat keluar.
sumber
diving
didefinisikan?Jacob the Orphan (Diver) was sliced in half by a swinging blade trap.
Tidak yakin apa yang Anda lakukan salah, tetapi itu berarti 'pengembalian tidak valid' AFAIK.