私はカードゲームチャレンジが好きなので、イタリアのカードゲームScopa向けにこれを作りました。私の家族は太古からこのゲームをプレイしています。それはゴルフにとって楽しいはずの非常に興味深い得点システムを持っています。楽しみを始めるためにRに回答を投稿し、人々が改善することを確信しています。
課題:ラウンド中にプレイヤーが入力としてキャプチャしたカードを考慮して、Scopaのラウンドで獲得したポイント数を計算します。
Scopaデッキには40枚のカードがあります。国際デッキを使用している場合は、8、9、10を削除し、各スーツにA、2、3、4、5、6、7、Q、J、Kを残します。1 2人のプレーヤーまたはパートナーシップがあり、各ラウンドの後、すべてのカードは2人のプレーヤーのいずれかによってキャプチャされます。スコアは次のようにカウントされます(詳細はこちら):
- 最も多くのカードを持つプレイヤーが1ポイントを獲得します。
- 最も多くのダイアモンド(またはイタリアのデッキを使用している場合はコイン)を持つプレイヤーは1ポイントを獲得します。
- セッテベロまたは美しいセブンとして知られる7枚のダイヤモンド(またはコイン)を持つプレーヤーは、1ポイントを獲得します。
- 最高のプリミエラを持つプレイヤーは1ポイントを獲得します。プレイヤーのプリミエラスコアは、各スーツでプレイヤーが獲得した最高価値のカードのスコアの合計です(下の表を参照)。すべてのスーツに少なくとも1枚のカードがない場合、対戦相手のスコアを超えてもスコアはデフォルトで負けます。どちらのプレイヤーもすべてのスーツに少なくとも1枚のカードを持っているという非常にまれなケースでは、より高いプリミエラの合計を持つプレイヤーがポイントを獲得します。2
初生スコアの表
| Rank | Value |
| ----- | ----- |
| 7 | 21 |
| 6 | 18 |
| A | 16 |
| 5 | 15 |
| 4 | 14 |
| 3 | 13 |
| 2 | 12 |
| Q,J,K | 10 |
したがって、プレーヤーはラウンドで最大4ポイントを獲得できます。3カード、ダイアモンド、またはプリミエラで可能な同点がある場合、誰もポイントを獲得しません。
各カードは2人のプレイヤーのうちの1人がキャプチャする必要があるため、1人のプレイヤーがどのカードを使用したかだけを知っていても、他のプレイヤーがどのカードを使用したかを推測できることに注意してください。primieraを正しくスコアリングするには、これを行う必要があります。
チャレンジルール
入力
コードは、Scopaのラウンド中に1人のプレイヤーがキャプチャしたカードを入力として使用する必要があります。
入力は文字列形式である必要があります。1文字は各カードのランクを表し、1文字はそのスーツを表します。これにより、原始スコアを直接入力として渡す潜在的な抜け穴がなくなります。カードランクの初級スコアへの変換は、プログラムで実行する必要があります。ただし、スペースまたはコンマで区切られた単一の文字列、文字列の配列、またはその他の形式を使用することもできます。たとえば、あなたは、エンコードとしてランクに選択した場合76A5432QJK
とし、スーツDCHS
、次のような入力を使用することができます['7D', '6H', 'QD', 'JS']
または'7D,6H,QD,JS'
。
出力
プレーヤーのスコアを表す0〜4の整数。
勝ち
バイト単位の最短回答が勝ちます!
テストケース
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "7C", "6C", "4C", "3C", "2C", "7H", "4H", "2H", "5S", "3S", "QS", "JS", "KS"]
スコア4:> 20枚のカードの1点、> 5足のダイヤモンド、ダイヤモンドの7 1点、そしてにおけるスコアリング78のための1点1点primiera(相手が7,6,5を有する7,7,7,5、 64のK)
["3D", "7C", "6C", "AC", "5C", "4C", "3C", "2C", "QC", "4H", "7S"]
スコア0:<= 20枚のカード、<= 5個のダイヤモンド、ダイヤモンドのない7、及び唯一のスコア69 primiera(相手が7,7,6、70のためにKを有する7,7,4,3)
[7D", "6D", "AD", "5D", "4D", "3D", "2D", "7C", "6C", "AC", "5C", "4C", "3C", "2C", "7H", "6H", "AH", "5H", "4H", "3H", "2H"]
スコア 3:20枚以上のカードで1ポイント、5枚以上のダイヤモンドで1ポイント、7枚のダイヤモンドで1ポイント。primieraは 63(7,7,7)であろうと相手は、51(7、Q、Q、Q)を得点することができるが、この手は、それがデフォルトでポイントを失うないスペードを持っていないからです。
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "JD", "KD", "QC", "QH", "QS"]
スコア 3:20枚以下のカード、5個以上のダイヤモンドでは1ポイント、7個のダイヤモンドでは1ポイント。primieraのみスコア51(7、Q、Q、Q)と対戦相手は、63(7,7,7)を得点することができますが、相手の手は何のダイヤモンドを持っていないので、この手は勝利primieraのデフォルトでポイントを。
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "JD", "KD", "7C", "7H"]
スコア 3:20枚以下のカード、5個以上のダイヤモンドでは1ポイント、7個のダイヤモンドでは1ポイント。この手は何のスペードを持っていないにもかかわらず、それはまだ勝ちprimieraを相手の手が何のダイヤモンドを持っていないので、(7,6,6対7,7,7)57から63のスコアで。
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "JD", "KD", "QC", "QH"]
スコア2:20枚以下のカード、5個以上のダイヤモンドでは1ポイント、7個のダイヤモンドでは1ポイント。この手にはスペードがなく、相手の手にはダイヤモンドがありません。対戦相手は勝利primieraを 41から63のスコア(対7,7,7 7、Q、Q)。
[]
(空の配列)
スコア0
1:少なくとも私たちの家族では、ジャックはスコパでクイーンを上回っていますが、これはスコアリングの目的には無関係です。
2:私は子供の頃からこのゲームをプレイしてきましたが、それが起こるのを見たことはありませんが、あなたのコードはそのケースを処理できる方が良いでしょう!
3:ラウンド中に得られた「スイープ」にはボーナスポイントがありますが、このチャレンジの目的のために無視しています。