前書き
ボードゲームは子供たちの間の古典的な遊びですが、ボードゲームを少しずつプレイすることに退屈していると感じる子供もいます。現在、彼らはボードに手を出す前に結果を表示したいと考えています。
チャレンジ
このボードゲームを想定してください: >---#<---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
入力は、上記のボードゲームのアスペクトを含む文字列と、1つのキューブをプレイするときに両方のプレイヤー(kid とkid )が取得するためのいくつかの値(from 1
から6
)を持つ2つの配列で構成されます。A
B
両方の配列の長さは常に1以上です。
子供はA
常にゲームを開始します。
最初に終わりまたは終わりに近づいた子供を出力する必要があります。
どちらにも終止符が打たれず、両方の子供が同じ位置に留まっている0
場合、プリントまたは他の偽の値。
片方のアレイのサイコロが残り、もう片方のサイコロが残っている場合(1人のプレイヤーがXを数ターン失ったため)、残りのサイコロを使い切る必要があります。
このタスクでは、標準入力から入力を読み取るプログラム/関数を作成するか、パラメータ/引数を取り、勝者の子供を出力/返却/印刷できます。
これはcode-golfなので、バイト単位の最短回答が勝ちです!
入力と出力の例
異なる形式の入力を使用することもできますが、ボードゲーム、kid-A、kid-Bの値のみを使用する必要があります。
例1:
board: >---#<---X---<X<--#-$
kid-A: [3,6,6,5,2,1]
kid-B: [4,5,3,5,5,5]
output: A
説明:
>---#<---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!
例2:
board: >-<<<<<$
kid-A: [1,2,3]
kid-B: [5,5,4]
output: 0
例3:
board: >-<-<#<-<-<-$
kid-A: [5,4,2]
kid-B: [1,1,1]
output: B
説明:
>-<-<#<-<-<-$ # 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
2つの配列(AとBの)が常に同じ長さになると仮定できますか?
—
-trichoplax
一方のアレイが残りのサイコロを振っている間に(おそらく1人のプレイヤーがXで数ターンを逃したため)、現在の位置を使用して出力を決定する必要がありますか、または残りのサイコロを最初に使い切る必要がありますか?
—
-trichoplax
@trichoplax。はい、それらは常に同じ長さです。私は質問で明確にします
—
削除
@trichoplax。残りのサイコロを最初に使い切る必要があります
—
削除
例3は正しいですか?私は私の頭の中でこれを実行しないとAは、空間4に到達しながら、Bは、過去のスペース2を取得したことがない
—
Draco18sはもはやSE信頼