Tugas Anda sederhana: beri tahu saya siapa yang memenangkan pertempuran surat.
Pasukan
Ada tiga "pasukan" yang berbeda dalam pertempuran ini, yang diringkas oleh tabel ini.
name | health | damage
A 25 25
B 100 5
C 10 50
Anda dapat menggunakan tiga karakter unik untuk mewakili pasukan, tetapi harus menentukan jika mereka bukan huruf-huruf ini.
Pertempuran
Misalkan kita memiliki sampel pertarungan:
ABC # army 1
CBA # army 2
Setiap tentara berulang kali menembak ke unit paling kiri, sampai mati; kemudian mereka pindah ke pasukan ke kanan dan ulangi. Jadi pasukan 2 menyerang A
pasukan 1 sampai A
mati, lalu pindah ke B
, lalu C
. Serangan 1 tentara C
pertama, lalu B
, kemudian A
. Asumsikan tentara menyerang pada saat yang sama, dan dengan demikian pasukan akan selalu menembak jika mereka masih hidup sebelum putaran dan dapat saling membunuh pada saat yang sama. Mereka menembak secara berurutan dari kiri ke kanan.
Pertempuran akan berlangsung seperti itu:
ABC
CBA
BC # A (25 hp) killed by C (-50 hp), B (100 hp) attacked by B (-5 hp) and A (-25 hp), has 70 hp
BA # C (10 hp) killed by A (-25 hp), B (100 hp) attacked by B (-5 hp) and C (-50 hp), has 45 hp
BC # B (70 hp) attacked by B (-5 hp) and A (-25 hp), has 40 hp
A # B (45 hp) killed by B (-5 hp) and C (-50 hp)
BC # B (40 hp) attacked by A (-25 hp), has 15 health
# A (25 hp) killed by B (-5 hp) and C (-50 hp), army 2 dead
Karena itu, pasukan 1 memenangkan pertempuran!
Memasukkan
Dua dawai, yang pertama mewakili pasukan 1 dan tentara kedua 2. Mereka belum tentu berukuran sama (karena siapa bilang itu pertarungan yang adil?)
Keluaran
Tiga nilai unik dan konstan untuk mewakili kemenangan pasukan 1, kemenangan tentara 2, atau acara seri yang mustahil. Ya, adalah mungkin bagi pasukan terakhir untuk saling membunuh, berakhir dengan dasi.
Pertempuran
ABC
CBA
Army 1
CCCCC
CCCCC
Tie
CABCAB
ABBABBA
Army 2
Celah standar berlaku . Anda harus mengirimkan program lengkap.
Ini adalah kode-golf , solusi terpendek yang menang.
A
ketukanB
danC
ikatanB
danA
ikatanC
. Mengubah salah satu dariA
nilai-nilai untuk20
membuatnya mengikatB
.Jawaban:
Pyth
14597 byteSedikit kurang naif dari sebelumnya.
Cobalah online!
Penjelasan:
Mari kita potong program menjadi beberapa bagian.
Kamus
Y
adalah:{'A': [25, 25], 'C': [10, 50], 'B': [100, 5]}
. Kemudian:Pada titik ini,
K
adalah daftar pasangan yang mewakili pasukan pertama. Setiap pasangan dari daftar ini adalah surat tentara, dan(health, damage)
untuk surat itu.J
persis sama, tetapi untuk pasukan kedua.g
adalah fungsi yang mengambil dua tentara, dan menangani kerusakan yang dibuat oleh tentara kedua ke yang pertama. Sekarang:Ketika loop sementara berakhir,
K
danJ
memiliki nilai akhir. Jika keduanya kosong, itu seri; jika tidak kemenangan tentara yang tidak kosong akan menang. Itu ditangani oleh bagian terakhir dari kode:Itu dia!
sumber
Haskell ,
199193179176171 bytesCobalah online!
Trik kecil: membagi semua statistik pasukan dengan 5.
sumber
C #, 446 Bytes
Versi yang diformat:
Output 1 jika army1 menang, 2 untuk army2 dan 0 untuk dasi
sumber
int[]
saya pikir Anda dapat menggabungkan mereka, `` <= 0` sama seperti yang<1
pasti? Apakah Anda memerlukannyatry-catch
?Javascript (ES6) -
316269 BytesSaya yakin ini bisa bermain golf seperti neraka, tapi inilah yang saya hasilkan :) Saya berhasil mencukur 47 byte!
Output 0 untuk dasi, 1 untuk Tim 1 dan 2 untuk Tim 2.
Dapat dibaca :
Demo :
sumber