Internet telah gagal. Serangan DDoS sekarang merajalela dan meluas. Terserah Anda untuk mengambil kendali dan memperbaiki internet.
Setiap bot akan mengontrol 20 node di jaringan ini. Setiap node aktif atau aman , memiliki pemilik, dan memiliki kekuatan, yang dimulai pada 2. Setiap node aktif terhubung ke semua node aktif lainnya.
Setiap belokan, Anda akan menerima daftar semua node aktif dengan kekuatan mereka. Untuk setiap node aktif yang Anda miliki, Anda:
- Tentukan yang aktif simpul Anda inginkan untuk mentransfer seluruh kekuatan Anda, atau
- Simpan dan tingkatkan kekuatannya
Kemudian hal berikut terjadi secara berurutan :
- Node yang memilih untuk menyimpan kekuatannya akan meningkatkan kekuatannya sebesar 1.
- Semua node memilih untuk mentransfer kekuatan mereka secara bersamaan akan mentransfer seluruh kekuatannya ke node baru.
- Jika sebuah node mentransfer kekuatan dari node musuh, sebuah serangan akan terjadi. Jika pemilik musuh kolektif mentransfer kekuatan lebih dari pemilik aslinya (dan semua penyerang lainnya), maka musuh itu menjadi pemilik baru. Kekuatan simpul itu kemudian menjadi kekuatan penyerang. Jika ada dasi untuk kekuatan, maka pemilik akan dipilih secara acak.
- Semua node yang tersisa tanpa kekuatan akan dianggap aman , dan memberikan 1 poin kepada pemilik.
Setelah 100 game dari 100 putaran, pemilik dengan simpul paling aman di semua game menang. EDIT: Saya mengubahnya dari 2000 menjadi 100 putaran, karena ternyata 1900 terakhir tidak berguna
IO
Anda akan melewati daftar node aktif (melalui arg baris perintah) seperti berikut:
F20 F4 E7 E2 E20 F2
F
menunjuk bahwa node adalah node yang bersahabat, dan E
menunjuk bahwa simpul tersebut adalah musuh.
Untuk setiap node ramah Anda, Anda harus mengembalikan tindakan (via STDOUT) seperti berikut:
0,0 1,3 5,0
Di atas akan berarti bahwa Anda ingin meningkatkan kekuatan simpul pertama, gunakan simpul kedua untuk menyerang simpul keempat, dan simpul terakhir Anda akan mentransfer kekuatan simpul pertama (dan jika tidak ada yang menyerang, simpul itu akan menjadi simpul yang aman) ).
Setelah kembali, program Anda harus berhenti.
Papan angka
akumulator mendapat 3240 poin
berkelas mendapat 2.370 poin
dumbot mendapat 2262 poin
random_bot mendapat 1603 poin
smarter_random_bot mendapat 1319 poin
stable_bot mendapat 1097 poin
Pengontrol dapat ditemukan di sini: https://github.com/nathanmerrill/NetAttack
sumber
Jawaban:
Akumulator, Python
Mari mulai pesta ini! Kiriman saya harus berfungsi baik pada Python 2 dan Python 3.
Idenya sangat sederhana. Saya mulai menghitung node-node saya dalam urutan kekuatan yang meningkat, menjaga jumlah kekuatan yang berjalan. Ketika jumlah melebihi kekuatan simpul musuh terlemah (+1 untuk kemungkinan peningkatan), saya menyerang simpul itu dan menghapusnya dari kumpulan, mengatur ulang jumlah, dan melanjutkan. Pada akhirnya, jika node terkuat tidak dapat menemukan siapa pun untuk menyerang, mereka akan mengumpulkan lebih banyak kekuatan.
EDIT: Akumulator sekarang sedikit lebih pintar. Alih-alih selalu menyerang simpul musuh yang paling lemah, ia menumpuk kekuatan sampai ia bisa melakukannya, dan kemudian menyerang simpul bebas terkuat yang bisa dengan kekuatan itu. Juga, jika masih ada musuh yang tersisa di akhir, setiap node yang belum ditugaskan akan menyerang musuh yang tersisa paling lemah, kalau-kalau ia memutuskan untuk mentransfer kekuatannya.
sumber
Berkelas, Python3
Bot membagi node sendiri menjadi 3 kategori berdasarkan kekuatan dan setiap node bertindak sesuai dengan kategorinya.
Hasil terhadap Accumulator dan dua bot sampel:
sumber
Dumbot, Nodejs
Bot akan menyerang tanpa berpikir atau strategi. Tujuan utamanya adalah memastikan banyak simpul aman tepat di awal. Ketahuilah bahwa bot ini membuat loop tak terbatas dengan akumulator.
sumber
SteadyBot, Node.js
sumber
node SteadyBot.js F20 F4 E7 E2 E20 F2
, itu bekerja untuk saya. Bisakah Anda memberi tahu saya input yang gagal?cat F20 F4 E7 E2 E20 F2 | node SteadyBot.js