Teman ahli geologi Anda hampir menendang pintu kantor Anda ketika dia masuk, mata terbelalak dalam kegembiraan, dan meminta Anda untuk ikut bersamanya ke situs yang baru ia temukan. Dalam perjalanan dia menjelaskan bahwa dia pikir dia benar-benar baru saja mencapai emas. Satu-satunya masalah adalah, itu terkubur jauh di bawah tanah di sebuah gua dengan atap yang sangat tidak stabil. Terlalu berbahaya untuk spelunking, jadi dia ingin Anda memprogram salah satu dari robot penjelajah gua untuk mengumpulkan sebanyak mungkin emas sebelum dia menariknya kembali. Dia juga menyebutkan bahwa dia telah memeriksa gua dan menemukan beberapa satwa liar yang dapat membahayakan robot, dan juga bahwa dia telah menjatuhkan beberapa peralatan di sana yang mungkin masih bisa digunakan. Setiap robot dilengkapi dengan dua lengan dan berbagai sensor. Ketika Anda tiba di tempat kejadian, dia memberi tahu Anda dia berencana merekrut lebih banyak coders,
Sekarang, sampai ke seluk-beluk. Sensor meneruskan informasi ke program Anda sebagai karakter ASCII. Berikut daftar arti setiap karakter dan deskripsi untuk apa pun yang mungkin ditemui bot di gua:
Code Name/Description
Y Your bot
You do things
@ Other bots
They do other things
- Ground
This doesn't do things
C Centipede
These will bite you and leave a poison effect
The bite will cost 1 health
The poison effect will last for 3 turns, costing 2 health each turn
B Bats
If bats end up in the same space you are, your bot runs in a random direction during its turn rather than what you told it to do
L Lion (because reasons)
Lions deal heavy damage, 10 health, each time they attack
F Food
Eating this will give you 5 health
Can only be used once
W Water
Drinking this will cure poison effects early
Can only be used once
R Revealer
This will increase the range of your visibility to an 11x11 grid
The extra range will only be 75% correct, but the original range won't be effected
K Knife
You do twice as much damage to other bots if you have a knife
G Gold
The whole reason you're doing this in the first place
N Nurse Nina
She mend you good
Restores your health by 10 while you occupy the same space as her
} Boulder
You can't walk over boulders, and neither can anything else
P Pit
If you fall in a pit, you will be stuck for 3 turns
Ukuran gua tumbuh berdasarkan berapa banyak bot yang berpartisipasi. Dimulai sebagai 30x30, dan mendapat 10x10 tambahan untuk setiap bot. Jadi 2 bot akan menjelajahi gua 50x50.
Bot dimulai dengan 20 kesehatan, tetapi mereka tidak memiliki batas maksimum pada kesehatan.
Memasukkan:
Anda akan menerima input melalui STDIN dalam format berikut:
20,5,10,1,0,True,False <-health, number gold pieces, number of turns your bot has lasted, number of until the poison wears off, number of turns until you are no longer stuck in a pit, if you have a revealer, if you have a knife
-----
-G}--
--Y-L
-C---
---B-
Baris pertama berisi informasi tentang bot Anda, dan sisanya adalah kisi yang bisa dilihat oleh bot Anda. Jika bot Anda berseberangan dengan salah satu dari 4 dinding gua, Anda akan mendapatkan kotak yang terlihat lebih seperti ini (dalam kasus jauh-jauh ke Barat):
---
}--
Y--
---
---
Gua tidak membungkus, dan visi Anda juga tidak. Dinding gua tidak ditandai, satu-satunya indikasi bot Anda menerima bahwa ia mendekati dinding adalah pandangannya berkurang. Dengan Revealer, Anda mungkin mendapatkan sesuatu seperti ini:
--------C--
LW--------B
---K-N-----
--------BR-
-F---------
--B--Y---@N
-W@---F----
------K-F--
----@-}----
R@---G}--}-
--------G-R
Keluaran:
Anda mendapatkan dua gerakan per giliran, yang Anda hasilkan dalam format berikut:
MNNANW <- Moves are groups of 3 characters representing the action and the direction
Tindakan yang mungkin dilakukan adalah sebagai berikut:
M Move - Move your bot in the specified direction
A Attack - Attack the square in the specified direction
H Hold - Do nothing
Kemungkinan petunjuknya adalah sebagai berikut:
NN - North (up)
NE - Northeast (up-right)
EE - East (right)
SE - Southeast (down-right)
SS - South
SW - Southwest
WW - West
NW - Northwest
Bergerak diterapkan dari kiri ke kanan.
Ternyata:
Mengubah kemajuan dengan cara berikut:
Efek racun diterapkan pada setiap pemain yang telah diracuni
Non-bot bergerak dan menyerang
2a. Singa, Kelabang, dan Kelelawar bergerak secara acak
2b. Singa dan Lipan akan menyerang segala sesuatu yang berbatasan langsung dengannya (termasuk secara diagonal)
2c. Efek kelelawar hanya akan diterapkan pada bot jika berada di ruang yang sama dengan kelelawar
2d. Perawat Nina akan tinggal di lokasi selama 3 putaran, dan kemudian melompat ke lokasi acak.
Bot bergerak
3a. Jika bot Anda memberikan hasil yang tidak valid, itu tidak akan bergerak
3b. Bot Anda akan berusaha sedekat mungkin dengan ruang yang ditentukan oleh output (lihat catatan di bagian bawah untuk detail lebih lanjut)
3c. Satu serangan ke Lipan, Singa, atau Kelelawar akan membunuhnya
3d. Menyerang bot lain tanpa pisau akan menyebabkan 5 kerusakan, dan 10 dengan pisau
Aturan:
Tetap menggunakan bahasa umum yang dapat dijalankan di OS X atau Linux.
Anda opsional dapat menulis hingga dan tidak melebihi 1kb data ke file
Mencetak:
Bot hanya akan berada di gua sampai hanya satu yang tersisa, atau sampai 50 putaran berlalu, mana yang lebih dulu. Bot Anda akan dinilai berdasarkan jumlah koin emas yang dikumpulkannya dan berapa banyak putaran yang berlangsung.
Kode pengontrol dapat diunduh untuk pengujian di sini (buat folder bernama "bot" di direktori yang sama dengan tempat Anda mengunduhnya, dan letakkan bot Anda di dalam "bot") Anda perlu NumPy untuk menjalankannya. Jangan ragu untuk menggali, tetapi Anda harus memaafkan kekacauan ...
Inilah beberapa kode untuk bot acak:
#!/usr/bin/python
import random as r
a = ['M','A','H']
d = ['NN','NE','EE','SE','SS','SW','WW','NW']
print(a[r.randint(0,2)]+d[r.randint(0,7)]+a[r.randint(0,2)]+d[r.randint(0,7)])
**** Bot Anda akan selalu bergerak ke arah umum yang ditentukan oleh output Anda, tetapi jika terhalang oleh batu atau dinding, arah yang tepat tergantung pada keadaan. Misalnya, jika bot Anda bersandar pada dinding seperti:
---
}--
Y--
---
---
dan output Anda
MNWMSW
bot Anda akan bergerak satu ruang ke bawah. Itu tidak bisa bergerak Utara atau Barat, sehingga gerakan itu tidak berpengaruh. Itu bisa bergerak Selatan (dan memang) tetapi tidak bisa bergerak Barat. Namun, jika bot Anda mencoba untuk memindahkan Northeast, itu akan langsung menuju ruang itu (gerakan diagonal adalah diagonal, bukan prosedural)
Papan peringkat
Ini adalah skor rata-rata dari 4 pertandingan.
The bot of Survival: 54.75
Coward: 52.25
Pufferfish: 50.00
Randombot: 50.00
Indiana Jones: 47.50
TheoremBot: 46.50
sumber
Jawaban:
Indiana Jones, Python 2
Bot ini tidak takut pada apa pun. Itu akan mencoba untuk mendapatkan emas; dan jika tidak dapat menemukannya, ia akan mencoba menusuk lawan dengan pisau.
sumber
line.index('Y')
akan melempar kesalahan jika "Y" tidak ada di baris, tetapiline.find('Y')
akan mengembalikan -1 jika "Y" tidak ada di baris. Kalau tidak, itu bagus!MSNMSN
, yang tidak valid.Pengecut, python3
Seorang pengecut selalu lari dari ancaman potensial.
Namun, jika dia merasa sangat kuat, dia tiba-tiba akan mengamuk dan menikam segala yang ada di dekatnya.
Masalah dengan implementasi saat ini adalah bahwa perintah pindah dikeluarkan tanpa pengetahuan apakah itu langkah pertama atau kedua.
sumber
Bot of survival - Python 2
Sunting: menambahkan penghindaran pit yang lebih baik.
sumber
Ikan buntal, Python 3+
Saya hanya orang itu.
sumber