あなたは最高の人を見つけるためにじゃんけん選手権を組織することにしました。勝者を決定するために運を上げたくないので、誰もがコンテストの前に書面で彼または彼女の戦術をあなたに与えなければなりません。また、単純なものが好きなので、(岩石、紙、はさみを示す)競争相手の移動は、前のターン(RvR、RvP、RvS、PvR、PvP、PvS、SvR、SvP、またはSvS)のみに基づく必要があります。最初のターンでは、プレイヤーは固定の標識を示さなければなりません。
チャンピオンシップをシミュレートするプログラム(または関数)を作成することにしました。
コンテストの詳細
- 少なくとも2人の競技者がいます。
- すべてのプレーヤーは、他のすべての人と正確に1つの試合を行います。
- 1試合は7ラウンド続く。
- すべてのラウンドで、勝者には2ポイントが与えられ、敗者には何も与えられません。引き分けの場合、両方のプレーヤーが1ポイントを獲得します。
- 試合でのプレーヤーのスコアは、試合のターンにおける彼または彼女のポイントの合計です。
- チャンピオンシップのプレーヤーの最終スコアは、すべての試合でのポイントの合計です。
入力の詳細:
- プログラムまたは関数が
N
10文字の長い文字列を受け取り、それぞれがプレイヤーの戦略に対応している。すべてのキャラクターは(小文字)であるr
p
かs
、特定の状況でプレーヤーがじゃんけんやはさみを見せることを意味します。 - 最初の文字は最初のターンをコードします(その競技者のすべての試合で)。2番目は、最後のラウンドがロック対ロックだった場合にどうなるかを示しています。次のものはRvP、RvS、PvR、PvP、PvS、SvR、SvP、SvSで、最初の文字はプレイヤーのサインで、2番目の文字は対戦相手のサインです。たとえば
rrpsrpsrps
、プレーヤーがロックから開始し、次に対戦相手の最後の動きをコピーすることを意味します。 - 文字列のリストは、言語のリスト/配列または同様のデータとして、または1つの文字列として入力できます。後者の場合、ある種の区切り文字は必須です。
出力の詳細:
- プログラムまたは関数は、入力が提供されたのと同じ順序で各プレーヤーの最終スコアを出力する必要があります。
- スコアはスペースまたは改行で区切る必要があります。末尾のスペースまたは改行を使用できます。
例:
入力:
['rrpsrpsrps', 'rpppsprrpr']
出力:(
5 9
ターンはrvr rvp pvs svp pvr rvp pvs
)
入力:
['rrpsrpsrps', 'rpppsprrpr', 'ssssssssss']
出力:(
13 17 12
一致は5-9
(1番目と2番目)、8-6
(1番目と3番目)、8-6
(2番目と3番目)))
これはコードゴルフなので、最短のエントリが勝ちます。
6-8
番目はで3番目に対して緩み、2番目はで3番目に対して緩んでいると思います6-8
。