みをつくしのひとりよがり

2022/08/10にブログ名を変えました.仕事や生活に役立ちそうな(実際に役立つかは別として)数学・物理ネタをつらつらと書いていこうと思ってます.

Mathler攻略法

年末も差し迫ったところで,書きかけてたネタを落としておきます.Wordleの算数版とも言える Mathlerについてです.与えられた答えの数となるように,6つのマス目に数字と四則演算子( + \ - \ \times \ \div)を入れていくというパズルゲームです.1日1問出されます.

Mathler画面

これは少し余談ですが,Wordleもですが通算の成績が HTTP Cookieで管理されているようです.なので,ブラウザの Cookieをクリアしたり,別のブラウザに変えたりすると,またスコアがゼロスタートになってしまいます.
先日,通算 200回のチャレンジとなり,その成績は以下のようになっています.これも余談ですが,このブログもしれっと 200投稿を超えてました.

だいぶコツを掴んだこともあり,ほぼ3回目までで解けるようになりました.今回は,この「コツ」をいろいろと書いてみたいと思います.

200回の成績

まずは当たり前なことから整理を

以降,一番左のマスを「1マス目」と呼び,順に2マス目,3マス目...とし,一番右のマスを6マス目と呼ぶことにします.

  1. 1マス目と6マス目には,演算子は入りません.
  2. 演算子は連続しません.

ということを考えると,演算子が入るパターンがある程度限られてきます*1
数字が入るマスを  N演算子が入るマスを  \bigodotで表すことにすると,

ここまできて気づくと思いますが,演算子を3つ以上入れることはできません.上の 1.より2マス目〜5マス目の4マスにしか演算子ははいることができず,2.の連続できない条件を満たす組合せを考えるだけです.上のパターンは,それを具体的に書き出しただけのことです.

ここから攻略法の話に

まず問題の傾向として,答えとなる数はおおむね 0〜100程度までの数が与えられます.たまに,100〜150ぐらいまでの数が与えられることもあります.ただ過去に負の数と 0が 1度ずつ出てきたことがありました.そのときは,まだ攻略法も確立できていなかったので焦りました(笑).

もっとも多いパターンは

経験則になりますが, NN \bigodot N \bigodot Nのパターンが多いように感じています.なので,1回目のチャレンジは,この形で攻めます.そして,その攻め方が最大のポイントになるのですが,以下のように攻めます.

答えとなる数が 0〜50程度のときは  NN \div N - Nの形とし,
50〜100程度のときは  NN \times N + Nとする.

演算子の組合せとして,「値が小さくなる演算子の組( - \div)」と「値が大きなる演算子の組( + \times)」に分けておき,「小さい数のときは値が小さくなる演算子で固め,大きい数のときは値が大きくなる演算子で固める.」ということです.

数字の選び方

数字については,使う候補(使わない候補)を絞り込むために, Nに入れる数はなるだけ重複しないようにします.これはごく自然なことだと思います.これも感覚的なものですが,1回目で数字に「0」を選ぶことはまずないです.
あと,これはなかなか難しいことかもしれませんが,「連続する数を選ぶ」「奇数だけを選ぶ」「偶数だけを選ぶ」というのも,あとの候補を絞る手段として有効だと考えています.
最後の加減する数が 1ケタとなるので,前の乗除の計算はある程度近い数字に持ってこないといけません.となると,ある程度数字は決まってきます.あと,最後に加減をする 1ケタの数字は「8」か「9」になることが多いように感じています.

1回目が外れたら

数字も演算子も使う使わないが絞り込まれてくるので,それで考えていきます.特に,演算子の位置によって組立て(パターンの形自体も変わることを含め)が変わるので,その辺りは臨機応変にしないといけません.ただ,乗除の演算子が正解していたら,基本的に後の加減は逆の演算子を考えてみるようにしています.
以降ではいくつか具体例を出しながら,いままでにどのような考え方をしたかを書いてみようと思います.

具体例

具体例1) 定石どおり:答えが26
具体例1) 答えが26
  1. 答えとなる数が 0〜50にある数字なので, NN \div N - Nで考えます.後で 1ケタの数を引くので,前の割り算の結果は 27〜35となるように選びます.軽く挙げてみると, 27 = 54 \div 2, \ 81 \div 3 28 = 56 \div 2, \  84 \div 3 29 = 58 \div 2, \  87 \div 3のようになります.これに,後ろで引く数との組合せで,なるべく数字がかぶらないものを選択します.このときは, 28 = 84 \div 3を選びました.
  2. 1回目で,乗除の演算子と数字も 3つ該当することがわかりました.この時点で,後の加減の演算子 -にします.そして,その引く数となる 1ケタの数を候補として残ったうちの「8と4」で考えます(「2」は位置が異なることがわかっているので入らない).とすると,割り算の結果は, 26 - 4 = 22 26 - 8 = 18かということになります.
  3. ところで,割り算の結果が 22になるというのは, 44 \div 2, 66 \div 3, 88 \div 4との組合せを考えると,3つの数字がいずれかが入れないことになるので,NGとなります.
  4. 同様に,割り算の結果が 18となるような組合せを考えてみます.下1ケタが 8となっているので, N2 \div 4, N4 \div 2の形に絞り込まれます.あとは逆算をして, 72 \div 4 = 18という答えを当てはめています.
具体例2) 定石からの変形:答えが 15
具体例2) 答えが15
  1. 1回目は先ほどと同様に, NN \div N - Nで考えます.このときは,何を思ったのか  96 \div 6というかぶる数字を選んでしまっています.これは失敗ですね.ただ,減算(-)を使うことはわかり,しかもその場所が違うという情報も得られました.
  2. となると,2回目で減算の演算子の位置を考え直さないといけません.答えが 15と小さい数でもあるので「○-△」的な構図を考えることにしました.候補には,「100-85」といった式も含まれてきます.ただそれでは 3回目に向けてのヒントが少なくなってしまうので,何かしらの演算子もう一つを含めておきたいところです.ここでは乗算を入れることを考えました. N \times 1は意味をなさない式ですし,引かれる数(○-△の○の方)の十の位に 1を持ってくることはできません.そこで,「31-16」の形で式を入れました.
  3. 減算も乗算も演算子の位置が異なることがわかりました.また,「8」の入ることのできる位置と合わせて  8 \times N - NNとなることが確定しました.だいぶ絞り込まれてきました.そして, 8 \times 7 - 41, \ 8 \times 4 - 17の二択になりました.
具体例3) 大きな数:答えが 135
具体例3) 答えが135
  1. たまにこういう大きい数字が出てきます.答えとなる数が 50よりも大きいので, NN \times N + Nで考えます.前の掛け算の結果が 126〜134となるような組合せを考えます.このときは, 42 \times 3 + 9と考えました.
  2. 乗除の演算子と 2つの数字の位置までが確定しました.特に,後の引く数が確定したのはありがたいです.あとは,前の掛け算が  144 = N2 \times Nとなるような組合せを探すだけです.
具体例4) 九九で出てくる数:答えが 56
具体例4) 答えが56
  1. 1回目は定石どおり, NN \times N + Nで考えます.乗算の場所が違うという情報が得られました.上の具体例2)のようなパターンも含まれてきそうですが,1マス目が「1」なので,そのパターンは除外されます.
  2. となると, 1N \bigodot N \times 8の形で, \bigodotには減算か除算が入ることになります.ただ,1マス目が「1」で,後ろが 8の段のかけ算になっていることを考えると,減算の記号が入ることはできないことがわかります.となれば,あとは前半の除算が「7」となるような組合せを見つけるまでとなります.

九九に出てくるような数字のときには,乗除だけの式になることがときどきあります.


こうやって攻略法を練っても,たまに 4回目ぐらいまで行ってしまうこともあります.特に,加減のみが答えとなるときは,最後数字を入れ替えるだけといったところで手数を踏まされることがあります.ただ,だいぶ絞り込みはできるパズルゲームですし,Mathlerをするようになってから,ちょっと計算の感覚も戻ってきた(ふだんが鈍りすぎてるだけ...)ようにも感じています.
2,3分程度でできるとは思うので,こういう頭の体操はおすすめしたいです.
それでは,みなさまよいお年を.

*1:重複組合せの数え上げみたいな感じですね.