Dalam permainan Stratego, mekanik permainan utama adalah ketika Anda menyerang bagian lawan dengan milik Anda. Dalam tantangan ini, tugas Anda adalah mensimulasikan salah satu pertempuran ini dan mengatakan siapa yang selamat.
Spesifikasi
Anda akan mendapatkan sepasang string yang mewakili potongan Stratego. Potongan adalah salah satunya "S 1 2 3 4 5 6 7 8 9 10 B"
( S
adalah Spy, dan B
adalah bom). Yang pertama dari pasangan akan menjadi penyerang, dan yang kedua diserang.
Berikut adalah aturan untuk menentukan hasil pertempuran:
- Jumlah yang lebih tinggi mengalahkan angka yang lebih rendah:
["4", "6"] -> ["6"]
. - Jika keduanya sama, maka kedua die:
["7", "7"] -> []
. - Spies berada di bagian bawah, bawah bahkan
1
:["S", "2"] -> ["2"]
. - Namun, jika mata-mata menyerang
10
, maka mata-mata menang:["S", "10"] -> ["S"]
. - Tapi aturan normal masih berlaku jika
10
adalah satu menyerang:["10", "S"] -> ["10"]
. - Jika sesuatu menyerang bom, bom menang:
["5", "B"] -> ["B"]
. - Namun, penambang (a
3
), dapat meredakan bom:["3", "B"] -> ["3"]
. - Sebuah bom tidak akan pernah menjadi penyerangnya.
- Seorang pengintai (a
1
), dapat menyerang menggunakan mekanisme normal, tetapi mereka juga dapat mencoba untuk "menebak" peringkat pemain lain, yang dapat dilambangkan dengan notasi waras. - Jika mereka menebak dengan benar, bagian lainnya meninggal:
["1(5)", "5"] -> ["1"]
. - Jika mereka salah menebak, tidak ada yang terjadi:
["1(3)", "5"] -> ["1", "5"]
. - Pengadu bisa melihat bom:
["1(B)", "B"] -> ["1"]
.
Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
(Anda dapat menggunakan contoh di atas sebagai kasus uji, karena saya terlalu malas untuk menggabungkan semuanya dalam satu daftar).
code-golf
game
board-game
Maltysen
sumber
sumber
"Victory!"
untuk mereka, tetapi tidak ingin terlalu2
s, dan tidak ada1
dalam game Stratego saya ... (atau apakah mereka hanya dimodifikasi untuk tujuan tantangan?)Jawaban:
Haskell, 131 byte
Solusi ini dalam bentuk fungsi infiks
#
dengan tipeString -> String -> String
Input diterima melalui dua argumen string. Format untuk input spotter adalah di
1 x
manax
tebakannya. Output diberikan sebagai string. Dalam kasus di mana kedua unit bertahan, string yang dikembalikan berisi keduanya dipisahkan oleh spasi.Solusi asli saya sayangnya disadap dan biaya perbaikan saya beberapa byte.
sumber
Python,
180153 byteFungsi mengambil penyerang, pembela dan opsional menebak pengintai (jika penyerang adalah pengintai) sebagai argumen. Ini mengembalikan array yang berisi potongan hidup yang tersisa.
Tidak disatukan
Demo
https://repl.it/C6Oz/2
sumber
([a,d],[a])[g==d]
->[a,d][:(g!=d)+1]
Javascript ES6,
9886 byteTerima 3 args (penyerang, bek, pengadu spotter).
Contoh berjalan:
sumber
f("1","10") -> ["1","10"]
bukannya"10"
.Javascript,
179166160 byteFungsi ini membutuhkan 3 argumen - yang pertama adalah penyerang, yang kedua digunakan untuk pengadu (tebakan mereka) dan yang ketiga adalah bek.
Tampilkan cuplikan kode
Ikon pedang berasal dari cliparts.co
sumber
TSQL,
162124 byteGolf:
Tidak Disatukan:
Biola
sumber