diL’s diary

素数大富豪やたまに数学についてのあれこれを書きます。

にばいめーかーで遊ぼう!

きっかけ

素数大富豪 Advent Calendar 2022の22日目のはちさんによる記事HNC入門にて、はちさん自身が編み出し大会などで使っていた、n=2×p型の合成数出しを作る手法が解説されました。

これを読んだ私は、やってみようと思い素数大富豪オンラインに出向きますが……全然できそうな手札が来ません。確率が1%ぐらいと思われるので、これは当然でした。そのためあまり練習できない状況が続いていました。

ところが先日!さしみさんによりこれを練習できる環境、にばいめーかーが作成されました!これは練習するしかないと何度かやってみたところ、だんだんコツがつかめ、遂には10問を3分ほどでクリアできるまでになりました。 そこでこの記事で、コツのようなものを紹介してみたいと思います。

用語・表記

はちさんの記事で、数の組(p,n)というものが使われていますが、これをこの記事でも使用し、2倍因子と呼ぶことにします。そしてpに使われるカードの枚数とnに使われるカードの枚数の合計を、2倍因子(p,n)の枚数と呼ぶことにします。

また2倍因子に対し、上への繰り上がりと下からの繰り上がりの有無を有を1,無を0として(00),(01),(10),(11)と表記し分類します。後に(20),(21)という分類も出てきます。さらに、(00),(20)と(11)の2倍因子を閉じた2倍因子ということにし、他を開いた2倍因子ということにします。

主な内容
2倍因子を閉じる

はちさんの記事にあるように2倍因子を最小の単位で作っていくと、繰り上がりの把握に時間がかかってしまいます。そこで、2倍因子を閉じて考えることがスピードアップにつながります。2倍因子を閉じるとは、単に2倍因子を作るのではなく、閉じた2倍因子に限定して手札を分割していくことです。*1

ここで繰り上がりについて、a,b,c,dを0と1のいずれかとして、2つの2倍因子P(ab),Q(cd)がこの順に並べられるのはb=cのときで、並べてできる2倍因子PQはPQ(ad)となります。そのため、(00)の2倍因子は繰り上がりのない2つの2倍因子の間に、(11)の2倍因子は繰り上がりのある2倍因子の間に、それぞれ幾つでも並べることができ、間に入れる前の2つの並んだ2倍因子をPQ(ab)とすれば、間に入れた後の2倍因子も(ab)となり、繰り上がりに影響がないことがわかります。

さらに、(01)*2の2倍因子を作ってしまったらすぐに(10)の2倍因子を作り、並べることで(00)*3の2倍因子として扱うことができます。(10)を作ってしまっても同様です。これを意識することで、2倍因子を全て閉じたものとして考えることができ、繰り上がりの把握に困らなくなります。

かなりわかりにくい説明になってしまいましたが、要するに(1,3)ではなく(17,34)のようにして考えるということです。この例からもわかるように、2桁ぐらいのものしか出てこないので簡単に閉じた2倍因子を作れると思います。今後表をつける予定です。

追記(2/22):はちさんが閉じた2倍因子の表を作ってくださいました。組み替えも書いてあり、便利です。

はちさんによる2倍因子表

下一桁用の2倍因子を先に作る

にばいめーかーでは2×p=nのpは13までの素数で割れない必要があるので、当然奇数でないといけません。先にpが奇数の閉じた2倍因子(p,n)を作っておくとスムーズにいくと思います。

絵札0枚の時

ここからは絵札の枚数ごとの考え方(パターン)を書いていきます。絵札0枚の時は特に注意することはありません。今後のために予告しておいた(20),(21)の2倍因子について書きます。*4

  • (20)・・・(5,T),(6,Q),(55,1T),(56,1Q),(6,12),(7,14),(8,16),(9,18)
  • (21)・・・(5,J),(6,K),(55,1J),(56,1K),(5,11),(6,13),(7,15),(8,17),(9,19)

これらは先頭にしか置けない2倍因子であることが重要な点です。*5

絵札1枚の時

1枚の絵札を2倍因子に組み込むとき、はちさんの記事にある2倍因子のみで考えると、奇数枚の2倍因子になってしまうので、にばいめーかーでは11枚を組む必要があることから上手くいきません。そこで、(20)と(21)の2倍因子を使う必要があります。具体的には次の2パターンがあります。

  • 絵札を使う(20),(21)の2倍因子*6が先頭に置かれ、あとは普通に組む
  • 絵札を使わない(20),(21)の2倍因子*7が先頭に置かれ、絵札を含む奇数枚の2倍因子も途中に使われる

多くの場合は前者のパターンで解決します。前者でうまくいかず、1や2が多い時に後者を疑ってみてください。

絵札2枚の時

これも2パターンがあります。

  • 絵札を2枚使う2倍因子*8ができる
  • 奇数枚の2倍因子が2つ使われる

Tがない時は必ず後者で組むことになりますね。

絵札3枚の時

この場合は絵札が1枚の時と2枚の時の方法を合わせて考えます。絵札1枚の時の後者のパターンは枚数からほぼ出ないと考えられるので少し単純です。

他の細かいコツ

今後追記していきたいです。*9

まとめ

この記事で紹介したコツは以下の3点でした。

  • 2倍因子を閉じる
  • 下一桁用の2倍因子を作っておく
  • 絵札の枚数に注意する

これがみなさんのにばいめーかー*10に役立てば嬉しいです。まだやったことがない人も、ぜひ遊んでみてください!

*1:繰り上がりをうまく把握することでもあります。

*2: もしくは(21)

*3:左に並べたら(11)ですが、全体で1つの(00)の2倍因子にすることを考えるとこれはあまり使われません。

*4:実は、記事公開当初は(55,1T),(55,1J),(56,1Q),(56,1K)の4つは見逃してしまっていました。これが必要な場面はかなり少ないと思います。

*5:というのは厳密には間違いで、(5,T),(5,J),(6,Q),(6,K)以外は(11)を前に置くことができますが、結局新しい(20),(21)ができます。とはいえこの認識は並び替えに役立ちます。これも当初は見逃していました。

*6: (5,T),(5,J),(6,Q),(6,K),(55,1T),(55,1J),(56,1Q),(56,1K) 

*7: (7,15)など

*8: (T6,2Q)など

*9:実践例も今後追加していきます。

*10:にばいめーかーをプレイすること