まもめも

主に素数大富豪に関することを書いていきます

一か八か

この記事は素数大富豪 Advent Calendar 2023 - Adventarの19日目の記事です。
昨日はOTTYさんの「合成数大富豪で使いやすそうな合成数」についてでした。
合成数こんなに沢山覚えていたんですね。合成数だけできれいに組み切れるの流石です。


1.最初に
皆さんは「一か八か」という言葉の意味を知ってますか?
「一か八か」は、1か8の2択で正解がわからない時に、運任せでどちらかの数を選ぶことですね。
(若干嘘です。正しい意味は各自調べて下さい)
そんな1か8の2択に関するエピソードを紹介します。
※今回「イチかバチか」という記事の都合上、数字の1はAではなく1(イチ)で表記しています。


ある日工藤さんが素数大富豪をしていました。工藤さんの手番です。
工藤さんは自分の手札を見て、ふとあることに気づきました。
工藤さん「あれ?この並びみたことある!」
工藤さん「確かこれ素数大富豪アドベントカレンダーの記事で、1か8どっちかが素数になるって記事のやつだ。」


2.CASE1
手札:6,T,3,X,T,5,J (Xはジョーカー)

工藤さん「ジョーカーを1として6T31T5J(武藤さん、いとこじゃ)とジョーカーを8として6T38T5J(武藤さん、はとこじゃ)の語呂で紹介してたのは覚えてるんだけど、どっちが素数だったのかが思い出せない・・・」
工藤さん「覚えてないけど、ジョーカーを8として6T38T5J(武藤さん、はとこじゃ)!」
判定の結果、6T38T5Jは素数で、工藤さんは無事勝つことができました。


3.CASE2
手札:X,9,3,3,6,9,3,6,9
工藤さん「ジョーカーを1として193369369(一休さん、3・6・9・3・6・9)とジョーカーを8として893369369(ヤクザ、3・6・9・3・6・9)の語呂で紹介してたのは覚えてるんだけど、どっちが素数だったのかが思い出せない・・・」
工藤さん「覚えてないけど、ジョーカーを8として893369369(ヤクザ、3・6・9・3・6・9)!」
判定の結果、893369369は素数で、工藤さんは無事勝つことができました。


4.CASE3
手札:Q,K,8,6,5,2,3,X,7,1
工藤さん「ジョーカーを1としてQK86523171(QKやるごつ美いない)とジョーカーを8としてQK86523871(QKやるごつ美はない)の語呂で紹介してたのは覚えてるんだけど、どっちが素数だったのかが思い出せない・・・」
工藤さん「覚えてないけど、ジョーカーを1としてQK86523171(QKやるごつ美いない)!」
判定の結果、QK86523171は素数で、工藤さんは無事勝つことができました。



5.CASE4
手札:8,Q,T,6,5,1,7,X,X,2,3
工藤さん「ジョーカーを1,1として8QT65171123(8QTムゴイな、いい兄さん)とジョーカーを8,8として8QT65178823(8QTムゴイな、やば兄さん)の語呂で紹介してたのは覚えてるんだけど、どっちが素数だったのかが思い出せない・・・」
工藤さん「覚えてないけど、ジョーカーを1,1として8QT65171123(8QTムゴイな、いい兄さん)!」
判定の結果、8QT65171123は素数で、工藤さんは無事勝つことができました。


6.最後に
今回の記事で紹介した素数を探すにあたり、
①ジョーカーに1・8(CASE4は11・88)以外の数字を入れても素数にならないこと
②ジョーカーに1・8どちらを入れても3の倍数にならないこと
③1をAとして使う語呂は使わないこと
という制約があり、ほぼ手作業で探したのでちょっとだけ大変でした。
ネタとして紹介しているので、強い人が実践で使うことはほとんどないだろうと思っています。

明日のカレンダーはカステラさんによる全出しへの対策です。
どんな対策があるのか楽しみですね。

時間について

この記事は素数大富豪 Advent Calendar 2022 - Adventar20日目の記事です。
昨日はnishimuraさんの今年の振り返り、3枚3桁、4枚5桁でした。
CPUツールが変更されてますます便利になりましたね。

この記事では、時間について少し考えていきたいと思います。


1.時間の分類

素数大富豪の対戦における時間には、主に次のようなものがあります。
(もしかしたらこれ以外にもあるかもしれません。)

(1)シンキングタイム
(2)手番時間
(3)手番終了から次の人の手番開始までの時間
(4)ペナルティで不足した枚数分の札を捨てる時間
(5)1試合の試合時間
(6)全体の試合時間

時間の扱いはルールによって異なり、(1),(4),(5),(6)はルールによって設けられていない場合もあります。
また(3)は、人間がやると時間がかかりますが素数大富豪オンラインやCPU対戦の場合、一瞬で終わります。


2.テクニック
次にこれらの時間を上手く使う方法を考えていきます。

(1)相手の考える時間を減らす
自分の手番時間は、相手の考える時間でもあるため、出来るだけ早く出すことで相手の考える時間を減らすことができます。
特に、全出しして札が多い状況の時はより多くの考える時間を必要とします。

また人間が判定する場合は、判定に要する時間も相手の考える時間となるため、相手が全出ししてこちらも全出しする際、相手の考える時間を少しでも短くするためにHNPを狙わず、わざと偶数を出して判定を省略させる方法をとっている方もいます。
どちらがいいとは一概には言えませんが、HNP運がない人はこの方法をとった方がいいかもしれません。

(2)時間を延ばす
自分の手番の時に考える時間を延ばす目的で、グロタンカットがよく使われます。

あまり使われませんが、ジョーカーによって時間を延ばす方法もあります。
山札が無い状況で単独ジョーカー出すとそのジョーカーが山札になるため、山札のジョーカーをドローして再度単独ジョーカーを出すこと(以下「無限ジョーカー」)で無限に時間を延ばすことができます。

これらの時間延ばしは、自分の考える時間を延ばすだけでなく、1回の試合時間や全体の試合時間に上限が設けられ、この時間に達すると試合が強制終了するようなルールの場合に使うのも有効です。

ではこの時間延ばし、特に無限ジョーカーはどこまで許容されるのでしょうか。
個人的な見解ですが、無限ジョーカーはあまりいい行為ではないため、遊びでやる時は単独ジョーカーを連続で出すのは2回程度までに抑えるのが無難だと思います。
ただし対戦者も納得してやっているのであれば好きにやっていいと思います。

大会の場合は、無限ジョーカーについては主催者側がルールで制限を設けるべき事項だとは思います。
ただルールに明記していなかったとしても、ルールに明記していなければやってもいいということではない可能性もあります。
例えば「山札や相手の札を覗いてはいけない」などは普通ルールに明記しませんがやってはいけないことであり、やった場合はまず間違いなく審判の判断で止められます。
特にルールで制限を明記していない場合でも審判の判断で止められてしまうことも考慮し、連続して単独ジョーカーを出す際には事前に確認した方がいいと思います。


3.ルールに制限がある場合に延ばせる時間

ルールで無限ジョーカーを制限されたとして、その中でどこまで時間延ばしができるでしょうか。
ルールで単独ジョーカーが連続1回までの場合と連続2回まで制限された場合を考えます。

①手札に5,7,X(ジョーカー)がある場合

手札は、5,7,ジョーカー以外の札は省略しています。
山札は、左が上で右が下を表しています。
時間は、手番の時間が1分というルールだった場合に、時間ギリギリで札を出した場合の手番開始からの時間を表しています。

左の表は、ジョーカーと7でグロタンカットを出した後にジョーカーと7を山札に戻した際、ジョーカーが下に来た場合を想定しており、右の表はジョーカーが上に来た場合を想定しています。
単独ジョーカーが連続1回までの場合、通常1分の時間を5分に延ばすことができ、ジョーカーが上に来た場合は6分まで時間を延ばすことができます。
単独ジョーカーが連続2回までの場合、連続1回までの時より更に1分多くなります。


②手札に5,7,5,7,Xがある場合

単独ジョーカーが連続1回までの場合、通常1分の時間を8分に延ばすことができ、ジョーカーが上に来た場合は9分まで時間を延ばすことができます。
単独ジョーカーが連続2回までの場合、連続1回までの時より更に1分多くなります。


③手札に5,7,X,Xがある場合


単独ジョーカーが連続1回までの場合、シャッフルにかかわらず通常1分の時間を8分に延ばすことができます。
少し意外ですが、シャッフルでジョーカーが下に来た方が最後ジョーカーをドローすることができます。(連続2回になってしまうためそのジョーカーは単独で出せない)
単独ジョーカーが連続2回までの場合、ジョーカーが下に来た場合は11分まで、ジョーカーが上に来た場合は12分まで時間を延ばすことができます。

どうでしたか?意外と長いと感じた方も多いんじゃないでしょうか?
これをやられると、待ち時間が多くてつまらないからもっと制限した方がいいと思う人もいるかもしれません。
しかし、試合時間の制限がある時でなければジョーカーを手放してまで時間延ばしは普通はしないこと、実際に時間を延ばしをするのは試合時間が残り5分程度になってからが多いと予想されること、時間延ばしをさせないように相手側も山札を全回収しない対策をすることなどから、単独ジョーカーは連続1回又は2回までと制限していれば、それ以上の制限をしなくてもいいと個人的には思います。


4.倍数判定にかかる時間を減らす
考える時間を減らすための一つとして、倍数判定にかかる時間を短縮する、というのがあります。
倍数判定にかかる時間を短縮する方法として、再度1001チェックをしないための数列や、999999チェックなども知っておいた方がいいのでこちらの記事も参考にして下さい。
1001チェックが通らなかった場合のカードの入替えについて
999999チェックについて

更に倍数判定にかかる時間を減らす方法として、1001以下(もしくは500以上なら1001から引くとして500以下)の7の倍数と13の倍数を覚えて91チェックを短縮するという方法もありますが、覚えるのが大変なので91チェックを短縮するためだけの目的なら覚える必要はないでしょう。


5.最後に
ジョーカーの時間延ばしがメインの話になってしまった感はありますが、別にジョーカーの時間延ばしを単に推奨したいわけではなく、ルール上曖昧な扱いにせずにどこまでやっていいかを明確にすることで、時間延ばしをするのも相手に時間延ばしをさせないようにするのもテクニックの1つだということが認知されればいいと思っています。

明日のカレンダーは今のところ埋まっていませんので、どなたか書いて下さる方お待ちしています。
明後日ははちさんによる合成数をその場で作る方法です。
合成数の魔術師がどのようにして合成数を作っているのか楽しみですね。



999999チェックについて

この記事は、 素数大富豪 Advent Calendar 2022 - Adventarの9日目の記事です。

昨日の記事ははdiL-13さんによる、新規プレイヤーの参入しやすい環境づくりを考えるでした。
diL-13さんみたいに新しいプレイヤーが、新規の人に対してどう接するかを考えてくれているというのが嬉しいですね。


素数大富豪 Advent Calendar 2022 - Adventarの2日目の記事で少し触れた999999についてですが、999999を使った倍数判定方法を思いついたので紹介します。

(1)考え方
999999は素因数分解すると、3^3×7×11×13×37になります。
これは置き換えると1001×999で、999999は1001の倍数であることがわかります。

判定したい数に999999の倍数を足し引きしても999999の倍数かどうかの関係性は変わらなく、約数である1001においても同じことがいえるため、1001の倍数かどうかの関係性も変わりません。
これを法則を用いて、判定したい数に999999の倍数を足し引きして1001の倍数かどうかチェックしていきます。

abcdefghijklという12桁の数(a~lはぞれぞれ0~9の任意の数)を判定したい場合、元の数に999999の倍数である「999999×ghijkl」足しても1001の倍数かどうかの関係性は変わりません。これを計算すると、

abcdefghijkl+999999×ghijkl
=abcdef×1000000+ghijkl+(1000000-1)×ghijkl
=1000000×(abcdef+ghijkl)

となり、「abcdefghijkl」は「abcdef+ghijkl」と計算しても1001の倍数かどうかの関係性は変わらないことがわかります。
この方法を用いると、12桁の数を6桁程度まで減らすことができます。
このように「判定したい数」と「下6桁に999999を掛けた数」の和を計算して、判定したい数の桁を減らす方法を「999999チェック」と呼ぶことにします。

「abcdef+ghijkl」をしただけでは数がまだ大きいので、このチェック方法だけで倍数判定するのは難しく、1001チェックや91チェックと組み合わせて999999チェック→1001チェック→91チェックと桁を減らしていき判定する必要があります。

最初から1001チェックで「abc-def+ghi-jkl」を計算すれば999999チェックなんて必要ないのでは?と思うかもしれません。
実際その通りで、999999チェックではなく1001チェックでも支障ありません。
しかし999999チェックには、いくつかのメリットがあります。

それは、「足し算であること」「2桁札を分けなくていいこと」です。
1001チェックは足し算と引き算を使用しますが、999999チェックは足し算だけなので、引き算が苦手な人に向いています。

また1001チェックの場合、例えばTQKといった2桁札を計算する場合、-101+213と計算するため、Qの1を引き算側、2を足し算側に分ける必要があり、ややこしくなりますが、999999チェックは基本的に2桁札を分けずに計算できます。


(2)使用方法
使用方法を簡単に言うと、「6桁ごとに区切った数字を足していく」です。
では使用例を見ていきます。

①234567TJJの場合
 999999チェック 234567+101111=335678
 1001チェック  678-335=343 (11の倍数ではない)
 91チェック   343-303+30=7  (7の倍数なので、234567TJJは7の倍数)

②3215888785QJの場合
 999999チェック 32+158887+851211=1010130
                               1+10130=10131
 1001チェック  131-10=121 (11の倍数なので、3215888785QJは11の倍数)

足し算の結果999999を超えた場合、再度6桁ごとに区切った数字を足していきます。
010130は10130として計算します。6桁目が0だとこれだけで桁が減らせます。
なお、判定したい数の3の倍数チェックをしていなかったとしても、999999チェック後の数が3の倍数かどうかでチェックできます。
上記の場合は999999チェック後の「10131」が3の倍数のため、3215888785QJが3の倍数とわかります。

③9876543QQJの場合
 999999チェック 9+876543+121211=997763
 1001チェック  997-763=234 (11の倍数ではない)
 91チェック   234-202+20=52  (13の倍数なので、9876543QQJは13の倍数)

 997763の後、999999-997763=2236、2236-2002=234と計算する方法もあります。


(3)おまけ(37の倍数判定方法)
 999999は37の倍数でもあるため、999999チェック後の数から37の倍数判定もできます。37の倍数判定には、999チェックを使用します。

 999999チェックは6桁ごとに足していきますが、999チェックは3桁ごとに足していきます。
また、37×3=111のため3桁のぞろ目は37の倍数であることから、999チェックの計算結果が、ぞろ目に37か74を足した数であれば37の倍数、そうでなければ37の倍数ではないということになります。

 (2)①の335678の場合
 335678-333333=2345
 2+345=347 (333でもなく333+37でもないので、234567TJJは37の倍数ではない)

 (2)②の10131の場合
 10+131=141 (111でもなく111+37でもないので、3215888785QJは37の倍数ではない)

 (2)③の997763の場合
 997+763=1760 (末尾の0は無視し、176は111+37でも111+74でもないので、9876543QQJは37の倍数ではない)

この37の倍数判定は999999チェック後の数を使用するため、1001チェックをしている間に忘れてしまう場合があります。
999999チェック後の数を覚えていて、時間に余裕がある時に使用しましょう。


(4)最後に
999999チェックのメリットを色々書きましたが、1001チェックにも「足し算と引き算を行うので数が大きくなりにくい」「3桁の同じ数を繰り返し置くことで計算を省略できる」などのメリットがあります。

999999チェックを使うか1001チェックを使うか、自分が得意な計算方法や状況に応じてうまく使い分けができるようになると、チェックにかかる「時間」が短くなるかもしれません。
この「時間」についてを、12月20日のAdvent Calendarに書きたいと思いますので、よろしければこちらもご覧ください。

明日はasangi_a4acさんによる素数を見てみようです。
どんな素数が見れるのか楽しみですね。

1001チェックが通らなかった場合のカードの入替えについて

この記事は、 素数大富豪 Advent Calendar 2022 - Adventarの2日目の記事です。
昨日は二世さんによる、2022年の素数大富豪でした。
今年も色々なイベントがありましたね。

素数かどうかわからない数を出すときに、1001チェックや91チェックを行う場合があります。
1001チェックでは7 or 11 or 13の倍数かどうかが判別でき、91チェックでは7 or 13の倍数かどうかが判別できます。
1001チェックや91チェックの結果、7 or 11 or 13の倍数であることがわかった場合、札を並び替えて数を変える必要があります。

(1)11の倍数だった場合に再度11の倍数にならない方法
11の倍数には奇数桁の和と偶数桁の和の差が11の倍数になるという性質があります。
このため1001チェックの結果11の倍数だった場合、奇数桁の数と奇数桁の数を入替えたり、偶数桁の数と偶数桁の数を入替えても11の倍数のままなので、別の方法で数を並び替える必要があります。
なお札が全て2桁札の場合、どう並び替えても奇数桁の和と偶数桁の和は変わらないので11の倍数のままになります。

(2)7の倍数だった場合に再度7の倍数にならない方法
2つの数の場所を入替えた場合、元の数と入替えた後の数の差は次のようになります。

元の数が4桁の数abcdの場合 (a~dはそれぞれ1~9の任意の数)
①cとdを入替えてabcd→abdcとした場合 abdc-abcd=9×(d-c)
②bとdを入替えてabcd→adcbとした場合 adcb-abcd=99×(d-b)
③aとdを入替えてabcd→dbcaとした場合 dbca-abcd=999×(d-a)

2つの数字の場所を入替えた時、元の数と入替えた後の数の差は、2つの数字の差の倍数になります。
よって、入替えた2つの数字の差が7なら、元の数と入替えた後の数の差は7の倍数になります。

7の倍数に7の倍数を足し引きしても7の倍数のままなので、1001チェック等をした結果7の倍数だった場合、1と8、or 2と9を入替えても7の倍数のままになります。
このため7の倍数だった場合に数を入替える際は、1と8、or 2と9の入替えをしてはいけません。

なお上記③以降も桁を増やしていくと、掛ける数字が9999、99999、999999・・と9が増えていきます。
このうち「999999」は7と11と13倍数になります。
1001チェック等で引っかかった後にこの方法で入替えても7・11・13の倍数のままなので今回の記事では使い道はありませんが、この「999999」という数は別の使い道がありそうなので、詳しくは12月9日のAdvent Calendarに書きたいと思います。

(3)13の倍数だった場合に再度1001チェック等をしなくてすむ方法
(1)の方法で11の倍数だった場合に11の倍数にならないよう入替えても、入替えた後の数が7の倍数や13の倍数なってしまった可能性があるため、再度1001チェック等を行う必要があります。

(2)においても7の倍数だった場合に7の倍数にならないよう入替えても、入替え後の数が11の倍数や13の倍数なってしまった可能性があるため、再度1001チェック等を行う必要があります。

再度1001チェック等を行わずに済む方法はないでしょうか。
ここで、1001チェック等の結果13の倍数だった場合を考えます。
11の倍数ではない数に11の倍数を足しても11の倍数にならないこと、7の倍数ではない数に7の倍数を足しても7の倍数にならないことから、元の数と入替え後の数の差が7の倍数かつ11の倍数(77の倍数)であれば、再度1001チェック等を行わずに済みます。

元の数と入替え後の数の差を77の倍数にするためには、(1)と(2)を踏まえると、1と8、or 2と9を奇数桁同士又は偶数桁同士で入替えれば良いことがわかります。

例を上げると、次のようになります。
a8c1e→a1c8e
9b2de→2b9de

(4)再度1001チェック等を行わずに済む数列
7の倍数だった場合や11の倍数だった場合ですが、13の倍数だった場合の時に用いたような簡単な法則はありません。(多分)
このため法則に従って数を入替えるのではなく、13の倍数だった場合の入替えが可能であり、かつある並び替えだと91(7×13)の倍数になり、かつ別の並び替えだと143(11×13)の倍数になるような数列を探すことにします。

まとめると、探す数列の条件は次の4つです。
・13の倍数だった時用に、奇数桁同士又は偶数桁同士に1と8、or 2と9が含まれている
・11の倍数だった時用に、元の数と並び替え後の数の差が91(7×13)の倍数
・7の倍数だった時用に、元の数と並び替え後の数の差が143(11×13)の倍数
・並び替えが簡単であること

1001チェック等で時間を消費していることを想定し、並び替えが簡単であることを条件としました。
探索に当たり今回は10、J、Q、K、0は除外します。

        ・
        ・
        ・
(プログラムのスキルがないのでエクセルを使用)
        ・
        ・
        ・

探索の結果、「38415」「61584」「49526」「72695」の数列が見つかりました。

これら5桁の数字をabcdeとした時、次のようになります。
①13の倍数だった場合
1と8 or 2と9を入替えることによって、7と11の倍数ではないまま13の倍数ではなくすることができます。
②11の倍数だった場合
dを3つ前に移動しabcde→dabceと並び替えることによって、7と13の倍数ではないまま11の倍数ではなくすることができます。
③7の倍数だった場合
eを3つ前に移動しabcde→aebcdと並び替えることによって、11と13の倍数ではないまま7の倍数ではなくすることができます。

この並び替えをすることにより、1001チェックで引っかかっても再度1001チェックを行わなくても済むようになります。

(5)使用例
①「38415」を含んだ「9384151」が1001チェックの結果7の倍数だった場合
→eにあたる5を3つ前に移動させて「9358411」に並び替え

確認するとわかりますが、13で割った余りと11で割った余りは同じままで、7で割った余りが0ではなくなっています。

②「61584」を含んだ「27615841」が1001チェックの結果11の倍数だった場合
→dにあたる8を3つ前に移動させて「27861541」に並び替え

こちらも13で割った余りと7で割った余りは同じままで、11で割った余りが0ではなくなっています。

③「49526」を含んだ「843495263」が1001チェックの結果13の倍数だった場合
→奇数桁同士の9と2を入替えて「843425963」に並び替え

こちらも7で割った余りと11で割った余りは同じままで、13で割った余りが0ではなくなっています。

なお、並び替え後の数の「9358411」「27861541」「843425963」は3つとも素数ですが、素数になる数を意図して選んだだけなので、この方法で並び替えたら必ず素数になるというわけではありません。


(6)最後に
今回見つけた数は4つとも偶数のため末尾には置けないのが少し残念ですが、末尾以外の場所に置けばよく、使用している数も偶数が多めでバラけているので割と使いやすいのではと思っています。

明日はもりしーさんによる「素数で音楽を作ろう!」です。楽しみですね!

5枚、5枚、57の出す順について

この記事は素数大富豪 Advent Calendar 2020 - Adventarの15日目の記事です。
昨日はnishimuraさんの素数大富豪 一人二役モード nishimura vs nishimuraでした。
一人二役モードは練習用に使えそうですね。

まずはじめに、この記事は書く予定はなかったんですが、誰も埋まらず空いていたので、急遽書くことにしました。

この記事では、5枚、5枚、グロタンカットの出す順番について考えていきます。

この記事を考えようと思ったのは、素数大富豪 Advent Calendar 2020 10日目の記事の、ささらさんの5枚二刀流戦術の記事の表の中に、KKQTJの頭につく数として57があるのを見て、「あれ?手札が5枚、KKQTJ、57の時にこの二刀流で出すのって最善手?」と疑問を持ったのがきっかけでした。

手札が5枚、KKQTJ、57の時、出し方としては次の4つが考えられます。
(戦略としてはKKJを軸にした3枚出し等もありますが、この記事では5枚出しについてだけ考えることにします。)

f:id:mamo0283:20201215005149j:plain

それぞれどのような違いがあるか考えていきます。

①5枚→KKQTJ→57
5枚出しの後、相手が返してきてもKKQTJ未満ならKKQTJで返し、57で上がる戦法。
この組み方の最大の弱点として、5枚出しの後とKKQTJの後で相手に2回手番が回るという点があります。
相手の手札にKKQTJがなくても、1回目の手番で合成数カマトトをして手札を増やし、2回目の手番でKKQTJを超える手札が揃えば、KKQTJが返される可能性があります。
KKQTJが返されると、残り手札が57の2枚しかないため、相手にうまく組まれると、その後何もできずに負けてしまう可能性もあるため不安が残ります。

②57→5枚→KKQTJ
最初に57を出し、そのあと5枚出し。相手が返してきてもKKQTJ未満ならKKQTJで上がる戦法。この場合、相手は1回しか手番が回らないため、合成数カマトトをしてKKQTJ超の手札を揃えるといった戦法が使えないため、勝率がグッと上がります。
ただし、相手もKKQTJを持っていて5枚出しをKKQTJで返された場合、残りの手札はKKQTJで強い札が残っているものの、枚数は5枚で、相手より2枚程少ない枚数になります。このため相手がドローして残り8枚のうち1枚を残して7枚出しの素数を出してきた場合、ドローしても6枚にしかならず、出すことすらできず負けてしまう可能性があります。

③5枚→KKQTJ→57と、5枚→57KKQTJの二刀流
最初に5枚出し。相手が返してきてもKKQTJ未満ならKKQTJを出し相手がパスしたら57で上がり、5枚出しの後相手が合成数カマトトをしたら57KKQTJ又は57→KKQTJで上がる戦法。
カマトトをしなかった場合の②との違いは、相手がKKQTJを持っていて5枚出しをKKQTJで返された場合、②は残り手札が5枚(KKQTJ)だったのに対し、7枚(57KKQTJ)残る点です。
これで先ほど書いたように7枚出しの素数を出してきた場合でも、出すことすらできないという状況はなくなります。
ただし、相手がKKQKJを持っていてKKQTJに対しKKQKJで返された場合は、相手の残り手札は1~3枚しかないのでまず負けてしまいます。

また、②は57→5枚に対して相手は初期手札と1回のドローでKKQTJ以上を出されなければならないのに対し、③は5枚出しに対して初期手札と1回目のドローでKKQTJ以上が出せなくても、KKQTJに対して2回目のドローでKKQKJを出せばいいということもあります。


④KKQTJ→57→5枚
最初にKKQTJ、相手がパスしたら57を出し、そのあと5枚出しで上がる戦法。
①~③との大きな違いは、①~③は相手が1回のドローチャンスでKKQTJ以上が出せれば対応できたのに対し、④は相手が1回のドローチャンスでKKQKJを出す必要がある点です。KKQTJは手札としてそこそこ揃いやすいため、これを防げるのは大きいです。また、KKQTJに対してKKQKJで返されても相手の残り手札はまだ6~7枚あるので、まだ相手にあがられない可能性があります。

このため、5枚、KKQTJ、57と会った時には、基本的にはこの戦法で出すのが最適と思われます。
「基本的には」といったのは、相手の手札がKKQTJ以下ならこの戦法がおそらく最適ですが、相手がKKQKJを持っていた場合、他の手順の方が有利になる場合があるからです。具体的には次の2つが挙げられます。

・①や③で、5枚出しの後すぐにKKQKJで返してきた場合
・KKQKJは出せるけど一部のカードを温存するためにそれより弱い数を出す場合

これは、④の戦法は決め札が場に出て公開されているので、相手はKKQKJで返す必要があることがわかるのに対し、①~③の戦法は自分の決め札がわからないので、次にKKQKJを出されるのを恐れて相手が先にKKQKJを出してしまったり、偶数が多いなど、残りの手札で組み切れない場合に、もうちょっと弱い手札を期待してKKQKJより弱い数を出してしまうからです。

まとめると、
・基本的には④KKQTJ→57→5枚
・相手のカマトトを期待する場合は③5枚→KKQTJ→57と5枚→57KKQTJの二刀流
・こちらの5枚に対し相手が1手目でKKQKJで返してくると考えるなら②57→5枚→KKQTJか、③5枚→KKQTJ→57と5枚→57KKQTJの二刀流
・こちらの5枚に対し相手の5枚→KKQKJ→残りを警戒するなら④KKQTJ→57→5枚か、②57→5枚→KKQTJ

と出すのが良いと思われます。



では次に、KKQTJではなく別の数の場合はどうなるでしょうか。先ほどのKKQTJに代わる数を、ここでは便宜的に強い5枚と表し、KKQTJより小さい数と考えることにします。

①5枚→強い5枚→57
②57→5枚→強い5枚
③5枚→強い5枚→57と、5枚→57→強い5枚の二刀流
④強い5枚→57→5枚
(最初KKQTJだけでいいかと思ったけど、文章量が少ないと思い後で追加したので、こちらは画像はないです)

ではこの場合も先ほどと同様、基本的には強い5枚→57→5枚と出すのが良いのでしょうか?
実はこの場合においてはそうとはなりません。
それは、先ほどは先にKKQTJを出すことで相手のKKQTJを防ぐことが出来たのに対し、この場合の強い5枚は先に出してもKKQTJを防ぐことが出来ないという大きな違いがあるからです。
KKQTJは5枚10桁の中でも数がバラけていて揃いやすいのに強く、5枚出しに対して最も警戒しなければいけない数です。
それ以外については、主な考えは先ほどと殆ど同じです。

そのためこの場合においては、
・相手が強い5枚超の札を持っていないと考えるなら④強い5枚→57→5枚
 (ここがKKQTJの時と違い、基本的な戦法ではない)
・相手のカマトトを期待する場合は③5枚→強い5枚→57と、5枚→57&強い5枚の二刀流
・こちらの5枚に対し相手が1手目で強い数で返してくると考えるなら②57→5枚→強い5枚か、③5枚→強い5枚→57と5枚→57→強い5枚の二刀流
・こちらの5枚に対し相手の5枚→強い5枚超→残りを警戒するなら④強い5枚→57→5枚か、②57→5枚→強い5枚

と出すのが良いと思われます。



考えるきっかけはささらさんの5枚二刀流戦術の記事でしたが、5枚10桁に57を組み合わせた二刀流数も戦略として有効であることがわかりました。

以上、5枚、5枚、グロタンカットの出す順番についてでした。

明日ははちさんの最大素数大富豪合成数についてです。とんでもない数の合成数が出てきそうで気になりますね。

呪文を使った新しい遊び方

 

この記事は素数大富豪 Advent Calendar 2020 - Adventarの3日目の記事です。昨日はOTTYさんの初心者と対戦するときに気をつけていること、気をつけたいこと - 素数大富豪が8121013倍強くなりたいでした。初心者がまた来たくなるような場の提供を心掛けたいですね。

 


素数大富豪TOPでは、CPUと素数大富豪を対戦することができます。
その中でも「ver.4☆pro☆」には「呪文」という機能があり、対戦した後に表示される「呪文」を入力すると、その対戦した時と同じ手札で対戦することがます。

ここでは、この機能を使って新しい遊び方を紹介したいと思います。

この呪文は半角英数字と記号で表現されているのですが、実は適当に入力しても再現してくれます。
ではこれを使って、色々なものと対戦したいと思います。


設定は好きな設定で構いませんが、今回は初期設定のままで戦っていきます。


まず初めに、呪文に「https://www.shogi.or.jp/player/pro/307.html」を入れて対戦してみます。
これは、日本将棋連盟の藤井総太二冠のデータベースのページになります。

そうです。この呪文を使えば、藤井総太二冠と疑似的に素数大富豪で戦うことができるんです。

ちなみに藤井総太二冠の棋士番号は307で、素数になっています。
いったいどんな対戦になるのでしょうか。
ではさっそく対戦してみましょう。

先ほどのアドレスをコピーし、呪文のところに貼り付けたあと、再現ボタンを押すと対戦がはじまります。

 

f:id:mamo0283:20201202224501j:plain

絵札3枚にジョーカーが1枚とまずまずの手札。


ジョーカーをKにすれば、95KTTJ→65123と出せるので、95KTTJから出してみます。

f:id:mamo0283:20201202225317j:plain


パスしてくれたので、65123を出して上がります。

f:id:mamo0283:20201202225349j:plain
見事藤井総太二冠に勝つことが出来ました。


今度は、先手後手を入れ替えて対戦してみます。
今度は自分は後手番なので、このまま再現ボタンを押せば、先ほどの対戦の手番と手札が入れ替わった状態で対戦することが出来ます。

f:id:mamo0283:20201202225434j:plain

 

f:id:mamo0283:20201202225530j:plain

初手KTJを出してきました。
ここでJをドローできればKKJで返せるのですが・・・

f:id:mamo0283:20201202225600j:plain

4でした。カマトトもできないのでパスします。

 

f:id:mamo0283:20201202225625j:plain
8枚出しで上がられてしまいました。
こんな数知ってるなんてさすが藤井総太二冠ですね。

 

 

 

では次に、警視庁と対戦したいと思います。

リアルに戦ったら逮捕されてしまいますが、素数大富豪で戦う分には逮捕されません。
警視庁のホームページは「https://www.keishicho.metro.tokyo.jp/」です。
ではさっそく対戦してみましょう。

f:id:mamo0283:20201202225713j:plain

KKJとジョーカーがありかなり良い手札。64A→KKJと出していきます。

 

f:id:mamo0283:20201202230852j:plain

64Aに対してQ89で返してきたので、予定通りKKJで返します。

 

f:id:mamo0283:20201202231051j:plain

 

ジョーカーを使い、知ってる5枚出しを組んで上がります。

f:id:mamo0283:20201202231121j:plainとりあえず先手番は勝つことが出来ました。


 続いて後手番。

f:id:mamo0283:20201202231453j:plain

絵札2枚と厳しい手札。

 

f:id:mamo0283:20201202231619j:plain

初手KKJを出されてしまい、どうしようもできないのでパス。

 

f:id:mamo0283:20201202231719j:plain

グロタンカット後・・・

 

f:id:mamo0283:20201202231746j:plain

6枚出しで上がられてしまいました。

1勝1敗。何とか警視庁と互角に戦うことが出来ました。

 

 

 

では最後に織田信長と対戦します。
今度は、ホームページではなく呪文に直接名前を入力します。


ここで注意しなければならないことが「全角や半角カナは使えない」ことです。
織田信長の場合は、「oda nobunaga」とアルファベットで入れる必要があります。


もう一つ注意しなければならないことが、ある程度の長さが必要なことです。
文字数が短くても対戦はできるのですが、短いと先手の手札が「111222333・・」、後手の手札が「444555666・・・」のように偏りが出てしまいます。

この状態を避けるため、文字を長くします。

文字数の目安は、呪文の枠以上の長さにすることです。


文字数を長くするため、今回は「oda nobunaga 12sai 7kagetsu」と入れます。

 

それでは対戦していきます。

f:id:mamo0283:20201202232425j:plain

ジョーカー1枚と絵札が2枚。ジョーカーはあるものの厳しい手札。

 

全出しすると長くなって記事を書くのが大変なので6枚9桁では返されそうな気もするけど、863QTJ→77323と出すことにします。

f:id:mamo0283:20201202233645j:plain

 6KQQJKで返されました。どうすることもできないのでパスします。

 

f:id:mamo0283:20201202234202j:plain

5枚出しで上がられてしましました。

 

続いて後手番。

f:id:mamo0283:20201202234354j:plain

ジョーカーと絵札が4枚あり、なかなかいい手札。

 

f:id:mamo0283:20201202234406j:plain

T7。2枚出しをされました。

 

ジョーカーをAとして使えばKQは出せますが、残りの6,6,9,J,Qで組める素数がわからないのでQKで返しますが、その前にいったんドロー。

f:id:mamo0283:20201202234418j:plain

Tを引きました。悪くはないけど手札が偶数多め。

 

KQは難しいので、とりあえずQKで返します。

f:id:mamo0283:20201202234451j:plain

KQやKKはなかったようで、手番が回ってきました。

 

手札が10枚なので無難に5枚→5枚戦法でいきます。

66529→4QKTJで組めたので、66529を出します。

f:id:mamo0283:20201202234431j:plain

返されましたが4QKTJより小さいので・・・

 

f:id:mamo0283:20201202234506j:plain

予定通り4QKTJを出して上がります。

リアルに戦ったら間違いなく斬り殺される相手でしたが、素数大富豪ではなんとか1勝1敗に持ち込むことが出来ました。

 

 

 

このように、呪文に対戦したい人の氏名やアドレスを入れることによって、CPUとの対戦がいつもと少し違った形で楽しむことが出来ます。

皆さんも色々な呪文を探して、普段対戦できない相手との対戦を楽しんでみてください。

明日はnishimuraさんの代打ちの感想などです。マスプライム杯の 裏話が聞けそうですね。