kammerの日記

CSとか 

ISerでも楽しめるトランプゲームたち

この記事は ISer Advent Calendar 2018 - Adventar の18日目として書かれたものです.

昨日はiojjooさんによる schemeとλ計算 - ブログをはじめてしまった でした.  λ計算面白そうですね. 

Yコンビネータと聞いてアクセラレータしか思いつかなかったので, ISで生きていけるか不安です(生きていけない).

 

最近自然言語処理周りをやっているので,  BERT([1810.04805] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding)について書く予定だったのですが, 色々あって書けなかったので, 中高で流行っていた面白いトランプゲームをいくつか紹介します. 

画面ばかり見ていると目が疲れるので友達とのんびりトランプでもしましょう! 

 

mod13スピード

通常のスピードと違い, 場の二枚のカードのmod13での四則演算の結果に応じて出せる数が決まります.

例えば5と7が出ていたら(以下, 法を13とします), 

  • 5+7 ≡ 12
  • 5-7  ≡ -2 ≡ 11
  • 7-5  ≡  2  
  • 5*7  ≡ 35 ≡9
  • 5/7  ≡ 5*2 ≡ 10 (∵7のmod13における逆元は2)
  • 7/5  ≡ 7*8 ≡ 4   (∵5のmod13における逆元は8)

で, 2,4,9,10,11,12 の6枚が出せることになります. 細かいルール(ジョーカーの扱いなど)についてはこちらのpdfこちらのブログなどをご参照ください(mod演算に慣れてない方へ, 割り算の答えや逆元が一意に定まることはpdfで説明されています)

以下がこのゲームの嬉しいことリストです

  1. 頭脳戦要素が加わる

    普通のスピードはただの反射神経ゲームで, 基本的に若くて体力のある側が勝ってしまい実質100m走ですが, mod13スピードは出す際に計算が必要だったり相手の手札を見て出しづらくしたりと頭脳を使う要素が多分にあります. 楽しい.

  2. 円滑に進行する
    普通のスピードはMaxで4枚しか出せる選択肢がありませんが, mod13スピードではMaxで6枚出せます. そのため ”せーの!" 率が下がります. 今チョロっと計算させたところ, 平均4.8枚くらい出せるようです. 

  3. 安全性が高い
    普通のスピードは文字通りスピードが出すぎて白熱してくると流血してしまい大変ですが, mod13スピードは流石にそこまでのスピードは出ないので安全です(僕はmod13スピードで血を流したことはありません).

  4. mod13での四則演算が速くなる
    嬉しくないです.

基本的に慣れのゲームなので最初は戸惑うかもしれませんが, 回数を重ねるごとにどんどん楽しくなっていきます. コツは逆元を覚えることですかね. あと13を抜いた方が楽しいかと思います.

 

四則(または七則)

場に出ているカードの数字を七則演算してお題の数を作るゲームです( 七則演算とは四則演算に指数, 対数, 冪根を加えたものです) . 詳しくはこちら.

ルールは以下の通りです. 最初にトランプをひっくり返し山札としてください.

1. 親を決め, 親がお題の数を宣言します.

2. 親から順番に1枚ずつ山札からめくって場に出していきます. めくるタイミングは任意です(今めくる番の人に委ねられる).

3. 場にあるカードを全て使ってお題の数を作れたら, 作り方を説明し, 場に出ているカードを全てもらうことができます. その人が親となって次の回が始まります.

 

これだけだとわかりづらいので具体例を見ていきましょう. 4人でやっているとします.

 

1. 親のAさんがお題として1000を宣言. 1枚めくり, 10が出ました

 場の数: 10

2. 子のBさん, 3秒考え, 10だけでは1000はできないと思い1枚めくり, 8が出ました.

 場の数: 8, 10

3. 子のCさん, 1時間考え, 10と8だけでは1000はできないと思い1枚めくり, 2が出ました.

 場の数:2, 8, 10

4. 子のDさん, 30秒考え, 10と8と2だけではできないと思い,もう1枚めくろうとした瞬間

     Bさんが ”できた!" と叫びました.

5. Bさん, " {\displaystyle 1000 = 10^{log_2 8}} "と説明し, 2,8,10 の3枚をもらい次の親に.

 

という感じです.  テンパズル(4つの数字の四則演算で10を作る遊び)の発展版だと思うとわかりやすいかもしれないです.  また”待ち"という概念があり, 次nを引けば完成することを"nが待ち"と言いますが, 全待ち(1~13全て待ち)をいうことでカードを回収することもできます. 待ちが多すぎてもどかしいときは全待ちを示していきましょう.

 

お題の数の大きさによってかなりゲームの性質が変わります. 僕が友達とやるときは5桁~6桁くらいの自然数でやることが多かった気がします.  カードをめくりすぎるとクソゲーになるので自制しましょう(無限にめくれば誰でも作れるので).

 

実はトランプが無くても遊べるゲームなので, つまらない授業中に友達とよくやっていました. コツは累乗をうまく使うこと. 例えば262144とか大きくて難しい感じがしますが, {\displaystyle 2^{18}} なのでとても簡単に作ることができます. こういう感覚が身についていくとどんどん楽しくなっていきます. 芸術的な答えを見つけてドヤ顔していきましょう!

七則解くプログラム書いて競わせる, とかも面白そうです. 

 

複素数ハーツ

上の二つはトランプゲームといいながら, そこまでトランプゲーム感が無いものでしたが, これは違います. かの有名なハーツのバリアントの一種です. これもwikipediaに詳しい解説が載っています.

 

ハーツのルールは既知とします. 何が変わるかというと得点計算だけで, 

  • は1枚1ポイント
  • Q♠13iポイント
  • J♦は-10ポイント
  • 10♣はそのターンの点が2i

 となります. そして, 最初にポイントの絶対値が100を超えた人が負けで, その段階で絶対値が一番少ない人の勝ちです.

何が面白いかというと, 嬉しいカードと嬉しくないカードが人/時によって変化します.  例えば, Q♠と10♣を取りにいって(13i * 2i = -26)実部を小さくしたり, J♦をぶつけまくって絶対値を大きくしたり, と多彩な戦略が取れます. 

普通のハーツは作業ゲーになりがちですが, 少しルールを変化させるだけでかなり面白くなりますね. 虚数部を減らせるととても気持ち良いです.

大体のカードゲームは得点計算を複素数で行えば面白くなる気がしてきました.  複素数七並べ, 複素数大富豪, 複素数ババ抜きなど. いかがでしょう. つまらなさそう.

 

交換ハーツ

上の複素数ハーツが楽しかったので, 友達と考えたゲームです. 同じくハーツのバリアントです.  

普通のハーツとの違いは以下の通りです. 

  • は1枚1ポイントだが, Kは13ポイント
  • 加えて, 10 と J♦とQ♠も13ポイント
  • 8♣ は-14ポイント
  • 毎ターン1枚下流の人に渡す(時計回りなら左,反時計回りなら右)

まず, 各スートに危険札がある(かつ毎ターン1枚何かしら回ってくる)ので最後まで気が抜けません. 手札のバランスをうまく整えないとあっという間にポイントが溜まっていきます. スピード感とスリルがありますね.

そして, 下流に渡すルールにより自発的な攻撃が可能なのがとても面白いです.

例えば, 隣の人がを持っていないことがわかればKを渡しJ♦を出すことで確実に13ポイントを押し付けることができます. コンボ成立です. ポイントを取っても良いから攻撃する, ひたすら守る, といったそれぞれの色が出ます. 

交換ハーツを遊んでいて気づいたのですが, カードゲームは毎ターン1枚回すと面白さが増します. これは本質情報です. 皆さんも今度から毎ターン1枚回してみてください.

 

ラストフォー

超戦略系トランプゲーム「ラストフォー」ルールブック【自作ゲームフェス】:SUEのゲーム語り - ブロマガ

ルールはここに書くには複雑なので上のリンクを参照してください.  

本当に面白くて, 一時期狂ったようにプレイしていました. 是非どうぞ.

 

おわりに

ISerのAdvent Calenderなのに計算機のけの字も無い記事で申し訳ありません. たまにはこういうadventも良い, ということで.

 

昔トランプでよく遊んでいたのを思い出し, ISっぽい(?)ものを抽出して紹介してみました. トランプは脳に良いですよ, 多分. 素数大富豪などもよく名前聞きますがやったことないのでやってみたいです. 小学生みたいな締めになってしまった.

 

明日はtera_poonさんがEMアルゴリズムを実装してくれる予感がします.  楽しみですね!