pengantar
Boardgames adalah permainan klasik antara anak-anak, tetapi ada beberapa anak yang merasa bosan memainkan boardgame langkah demi langkah. Sekarang mereka ingin hasilnya ditampilkan sebelum mereka meletakkan tangan mereka di papan tulis.
Tantangan
Misalkan boardgame ini: >---#<---X---<X<--#-$
> means the start of the game
- means a position without danger
< means the player should return one step back
X means the player won't move next round
# means a portal where the player returns to the start position
$ the first player to get there or after there wins the game
Input terdiri dari string dengan aspek boardgame yang dijelaskan di atas dan dua array dengan beberapa nilai (dari 1
hingga 6
) agar didapatkan kedua pemain (anak A
dan anak B
) ketika memainkan satu kubus.
Kedua array akan selalu memiliki panjang yang sama> = 1.
Anak itu A
selalu memulai permainan.
Anda harus menampilkan anak yang mendapatkan akhir atau mendekati akhir terlebih dahulu.
Jika tidak ada yang mendapatkan akhirnya dan kedua anak tetap pada posisi cetak yang sama 0
atau nilai kepalsuan lainnya.
Jika satu larik habis sementara yang lain memiliki sisa dadu roll (karena satu pemain kehilangan beberapa putaran pada Xs), sisa dadu roll harus digunakan.
Untuk tugas ini, Anda dapat membuat program / fungsi, yang membaca input dari stdin, atau mengambil parameter / argumen dan menghasilkan / mengembalikan / mencetak anak pemenang.
Karena ini adalah kode-golf , jawaban tersingkat dalam byte menang!
Contoh Input dan Output
Anda juga dapat menggunakan format input yang berbeda, tetapi Anda hanya harus mengambil nilai boardgame, kid-A dan kid-B.
Contoh 1:
board: >---#<---X---<X<--#-$
kid-A: [3,6,6,5,2,1]
kid-B: [4,5,3,5,5,5]
output: A
Menjelaskan:
>---#<---X---<X<--#-$ # both kids in position
B--A#<---X---<X<--#-$ # kid-A moved 3 to -
B--A#<---X---<X<--#-$ # kid-B moved 4 to # and returned home
B---#<---A---<X<--#-$ # kid-A moved 6 to X and will wait one round
B---#<---A---<X<--#-$ # kid-B moved 5 to < returned one to # and returned home
>--B#<---A---<X<--#-$ # kid-B moved 3 to -
>--B#<---X---<A<--#-$ # kid-A moved 6 to < returned one to X and will wait again
>---#<--BX---<A<--#-$ # kid-B moved 5 to -
>---#<---X--B<A<--#-$ # kid-B moved 5 to < returned one to -
>---#<---X--B<X<--#A$ # kid-A moved 5 to -
>---#<---X---<X<-B#A$ # kid-B moved 5 to -
>---#<---X---<X<-B#-$A # kid-A moved 2 and won the game!
Contoh 2:
board: >-<<<<<$
kid-A: [1,2,3]
kid-B: [5,5,4]
output: 0
Contoh 3:
board: >-<-<#<-<-<-$
kid-A: [5,4,2]
kid-B: [1,1,1]
output: B
Menjelaskan:
>-<-<#<-<-<-$ # both kids in position
>-<-<#<-<-<-$ # kid-A moved 5 to # returned home
AB<-<#<-<-<-$ # kid-B moved 1 to -
>B<A<#<-<-<-$ # kid-A moved 4 to < returned one to -
>B<A<#<-<-<-$ # kid-B moved 1 to < returned one to -
AB<-<#<-<-<-$ # kid-A moved 2 to # returned home
AB<-<#<-<-<-$ # kid-B moved 1 to < returned one to -
Current position: (A:0, B:1) output: B
sumber
Jawaban:
Perl,
188180 + 2 = 182 byteWuhuu, harus digunakan
goto
.Membutuhkan
-a
dan-E
|-M5.010
:Versi agak janggal:
sumber
Haskell, 142Pemakaian:
Keluaran:
Sunting:
Astaga, saya main golf sampai mati; gagal untuk contoh terakhir. Saya akan menghidupkannya kembali segera.
sumber
import
s juga, dan saya pikir Anda akan memerlukan beberapa untukfix
dan<|>
, karena mereka tidak ada di Prelude (atau apakah ada versi yang menyertakannya?).lambdabot-Haskell
atau sejenisnya dan mengecualikan jumlah byte untuk impor.