概要

こんにちは。惰性慣性です

なんじゃそりゃ?
茶々入れすると元気になるタイプか?

知らな〜い


テンパズルって何じゃい!

ふむ。テンパズルは数字パズルの一種だな


数字パズル? ってことは、今回は個別パズルの紹介?

左様。アイキャッチ画像にも『個別パズル紹介』とあるとおり

あれ〜。個別パズル紹介は『パズル探訪シリーズ』の後にやる、とか何とか言ってなかったっけ?
☝記事『パズルの種類、多すぎ?(パズルの謎2)』(下記) 中の節『文章的パズル(文章題)の内訳』に含まれる小節『数学・論理学的パズル』の箇所に記述されています

ま、まあ、世の中こういうこともある、って感じでひとつ

初志貫徹せんかい!

これは厳しい。ぶっちゃけると、個別パズル紹介のほうが筆が進むというか

あっそ。なら、『パズル探訪シリーズ』はパス?
☝初志貫徹とか厳しい突っ込みをした割に軽すぎる反応?

無しにするつもりはないが、そのシリーズは調子が良いときにぼちぼち書こうかなと

そですか。まっ、全般的な話より個別の紹介のほうが面白そうだから、夢未的にもそれでいいかな、なんちて
☝惰性慣性オヤジが『パズル探訪シリーズ』を書く気をますます減退させそうな発言?

むむむ

テンパズルに戻るけど……

点パズルってことは点つなぎみたいな? でも数字パズルって言ったよね???


その点ではなく、10の英単語テン (TEN) のこと。テンパズル (Ten Puzzle) 以外に、メイクテン(Make Ten) という呼び名もある



ど、どうした? 唐突に!

英語のテンか……。英語には暗い思い出しかない……

英語は鬼門じゃったか。これは失礼をば

トラウマ発動、ってほどじゃないけど、それは置いといて!

お、おう……

とにかく10のことなんだから、数字が10個ある、みたいな?


そう思うのが自然かもしれんが、伝統的に数字は4個だ


なら4パズルでしょ! 10は関係ないじゃん!

10は数字の個数ではなく、計算結果の指定値なんだな

計算結果とな?

テンパズルとは、ランダムに4つの数字が与えられたとき、四則演算を使って10を作れ、というパズルだ


四則演算って、+-×÷のことだよね?

そのとおり

なんか素朴なパズル

まあそうかもな。ちょっとした暇つぶし用と言えるだろう

ルール説明だけだとイメージ湧きにくいんで、具体例プリーズ

了解だ。例えば1,2,3,4が与えられた場合、1+2+3+4とすれば10になる。この例では足し算だけで済んでいるので割と簡単。だが、1,1,2,5の場合だと、1×1×2×5のように掛け算を使ったり


むむっ。例を見たら、なんか面倒くさい気がしてきた

そうかい。確かに、与えられた数字によっては、10にする計算方法を見つけるのが結構大変なこともある

突然閃いたんだけど、問題が1234のとき、1×2×3+4でも10になるんでは?


おお、素晴らしい。別解を見つけたようだな

フッ。当然

すぐ調子に乗る奴。なお、1125の場合も、2×5+1-1といった別解があるな


あれっ。それって、1125の順番を変えてるけど、そんなことしていいの?

伝統的なルールでは、数字の順番は好きに変えてよい。また、(5+1-1)×2のように括弧を付けるのも許される。とにかく、色々やっていいから何とか10を作る、ってのが至上ミッション


何がなんでも10を目指す、と

左様。と思ったが、縛りが全く無いわけではないな

今までの話を聞いてると、縛りなんてあるんかいな?

確か、数字を余らせるのは駄目だったはず。例えば、2357だと、2×5で10になるが、それだと3,7が余ってしまう。或いは3+7でも10になるが、今度は2,5が余ってしまう。てな感じで、計算に使われない余り数字が出るのは許されなかったと思う


なるほど。4つの数字を全部使わないと駄目、ってのは分かった

で、その例題の2357は、どうやれば10になるんだっけ?

先ほど素早く1234の別解を見つけた頭脳で考えてみるとよい

任せて。そんなのちょちょいのちょいっと……
……
……

……はて?

……急に話の続きを聴きたくなったんで、この問題はどうでもいいや

……まあいい。ちなみにだが、(7-3)÷2×5といった解があるぞ

そ、そんなん分かってっし! てか、1125なんて例があったけど、4つの数字の中には同じのがあってもいいんだ

ありだな。何しろ4つの数字はランダムに選ばれるわけで

それから、どんなときでも10にできるんだっけ?

その手の議論は考察のところで述べるつもりだったんだが……

けちくさいこと言わんと、ちょびっとだけ

……まあいいか。結論だけざっくり言うと、何をどうやっても10にできないケースがそれなりにある。典型例としては、0000など


そりゃ、0000はどうにもならない感じだねぇ。てゆっか、0もありなんだ

数字は0から9までの10種類。でもって重複もありゆえ、0000なんて極端なケースも含まれることに

そういえば、ルールとして明言されていないかもしれんが、数学的な一般論として0で割るのはNG。さらに微妙な感触だが、この記事では0÷0もNGとする

そんなわけわかんない割り算はしないっしょ。常識的に考えて

素直な気持ちで受け止めてくれて嬉しい

そんな喜ばれるような事でもないような……。それより、別な疑問があるんだけど

なんなりと
☝夢未さんが、「ナンプレ問題みたいなペンシルパズルでは、答えが無いとか二つ以上あるとかはダメダメな問題扱い」と言っていますね。この点に関する考察は、記事『人はなぜ自動プレイヤーを作りたがるのか』(下記) 中の節『具体的な動機1. パズルの答えがあるか知りたい』の箇所に記述されています


まあそうだな

なのにテンパズルでは、0000みたいに答えが無いヤツもあるし、1125や1234みたいに答えが幾つもある問題もあるじゃん。そんなん許されるん?

雑誌等を購入してペンシルパズルを楽しもうとするなら、個々の問題は有料だからなあ。問題作りにそれなりの気合を入れ、読者が満足できる品質を確保するのではないかな? その一つの側面として、解が丁度1つの問題のみ出題するお約束が確立しているのだと思われ

ほほ〜ん?

だがしかし、解が丁度1つの問題にこだわるのはペンシルパズルの世界だからで、パズル全般ではそうとも限らないぞ

そだっけ?

例えばトランプの一人遊びでは、コンピューターが普及する前、人間が物理トランプで遊んでいた頃から、問題はシャッフルして配置するだけ、すなわちランダム配置問題が通例だ。その結果、解がなかったり解が複数あったりする問題にしばしば遭遇する

有名なフリーセル (FreeCell) の場合、実はランダム初期配置でも解がない問題に出会う確率は極めて低い。換言すれば、ランダム初期配置にもかかわらず殆どの場合解けるトランプパズル。それがフリーセル

| 注: | 惰性慣性が持っていたカードです |

なお、フリーセルで行き詰まることがよくある人もいるだろう。まあワシもだが

しかし、それはほぼ間違いなく、読みが浅くて手の選択を誤り失敗しているだけで、深く読めば解があるケースが殆ど。コンピューターアプリを用いたプレイなら『戻る』ボタンや『最初からやり直し』ボタンがあるだろうから、その手のチート機能で何回もしつこく挑戦すると、遂には解けたりするし

このようにフリーセルの場合、解無しは稀なんだが、複数解は日常。ゴールに至る手順は複数あるのが通例だ

もう一つ有名なトランプ一人遊びのクロンダイク (Klondike) は様相が異なり、ランダム初期配置すると解がある問題に出会う確率はかなり低い。なので、解が無さそうな問題に遭遇しても、『この問題は駄目なヤツだったんで次の問題へGO』てな軽い感じ。たとえ解が無い問題で空回りしたとしても、まあ時間つぶしにはなっとるしな

| 注: | 惰性慣性が持っていたカードです |
☝惰性慣性が今後、フリーセルやクロンダイクの個別パズル紹介記事を執筆するかもしれません。が、それらの記事に出会う確率は……(笑)

以上の例からも分かるとおり、パズル問題は何でも解が丁度1つになるように出題調整されている、と決まっているわけではない


その顔、やめい!

ふう
(☝上記の表情&発言&ポーズで発散して復活?)

仕方ない奴だ。要するに何が言いたいかというと……

答えが丁度1つにこだわってるのはペンシルパズルとか一部の筋で、こだわらないタイプのパズルも色々ある、ってことでしょ?!

なんだ。分かっとるではないか

フッ。当然

てなわけで、テンパズルは『解が丁度一つ』にはこだわらないタイプ。そもそもランダムに選んだ4つの数字がそのまま問題だから、解が1つになるよう調整する段階が無いし

それは分かったんだけど、答えがない問題に出会ったらどうすんの?

0000のように一見して駄目と分かる場合もあるが、そうでないときは、ある程度、試行錯誤するんだろうな。で、どこまでしつこく考えるかの度合いは人によるが、どこかで諦める感じか
☝答えが見つけられない問題に遭遇し、本質的に解無しなのか追求が足りないだけなのか判然とせず、暫くモヤモヤした気持ちになる人もいるとかいないとか……


なんか適当。そんないい加減なやり方だと、本当に答えがないのか、実は答えがあるのに見つけそこなってるだけなのか、わかんないじゃん!

解がないことを厳密に示すのはかなり大変なんで、単にちょっとした暇つぶしでやるなら、そこまでシャカリキにはならんでよいかと

え〜、いい加減。そんなことでいいんかい?!

解がない問題の厳密な判定については、後ほど考察するつもりだが

ならよし (☜なんか偉そう)

あと、1125や1234みたいに答えが1つじゃない問題はどうすんの?

ちょっとした暇つぶしでやるなら、解が一つ見つかった段階でやめる人が多いと思うぞ。で、もっと時間つぶしをしたいなら、他にも解がないかさらに追及する的な?

え〜、やっぱいい加減。それだと、10にする方法を全部見つけたのかどうか、わかんないじゃん!
☝テンパズルでは10にする方法の網羅までは求められていないと思いますが、(性格的に?)網羅したい人もいることでしょう。とはいえ、夢未さんがそのようなタイプとは思われませんが……

解を網羅する方法についても、後ほど考察するつもりだが

ならよし (☜なんか偉そう)

えらそうな態度が鼻につくが、まあいい

ところで、+ー×÷で10を作りたいなら、数字の個数は4個限定じゃなくてもいいんでは?

ふむぬ。なぜ4個かについては、このパズルの由来が絡んでくる
由来

由来とな?

左様。とはいえ、趣味数サイトは由来や歴史的経緯等を追求するのが主眼ではないゆえ、ワシがちょろっと調べた程度の内容になるが

個人的には、数学っぽい話より由来とかのほうに興味があるんだけど

その期待を裏切るようで恐縮だが、テンパズルの由来については、あまりはっきりした情報がない

駄目じゃん!


単なる推察ですか、そうですか

しかしながら、個人的な経験ではあるものの、ワシが若かりし頃には既に口コミでこのパズルが広まっており、ワシも特定局面ではしばしば、このパズルで暇つぶしをしておった

なんと! おっちゃんが若い頃には既に広まっていた!

そのとおり。ワシが青少年の頃、このパズルで遊んだ局面とは、実は電車の中だ。電車の中では切符を持っているが、この切符に印刷されている4桁の通番を使って、テンパズル暇つぶしをしておった。テンパズルで使う数字が4個なのは、切符の通番が4桁だからという説が割と有力

タイトル画像はそれかい! でも、その当時、隣にアタシはいなかったはず。おっちゃんが若い頃なんて、まだ生まれてないし


タイトル画像は雰囲気ってことでな。登場人物を織り込んでおく的な。ワシ自身からして、テンパズルで遊んだ若い頃からこんなジジイの姿をしていたわけではないし

まっ、それはどうでもいいけど、電車に乗るならスマホタッチでしょ

ワシも今ではそうだが、ワシが若かりし頃はスマホがない。ガラケーすらまだないし、交通系ICカードもない。切符を買って乗るのが普通じゃった

スマホがない世界とか、シンジランナーイ

ワシも今ではかなりそうなってしまったが、若い頃は実際なかったわけでな

運賃支払いだけじゃなくて、電車で暇つぶしならスマホでしょ、とか思ったけど、スマホがないんじゃ暇つぶしも難儀

友人と雑談は今でもあるだろうが、単独行のときどうするか。新聞、漫画を含む雑誌、文庫本等を読むのは若い頃も既にあった。だがしかし、単独移動でそれらの手持ちすらないときは、切符しか頼るものがなく。勿論、外の景色を見るなんてのもあるが、通学や通勤だと毎日同じコースだからワンパターンだし
☝通勤通学の場合は昔から定期券利用ですので、当時から切符無し問題(?)が生じていますね……

一人で電車に乗っててスマホも雑誌もないとか、暇でしょうがないヤバい時間になりそう

今では切符を持ってないからそれも駄目だけど、小学生の頃とかは切符を買ってた気がする。切符を持ってるなら、他にすることがなくて仕方なく切符を見ることも、まあ、あるかも

なんだけど、切符に印刷されてる4桁の通番って何?

そこかい!

そこだね❤

仕方ないな。切符は交通系ICカードやスマホアプリ系が普及した今でも発売されているので、現在でも手に入る。で、例えばJRの大都市近郊区間乗車券を見ると、概ね下記のような感じだ

| 注: | この画像は実際の乗車券ではなく雰囲気を示す模造品です |

ほほ〜

図中の赤丸で示した箇所が、テンパズルのネタとして使われる4桁の通番だ

確かに4桁の番号が印刷されてるけど、これって何なの? 通番と言ってるけど

ワシは鉄道関係者ではないので詳細は不明だが、インターネットで軽く調べたところでは、自動券売機がそれぞれ4桁のカウンターを持っているらしい。で、発券する毎に1ずつ増やしていると。なお、4桁しかないゆえ、9999に達したら次は0000に戻る。要するにこの4桁は、各自動券売機の発券通番ってところかな

そですか。でもなんで、発券通番なんか印刷するようにしたんだろ?

テンパズルの由来を軽く調べたいだけのワシにとっては、4桁の通番が印刷されている事実だけ確認できれば十分で、その存在理由まで追求する気はない

ケチ〜

どうしても知りたければ自分で調べればよかろうて

それもやだ。面倒くさい
☝惰性慣性オヤジも夢未さんも鉄道マニアではないようで

……テンパズルが誕生した時期の話に戻るぞ

へぇへぇ。でも鉄道の切符となると、始まりは相当古いんじゃないの? 明治時代とか?

まあ、そうだろうな。明治時代の乗車券も今と同様な書面だったのか気になったので、『明治 鉄道 乗車券』といったキーワードで調べてみた。特に検索結果を画像モードにすると、ずらっと古い乗車券の画像が出てくる

で、結果は?

明治と指定しているのに大正時代の例が多数ヒットしたりするものの、細かく見ていくと、明治時代の乗車券にも4桁の通番はあったようだな

てことは、テンパズルの誕生も明治時代あたりってことで?

おそらく。ちなみに、ランダム4桁数字の情報源としては自動車のナンバープレートという別な有力見解もあるが、日本の街中でそこそこ自動車を見かけるようになったのは大正時代らしいので、鉄道切符のほうが古いな

ほんじゃ時期は明治時代頃として、発案者は誰なの?

分からん

え〜 (☜不満?)

鉄道切符の通番を見て何人かのパズル愛好家が思い付き、彼らから口コミで広まったものと推察される。都市伝説の発信源たる者をなかなか特定できないのと似たような状況ではないかな?

な〜ほ〜ね。ま、いっか
亜種

あれっ? タイトルには『はたまた24』ってあるけど、それは?


ころっと忘れとったが、24のほうか

高齢化に伴う物忘れヤバす。『はたまた24』じゃなくて『はたまた認知症』

随分な言われようだが、ワシは一向に構わん

それはもういいから『はたまた24』について早

ふむ。日本では10にするのが主流のようだが、海外では24かも知れん。いわゆるひとつの亜種だ

そうなんだ。24とか中途半端な感じ

日本を含む東アジアでは割と10進法一筋な感触ゆえ、まあ10を選ぶんだろうが、欧米だとそうとは限らん。例えば1ダースは12個だし、一日は24時間だし

それはそっか

でもって、ゴールが10から24に変わってるだけで、あとは同じなん?

英語版のウィキペディアに 24 (Puzzle)という記事があったのでちょっと見てみたところ、他にも微妙な違いがあるかもしれん

英語はやめろとあれほd。日本語ウィキを紹介するよ〜に

ワシとしてもできる限り日本語の記事を紹介したいんだが、英語版ウィキの 24 (Puzzle) から日本語記事のリンクを辿るとテンパズル記事になっており。そして、24 (Puzzle) 記事とテンパズル記事は記述内容が全く異なるゆえ、テンパズル記事で代用することができん

なんてこったい!

で、24 (Puzzle) 記事を読むと、1960年代頃から上海で広まった遊び方が紹介されている

東アジアなら10だけど欧米だと24みたいなことを言ってたくせに、24にするルールの発祥は上海!

すまんな。さらに記事を読むと、上海発祥の遊び方ではトランプのカードを使う。ジョーカー以外全部を使う亜流もあるらしいが、普通はジョーカーに加えて絵札も抜いて遊ぶ。シャッフルした山札から4枚を引いて、出てきた数4つを用い、テンパズルと同様なルールで24を目指す。スーツ(♠❤♦♣)は無視だな
トランプの札を使いますが、①絵札とジョーカーは除く、②スーツ(♠❤♦♣)は無視、③A(エース)は1とみなす、なので結局は下記のような遊び

| 注1: | 絵札(JQK)も含めて遊ぶ亜種もあるようです |
| 注2: | 絵札(JQK)も含める場合、絵札は全て10とみなす流儀や、Jは11、Qは12、Kは13とみなす流儀がある模様 |
| 注3: | デッキから4枚ではなく、5枚とって遊ぶ亜種もある感触 |
| 注4: | 複数人でプレーし、デッキから出た札を見て最初に24を作れた人が勝ち、という早押しクイズ的な遊び方もあるようです |

Aの札は1として扱うが、10の札は0とみなす云々の記述が無いゆえ、0から9までの数字ではなく、1から10までの数を使うものと考えられる。同じ数の札が4枚ずつあるから、2233のように数が重複する場合があるのも似ているぞ

微妙な違いは分かったけど、今の説明は上海発祥の遊びなんでしょ? 海外は常に24って言い切れないじゃん

おっしゃるとおり。なお、英語版ウィキペディアの 24 puzzle 解説には書いていないようだが、他言語版リンクを辿って中国語版ウィキペディアの『24点』解説を見にいくと、『中国だけでなく米国でも人気』との記述がある。なので米国でも、10 ではなく 24 なのかもしれん

あっそ (☜追求した割にそっけない反応?)

ところで、なんでわざわざ中国語版を選んだんですよ?

上海発祥とのことゆえ、中国語版の解説には力が入っているかもしれんと思ってな

そゆことね

で、実際、すごい解説だったん?

英語版よりは多少詳しく説明してある感じか。一般的な解説も少し多めだし、問題例や解答例なども結構あり……っと、そうじゃそうじゃ。中国語版解説の中にある例では 0 はなく 10 があったりするので、やはりトランプの 10 のカードは 10 として扱う模様

ふ〜ん (☜そんな細かい点には興味ありません的な?)

って、そうだ。中国語ページを見たってことは、おっちゃんは中国語も読める人だったん? すごいじゃん

だといいんだが、残念ながらさっぱり。Google翻訳等に頼っているのが実情

な〜んだ。グーグル翻訳かい!

考えてみたら、グーグル翻訳とか使えばアタシでも外国語のサイトとか読めるじゃん!

その事実に今頃気付くということは、外国語ウェブページを翻訳して読む気など、さらさらなかったんじゃろ?

そ、そんなことないし。で、グーグル翻訳ってどうやって使うんだっけ?

外国語ウェブページに行くと『翻訳しますか?』的なポップアップが出ることもあるが、常に出るとは限らんな……。使っているブラウザが Chrome なら、外国語ウェブページで右クリックすると、『日本語に翻訳』的なメニューが含まれているはず

う〜ん。パソコンのブラウザはクロームだった気がするけど、スマホのは何だったかなぁ?

翻訳したいページの URL をコピーした後、Google 翻訳といった翻訳サービスサイトに移って URL をペーストする方法もあるが
☝Google 翻訳の場合、翻訳ページに行くと既定の翻訳形態が『テキスト』になっているのではないかと。ですので、上の方にある翻訳形態切り替え的な箇所で、『ウェブサイト』をクリックする必要がありますね。あわせて、翻訳前後の言語指定も確認、変更を是非

なるほど。おっちゃんはグーグル推しなのかもしんないけど、他には翻訳サービスはないの? グーグル翻訳が一番いいんかいな?

他にワシが知っとるサイトとしては DeepL 翻訳などがあるものの。どれがいいかは一概には言えんな。無料サービスだと翻訳できる文字数の制限があることが多く、その制限文字数が違ったり。対応してくれる言語の範囲が違うこともあるし。翻訳品質の比較はさらに微妙な議論だ。詳しく知りたければ、『自動翻訳サイト おすすめ』等のキーワードで検索すればよかろうて

おすすめ比較記事とか読むの面倒くさい。頑張って読んでも、大抵は『だからどれよ?!』ってなるし

む……。昨今は ChatGPTや Geminiといった生成AI系の進化が著しいゆえ、きちんと翻訳したいなら、それらに頼むほうがよいかもしれん。生成AIのどれが良いかは自動翻訳サイトの比較よりさらに面倒な感じだが、まあとりあえず、『生成AI 自動翻訳 おすすめ』等で検索か? ただし、生成AI系でも無料版だと色々制限が付いていたりするけどな
☝自動翻訳もさることながら、生成AI系の画像自動生成品質が高度化しているので、そちらに頼って Stable Diffusion を殆ど使わなくなった惰性慣性オヤジ……。そのためにお高いグラボを買っていた気もしますが……

なんてこったい! 結局、ご利益を大きくしたければお賽銭はずめってことかい!

生成AI先生を神仏として崇めとる感じ?

似たようなもんでしょ。って、そうだ。おっちゃんは有料版の生成AIサービスを使ってんの?

それなりには

この金持ちオヤジがっ!

いやいや。ワシとてしがない年金生活者じゃが、嗜好品等を多少我慢すれば払える程度の金額だと思うぞ

嗜好品とか多少我慢するのが簡単にできたら苦労しないっちゅ〜の! ちくしょ〜。こうなったらチャット GPT 先生に『自動翻訳で一番おススメの生成AIはジェミニですか?』とか質問してやる〜

何とも天邪鬼というか嫌味というか……

話を戻すと、24 puzzle の英語版ウィキペディア解説には8個の外国語版リンクがあるんじゃが。このうち 10 を目指すのは日本語のテンパズル解説のみで、他の外国語解説――具体的には、中国語、ロシア語、ドイツ語、スペイン語、オランダ語、ベンガル語、タイ語――は全て 24 を目指す解説となっておった。証拠としては弱めかも知れんが、国際的には 24 を目指すタイプが多数派なのではないかと推察される

そっか。10 を目指す日本は少数派なのか〜

結局、24 がメインで日本だけ 10 って感じ?

そこまで断言はできんが……。他の類似パズルとしては、24 (Puzzle) 記事の参考情報リンクから、Krypto という遊びがあることも分かった。クリプトという日本語の解説記事もある。1963年に D. Yovich 先生により考案され、パーカーブラザーズ (Parker Brothers) 社から遊戯用カードが発売されたそうなので、アメリカだと 24 だけでなくこちらも多いのかも

アメリカにはクリプトもあるとな? クリプトでは目指す数字は何なの?

決まっていない

なんじゃ、そりゃ〜!

クリプトでは1から25までの数字が書かれたカードを使うんだが、シャッフルされた山札から1枚プラス5枚を引くそうな。でもって、特別枠として引いた1枚に書かれた数がゴールの数字となる。そして5枚のほうの数に四則を適用し、別枠1枚で決めたゴール数字を目指す。要するに、ゴール数字もランダムに決める感じ
クリプトも数字の札を使いますが、各数の書いてある札の枚数がやや複雑。これらを束ねた56枚からなるデッキが用いられます

デッキから札を引いて問題を決めますが、ゴールとなる数も札を引いて決めるのが特徴的

| 注1: | 上図は模式的なものですが、『クリプト カードゲーム』等のキーワードで検索すると、実際のカードの様子が分かるのではないかと。検索モードを画像にすると分かりやすいかも |
| 注2: | 検索結果を見ると、現在でも入手可能なのではないかと思われます。惰性慣性は持っていないようですが |

ゴール数字も毎回変わるとな? それは面倒な

でも、なんかわかりにくい。具体例プリーズ

ウィキペディアのクリプト説明記事にある例だと、計算に使う数字が1,3,7,1,8で、計算結果となるゴール数字が1なんてのがある。同記事内に、
(3-1+7)÷1ー8=1
といった回答例もあるが

数字を五つも使って計算するとか難儀。結果も10とか24とか固定じゃないし

左様。計算に使う数字が5個なのは、4個よりかなり面倒な状況を生むはず。なお、書かれている数の範囲は1から25なんだが、どの数が何枚入っているかはまちまち。例えば2は3枚あるから、2が3個まで重複することはありえる。一方、25は1枚しかないので、25が重複して出てくる局面はありえない

へぇへぇ。根本はテンパズルと同じだけど、細かい味付けが違うヤツが幾つかあるってことは分かりましたよ、と

でも、味付けが違うとテンパズルに比べて何が変わってくるんだろ?

その手の話題は、亜種考察の段で説明するつもりだ

後回しですか、そうですか
解法

さてさて、漸く趣味数的な内容を議論する段となった

お時間となりましたので本記事はこの辺で……

それはない。まずはテンパズルの解法から

やっぱ流せないか……

残当。で解法の話
☝普通、『残当』は『残念だが当然』の意味ですが。趣味数サイトで惰性慣性オヤジが言う場合、『お前さんには残念かもしれんが、ワシにとっては当然』という意味合いの場合が殆どと思われ(笑)

へぇへぇ。でもでも、解法っつっても、適当に色々試してみるだけでしょ

うむ。実は当たらずといえども遠からず。テンパズルの解法については、与えられた4つの数字から解の有無や解の数を求めるエレガントな方法、或いは特定の解、はたまた全解を迅速に導出する簡明な方法は知られていない模様。ではどうするかと言えば、可能な計算式を全て網羅的に試す

なんか難し気な言い方をしてるけど、それって要するに『しらみつぶし』

まあそうだな。てなわけで、まずは4つの数字に四則演算を施す計算式が何とおりになるか考えてみるぞ。実はかなりの数になるんだが

どうぞどうぞ。アタシは考えたくないけど、おっちゃんが考えた話を聞き流すだけならOK

最初は、どの四則演算を選ぶか以前に、計算手順のパターンを考えてみる。括弧を付けて計算の流れを定める段階だな

雰囲気としては、□を値、○を演算とするとき
(□○□)○□
なのか、或いは
□○(□○□)
なのか、といったような

そんな○や□が並んだもんを見せられてもね〜

各パターンについて、□のところに値をあてはめたり、○のところに四則演算をあてはめたり、ってことだ。例えば
(□○□)○□
というパターンがあるなら、3つある□に順に1, 2, 3を割り当て、2つある○に順に+, ×を割り当てると
(1+2)×3
となる

(1+2)×3みたいな式だったら、まだ分かるけど……

1, +, 2, ×, 3のように値や四則演算を決めても、計算順序というか括弧の付けかたを決めないと式が確定しないんじゃよ。実際、以下の2つは別な式で計算結果も違う。
(1+2)×3=9
1+(2×3)=7

ぐぬぬ。それはそうかもだけど、面倒くさ!

だもんで、(□○□)○□なのか□○(□○□)なのかといった計算順序パターンの見極めも必要になるわけでな。この段階は抽象的で分かりにくいかもしれんが、計算式の網羅を考える上で必要なステップだし。また、ここを過ぎれば話は割と簡単になるので持ちこたえてほしい

う〜ん。ま、最悪、聞き流せばいいか……
(☝それでいいのか、相方……)

でもって、直接的に括弧の付け方で考えると何だか抜け漏れが生じそうなので、ここでは等価な二分木 (Binary Tree) という図式を使って計算手順パターンを列挙していく

二分木とな? そんな聞いたことないモノを使われても、ますますわけわからんてゆっか、思わず寝ちゃいそう

まあまあ。二分木を検索するとAI先生が言葉による堅苦しい定義を語ってくれるが、ここでは図を見て雰囲気だけでも把握してくれればそれでよい

ぬぬぬ

が、その前に二分木を含む木構造 (Tree)という概念について、ちょっとした補足をしておきたい。木構造は数学でもグラフ理論といった分野に出てくるが、それ以上に計算機科学 (Computer Science)分野でデータ構造の一種として出てくることが多いようだ。他には構文木というのもあるが。木という字が含まれていることから分かるとおり、要素の繋がりかたが実際の木に似た形と言えんこともない。できるだけ現実の木に見えるように描くと、次のようになるはず

| 注1: | 各種の節 (node) を表す記号は惰性慣性が適当に決めたものです。それぞれの節について、標準的な記号は特に定められていない感触です |
| 注2: | また枝についても、ここでは最短経路的な線分を引いていますが、そう決まっているわけではなく、曲線や折れ線にする場合もありえます |

具体的な話が何もないから、何を表してる図なのか謎なんだけど

図中の節や枝が何を表すかは木構造の図を用いる利用局面によって違うので、図全体が具体的に何を表すかは、単に木構造と言っただけでは確かに謎なんだが……。ここでは図の形状だけに注目して欲しい

む〜ん。形だけ見ろってことなら……。かなりこじつけっぽいけど、木に見えないこともないか……

そうだろう。形が木っぽいから『木』構造と呼ぶし、木にちなんで根節 (root node) や葉節 (leaf node) といった用語もあるはずなんだが

根とか葉とか書いてあるのはそゆことか。で、何ですよ?

ところが計算機科学の分野では、下図のとおり、初心者にはちょっと謎な描画上の慣習がある模様

| 注: | この図では偶々、全ての葉節の段数が同じになっていますが、一般的には常にそうなるとは限りません。葉節の段数がばらけている例は後に出てきます |

逆さじゃん! 根の下に枝や葉があるとか変! その分野の人は逆さ吊りが好きなん?

その筋の人々が全て逆さ吊り愛好家かどうかは知らんが、なぜかこのように逆さ木として描くのが通例となっているようだ

なのでワシも通例に従い、以降は逆さ木的に描くこととしたい

権威に屈してる。🫵😆プギャ〜

それもあるが、二分木といった木構造の説明図はほぼ全て逆さ木状に描かれているようなのでな。天然の木のような向きで描くと、逆さ木に慣れているその筋の方々にはむしろ奇異に見えてしまう懸念がある。そこで逆さ木採用なんじゃよ

長いものに巻かれてる、とも言う。剰え、逆さに吊るされてる?w

……今回考えるのは、計算式を表す構文木に相当する二分木だ。上記の一般的すぎる木構造よりは多少、意味が限定されて具体化しているぞ

| 注1: | 二分木の一般的な定義では中間節の枝分かれは2以下とのことですが、ここでは四則演算に相当する中間節しかないので、(下向きの)枝分かれは常に2となります |
| 注2: | 本図の流儀では根節に本質的な情報がないのですが、何か最上部に付けないと落ち着かないので付けた模様です。根節の直下にある中間節を根と考えて、本図のような根節は考えない流儀が普通かもしれません |

右の図みたいに数字とか+-×÷とか入れてくれれば何となく意味がわかるけど、左のみたいに中が空だと、だから何って感じ

式の形のパターン数を見極めようとしているので、具体的な数や演算が入っていない左の図式が不可避

それから、右の図でも、上に書いてある2×3の式のほうがずっと簡単じゃん。なんでこんな大袈裟な図で表すんかい! 描くの大変でしょ!

数値や演算を捨象した式を普通に文字の並びで書くと□○□のようになるが、(□○□)○□や((□○□)○□)○□、はたまた(□○□)○(□○□)のように演算が増えてくると紛らわしくなりがちなんでな。大袈裟で描くのが大変かもしれんが、二分木として図的に描いたほうが、抜け漏れや重複を避けやすいだろうとの考え

図で描くのもなんだかな〜だけど、数や四則を□や○で置き換えた式も、確かにこれはひどいってゆ〜か随分。(□○□)○(□○□)とか、何かの暗号かい、って感じ

そうだろう、そうだろう。ってことで、□が1個の場合から順に、二分木を用いて式のパターンの数を考えていくぞ

| 注: | 対応する式は、図に似た書き方だと□ですが、文字変数(例えばa)を使って書くと a となります。変数単独で式なのですが、式であることを強調するために括弧を付けると (a) ですね。それでも式っぽくないですが |

まあ、その1種類しかないだろうけど。わざわざ図を描いて説明するほどの場合でもないのに、なんとも大きな図を描いたもんだ

そうかもしれんが、一応きちんとせねばな。次は演算対象の数値、すなわち▢が2個の場合だ

| 注: | 対応する式は、図に似た書き方だと□○□ですが、文字変数(例えばa,b)を使って書くと a○b となります。普通は+-×÷のように具体的な演算を書くところを抽象化して○にしているので、式に見えにくいですね…… |

さっきのよりはちょっと複雑だけど、これも図にするほどじゃない気がする。答えは1種類だし

そうかもしれんが、一応きちんとせねばな。次は演算対象の数値、すなわち▢が3個の場合だ (☜ 発言がワンパターン)

| 注: | □が2個の場合の考察と同様、◉の直下が□だと□1個の場合になってしまうので、□が2個以上の場合は常に◉の下は○です |

| 注: | 対応する式は (□○□)○□ および □○(□○□) となります。数値を変数で表すと (a○b)○c および a○(b○c) ですね |

場合分けが出てきてウザいけど、まあこんなもんか。結局は2種類だし。やっぱり図にするほどのもんじゃない……ってちょっと?!

はて?

□が3個なら○は2個ってさりげなく書いてるけど、んなこと誰が決めたんじゃい!

ああ、その点か。□が3個のケースに限らず、今回のような二分木では、○の数は常に□の数より1つだけ少なくなるぞ

なんだって?! だ・か・ら、そんな規則、誰が勝手に決めたっちゅ〜の!

誰かが決めたわけではなく、必然的に、というか数学的にそうなるんだが

ぐぬぬ……。数学的に……。聞きとうない言葉

ありがちな説明は下記のとおり


う〜ん。なんか騙されたような気がする説明なんだけど

今回の計算式パターンの考察には慣れていないだろうから、木構造的には完全に同様となるトーナメント戦の考察に置き換えて考えることもできる


トーナメント戦のパターンって、全然違う問題じゃん!

それはそうなんだが、図の形態は同様になるんでな。パターン数や○と□の数の関係といった数え上げの議論も同様になる

図の形は同じとか言ってるけど、線の形が違うし!

ワシが図の形態と言ったのは節と枝の繋がりかたという意味ゆえ、枝の表現法が最短経路的な線分なのか折れ線なのかは本質的なポイントではない

線の形は重要じゃないんなら、なんでわざわざ変えたんじゃい!

折れ線で書いたほうがトーナメント対戦の図っぽいではないか

たったそんだけの理由でアタシを混乱させてる?!


笑って誤魔化すなし。ってか、トーナメント戦の話だったら何か嬉しいんかい?!

トーナメント戦の問題設定で考えてみよう。その場合、N人が参加して一人の優勝者を決めるのだから、最後まで勝って笑うたった一人の優勝者の陰に、負けて退くN-1人の敗北者がいるわけだ。泣きながら甲子園の土を集める的な
☝優勝チームのメンバーも記念に土を集めるような気が……その場合は泣きながらではない?

それはそうだけど、だから何ですよ?

1回の試合で一人の敗北者が確定するゆえ、N-1人の敗北者を確定させるためにはN-1回の試合が必要だ

それはまあ、そうだろうけど……

つまり、どんなトーナメントパターンを考えたとしても試合○の数(=N-1)は参加者□の数(=N)より1だけ少ない。同様にして、どんな計算式パターンでも演算○の数は演算対象値□の数より1だけ少ない。OK?
| 注: | ○が□より常に1だけ少ないのは、今回、四則演算という二項演算だけを含む計算式を考えているからですね。符号を変える-(マイナス)のような単項演算等が入ってくると、話は違ってきます |

むむむ。そうなんだけど……。そうなんだろうけど、なんか変な気も……。トーナメント戦の話にすり替えてるから、そこが怪しいかもしれないし〜

トーナメント試合の数といえば、『頭の体操』を思い出すな


パズル本ってことは、ナンプレ問題集みたいな?

ナンプレ問題集といった今日良く見かけるパズル集は同種問題を集めたものだが、『頭の体操』は文章題パズル集なのでな。問題毎にタイプが異なるゆえ、次の問題に進む毎に頭のひねりかたを変える必要があり、深く楽しめたってことだ

あと、ベストセラーって。パズル本みたいな一部のマニア向けの本がそんなに売れるのかなぁ?

1966年に出版された第一集は250万部売れたらしいぞ


人気を博したので長期シリーズとなり、1966年の第一集以降40年に渡って続編が出版され、何と全23巻のロングセラー。シリーズ全体では1200万部だそうな

何と! 大ヒットしたラノベ並みの売上!

そんな大ヒットのパズル本を書いた多湖輝先生とは一体?

多湖先生の専門は心理学で、第一集出版当時は千葉大学の助教授だったはず。心理学の分野で、早期から水平思考といった発想の柔軟性を高める知的活動を重要視されておってな。今日ではこの方向性は一般化しているが、その嚆矢的な。で、頭を柔らかくすることの重要性啓発や具体的実践法に関する著作多数。『頭の体操』もその一環てな感じで、単なるパズルの問答だけの内容ではなく、発想力に関連した解説が色々付いているぞ

な、なるほど…… (☜長文説明の圧に押され?)

このように本来は心理学の先生なんだが、『頭の体操』シリーズの大ヒットによりパズルの大家として注目される状況になったようで、1990年代前後には『知恵で解く』タイプの難問クイズ系番組の監修をされたり。さらには『レイトン教授シリーズ』という難問クイズ系ゲームの監修もされている

レイトン教授シリーズはアタシもやったことある。その監修っすか

多湖先生は水平思考という発想法を特に重視されていた感触ゆえ、その効果により、今日言うところの『ウミガメのスープ』展開を加速したのではないか、とも推察される

多湖先生の賞賛話はもうお腹いっぱいなんで、その辺で

それより、トーナメント試合と頭の体操の繋がりが謎なんだけど?

トーナメント参加者数と試合数の関係を考える問題が『頭の体操』で紹介されていたことを思い出してな。しかも何と、第一集の第6問

単なるもの忘れオヤジかと思ってたけど、そんな昔のことを覚えてるとは……。でもでも、短期記憶と長期記憶は違うって言うし……

何をごちゃごちゃと……

何でもありませ〜ん

頭の体操シリーズに載ってた問題だってのは何となく覚えてたのかも知れないけど、第一集の第6問だってのは、実は後で確認したんでしょ?

ばれたか(笑

やっぱし! とはいえ、1966年に出た本を今でも持ってるとか、何とも物持ちがいいんでは?

残念ながらそれは違う。未成年時代の事ゆえ、当時の本は実家に置いておいたんだが、その後、いつの間にか紛失しておった

え〜。なら、どうやって第一集の第6問とか確認したん? どこかのサイトに解説とかが上がってる?

書籍の内容まで詳述している解説サイトは知らんが。頭の体操シリーズは人気作なんで、2000年前後にもシリーズ初期本の復刻版が出版されておってな。まあ、今となってはオリジナル版も復刻版も古書でしか入手できんと思うが

つまり、その頃に復刻版を買った、と

いや、買ってない。2000年頃は仕事が忙しかったんで、その当時は復刻版が出ていることすら知らんかった

え〜。ってことは、割と最近になって趣味数に目覚めてから古書を漁った、みたいな

いや、漁ってない。昨今はインターネット書籍通販の普及により、その昔に比べると古書漁りもずっと楽になっとるが、まあ、古書漁りは最後の手段と考えておる

この謎解き的な流れはイライラするんだけど! とっととネタバレするように!

すまぬすまぬ。謎解き的な流れを作る意図はなかったんだが。むしろお前さんがそのような質問応答の流れを作ったというか……

な〜んだ。キンドルで読んだんかい!

左様

第一集第6問の件はこの辺にしといて、その問題の解答はどんな感じだったん?

細かい表現は違っていたと思うが、本質的な考え方はワシの先程の解説と同様だったはず

ってことは、おっちゃんの説明を信じるしかない……のか……

ワシの説明は疑ってかかるくせに、多湖先生の説明なら無条件に受け入れるんかい?!

HAHAHA!

HAHAHA返し……

とはいうものの、○が□より1つ少なくなる点については、これにて一件落着、か

う〜ん。多湖先生の解説も同じだったとしても、なんか騙されてるような説明で嘘くさいんだよね〜。トーナメント戦のほうは信じるとしても、計算式パターンのほうは、図が同じとか言って勝手にトーナメント戦の話にすり替えただけだし……

お求めとあらば、もっと数学の証明っぽい説明の仕方もあるけどな

む……数学……証明……。授業中意識をなくしてた中高の暗い記憶が……

(☟夢未さんの数学嫌いに特有な感想を完全スルーしつつ)
まず、今回の四則演算パターンについて任意の二分木パターンを考え、その枝の数をE、演算対象値を表す葉節□の数をL、演算を表す中間節○の数をBとする。なお、最終計算結果を表す根節◉の数は、どのようなパターンでも常に1だ

うわっ。いかにも数学の証明って感じの出だし。意識が飛びそう……

惰性慣性
(☟夢未さんの数学嫌いに特有な不規則発言を完全スルーしつつ)
そして、枝の上端および下端と各種節との接続形態を考え、以下のように『全てのパターンにおいて常に成立する』2つの関係式を導く



頭がクラクラするぅ……



うっ。なんか吐き気が……

(☟夢未さんの数学嫌いに特有な反応を完全スルーしつつ)
このように1+2B=E、L+B=Eという2つの関係式が導かれるから、
1+2B=L+B
となる。移項して整理すればB=L-1が得られる。Bは○の数、Lは□の数ゆえ、『○や□の数、というか図のパターンを特定しなくても一般的に常に』○の数は□の数より1だけ小さいことが分かる。てなわけで証明完了 Q.E.D.

ぐはぁ……ばなな

惰性慣性
(☟いつもは嫌っている夢未さんのばなな顔を完全スルーしつつ)
なお、上記の証明っぽい説明では節と枝の接続形態、すなわち図の形状ルールのみを用いて結論を得ている。換言すれば、図の形のタイプだけで決まる結果ゆえ、節や枝に具体的に何を当てはめているかという利用局面には依存せずに成り立つ。そこで、今回の計算式パターン数え上げでも、トーナメント試合の組み方でも同様な性質が成立するのだな

何というか、グラフ理論教科書の最初の方に出てきそうな議論か
☝『○の数が□の数より常に1だけ少ない』という性質は、今回の計算式パターンでは『○の上に付く枝が1本で○の下に付く枝が2本』などと決まっているため導出されるものです。グラフ理論では節ではなく頂点 (vertex)、そして枝ではなく辺 (edge) と呼ぶことが多い模様ですが、一般のグラフでは頂点に接続する辺の数が任意のため、ここで述べた(特定パターン特化的な)性質は必ずしも成立しません。一般的な有向グラフで成立する類似の性質は、『有向グラフ 入次数 出次数 関係』などのキーワードで検索すると発見できるかと

すみません。疑ってたアタシが間違ってマシタ。もうそれでいいっす

惰性慣性
(☟夢未さんの数学嫌いが極まった反応を完全スルーしつつ)
そうか。分かってくれたならそれでよい
☝いやいや、絶対分かってない感じですよ。そんなゴリ押しでいいのでしょうか? 惰性慣性オヤジ!

ふぅ
(☝ばなな顔の表情&発言&ポーズ、および(ジャンピング?)土下座により発散して復活?)

では、□が4個の場合の計算式パターン数え上げに戻るとしよう


| 注: | 対応する式は ((□○□)○□)○□ および (□○(□○□))○□ となります。数値を変数で表すと ((a○b)○c)○d および (a○(b○c))○d ですね。次第に訳が分からない式になってまいりました |

| 注: | 対応する式は (□○□)○(□○□) となります。数値を変数で表すと (a○b)○(c○d) ですね |

| 注: | 対応する式は ○□((□○□)○□) および ○□(□○(□○□)) となります。数値を変数で表すと a○((b○c)○d) および a○(b○(c○d)) ですね |

| 注1: | 例によって対応する式は、 パターン1: ((□○□)○□)○□、パターン2: (□○(□○□))○□、 パターン3: (□○□)○(□○□)、パターン4: □○((□○□)○□)、 パターン5: □○(□○(□○□)) となります |
| 注2: | よく見ると、以下のペアは左右反転形になっています。パターン1⇔パターン5、パターン2⇔パターン4 |
| 注3: | さらに、パターン3には相方がいませんが、これは左右対称形で、反転しても同じですね |

えっと、テンパズルは□4つだから、式のパターンは5種類なのか〜。まっ、このくらいだったら、慎重に考えればきちんと全部、並べられるような気も……

そうかもしれんな。さて、と。亜種のクリプト (Krypto) では数が5個の問題を扱うので、□が5個の場合まで考えておくか。抜け漏れや重複なしに計算式パターンを列挙する方法の雰囲気は概ね分かったと思うので、5個の場合は結果だけ列挙するとしよう

| 注1: | くどい感じですが対応する式は、 ①: (((□○□)○□)○□)○□、②: ((□○(□○□))○□)○□、 ③: ((□○□)○(□○□))○□、④: (□○((□○□)○□))○□、 ⑤: (□○(□○(□○□)))○□、⑥: ((□○□)○□)○(□○□)、 ⑦: (□○(□○□))○(□○□)、⑧: (□○□)○((□○□)○□)、 ⑨: (□○□)○(□○(□○□))、⑩: □○(((□○□)○□)○□)、 ⑪: □○((□○(□○□))○□)、⑫: □○((□○□)○(□○□))、 ⑬: □○(□○((□○□)○□)、⑭: □○(□○(□○(□○□))) となります |
| 注2: | よく見ると、以下のペアは左右反転形だと分かりますね。①⇔⑭、②⇔⑬、③⇔⑫、④⇔⑪、⑤⇔⑩、⑥⇔⑨、⑦⇔⑧ |
| 注3: | さらに、□が5個の場合、左右対称なパターンはないことも分かります |

げげげ。□が5個だと14種類もあるのか。これはきちんとやらないともう駄目、かもしんない……

まあな。具体的にパターンを列挙するのはここまでにしておくが、□の数が増えたときのパターン数のみをもう少し示すと下記のようになる
| □の数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | … |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ○の数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | … |
| パターン数 | 1 | 1 | 2 | 5 | 14 | 42 | 132 | 429 | 1,430 | 4,862 | … |

○の数が□の数よりいつも1つ小さくなるのは、まあいいとして……

なんだかまだ納得していない者がおるようじゃが……

そんなことより!

む?

□の数が増えるとパターンの数がどんどんヤバくなるんだけど!

数がハゲしく大きくなるのが日常なんだ……

ハゲしく同意。それはそれとして、このパターン数の系列は結構古くから研究されており、カタラン数 (Catalan number) と呼ばれているぞ
| □の数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | … |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ○の数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | … |
| パターン数 (カタラン数) | 1 | 1 | 2 | 5 | 14 | 42 | 132 | 429 | 1,430 | 4,862 | … |

数が沢山並んでるのに、カタラン数とはこれいかに?

む?

カタラン『数』とか言われると、なんか一つの数だと思っちゃうじゃん。常識的に考えて

ああ、その点か。正確にはカタラン関数、或いはカタラン数列などと呼ぶべきなんだろうが、慣用的にカタラン数と呼ばれとるので堪忍して欲しい

いや、許せん! てか、数学ってもの自体がケシカラン!

まあまあ。今回はカタラン数については言及のみで深入りせんので、ここは穏便にひとつ

今回、カタラン数は語らん♥

って、寒っ!!!

顔芸、というか妙な感じに自己完結しとるな

……早く話を進めるように

だな。計算式のパターンについてかなり手間取ったが、後は□や○のところに値や四則演算を当てはめるだけなんで、話は単純。中高で習う場合の数というか順列・組合せというか

そうは言うがな、おっちゃん。アタシにとってそいつらは強力な眠剤

□が1つの場合から順に考えていくので、何とか雰囲気は分かるじゃろ

そうだ。眠くなったら素直に居眠りしちゃえばいいんじゃん♥

(☟フリーダム過ぎる相方を放置しつつ)
……最初に、□つまり値が1つの場合だが

どぞ〜 (☜安直な道を悟りお気楽モード?)

□に1や2と言った特定の数値を当てはめるといきなり個別各論になってしまうので、□の値が色々変わるときの傾向を把握しにくい。そこでこの段階では、□に任意の整数を表す変数を当てはめ、ある程度、大局的な様子をうかがうことにする。使う変数は、とりあえず a としよう

変数とかウザいけど、ま、いっか

とはいえ、□1個のときは演算の〇がないため、四則演算を選択して当てはめる余地がない。さらに式のパターンも1とおりゆえ、やはり選べないしな。結局、ランダムに与えられる値 a がそのまま最終結果となる。強いて言えば、計算式(?)はこの1とおり

解答者は何もすることがないから、この場合はパズルとは言えんな

□一つだけとか、簡単にしすぎですぅ

それはそう。では次は□が2つの場合だ。□に当てはめる変数は a, b とする

へぇへぇ (☜テンションが落ち着いてきた?)

ここで、解答者が好きにできる選択肢を考えてみよう。まず式のパターンだが、□2個の場合は1とおりしかないので選ぶ余地はない。が、値を設定する□は2個なので、順番は自由とのルールにより、a, b または b, a の順で値を表す文字変数2個を当てはめることができる。つまり2とおり。更に、演算を設定する○が1つあるので、ここに4種類ある四則演算 (+-×÷) のいずれかを選んで当てはめることができる。すなわち4とおり。結局、選べる計算式の場合の数は1×2×4で8とおり


得られた8とおりを具体的に列挙すると下記のごとし
| 通番 | 式パターン | 四則 | 変数順 | 計算式 | グループ番号 |
|---|---|---|---|---|---|
| 1 | □○□ | + | a, b | a+b | 1 |
| 2 | b, a | b+a | 1 | ||
| 3 | ー | a, b | aーb | 2 | |
| 4 | b, a | bーa | 3 | ||
| 5 | × | a, b | a×b | 4 | |
| 6 | b, a | b×a | 4 | ||
| 7 | ÷ | a, b | a÷b | 5 | |
| 8 | b, a | b÷a | 6 |

まあ大体はそりゃそうだって表だけど、最後のグループ番号欄は何?

知っているとは思うが、足し算(加法)と掛け算(乗法)では下記の交換法則が成り立つ。
a+b=b+a
a×b=b×a
こういった常に成立する法則で同じとみなせる計算式をグループ化した。aやbに実際の数を代入して計算するとき、グループ内のどれか1つを計算すれば事足りるからな。式の見た目では8とおりだったが、このようにグループ化してみると、実質的には6とおりだと分かる

交換法則とか知ってっし (☜怪しげ)

それは良かった(☜棒読み)。先程の表だと、法則により等しくなる式のグループが分かりにくいから、グループでまとめた表も出しておくとしよう
| G通番 | 標準形 | G内通番 | 計算式 | 備考 |
|---|---|---|---|---|
| 1 | a+b | 1 | a+b | |
| 2 | b+a | |||
| 2 | a-b | 1 | a-b | |
| 3 | -a+b | 1 | b-a | |
| 4 | a×b | 1 | a×b | |
| 2 | b×a | |||
| 5 | a÷b | 1 | a÷b | |
| 6 | b÷a | 1 | b÷a |
| 注1: | G通番はグループの通番という意味です |
| 注2: | 標準形とは、グループに所属するそれぞれの計算式を交換法則といったルールで変形していって、幾つかの考え方に基づき『標準的な』式の形にしたものです。勿論、式の変形は等価な式となる範囲で行います。計算式を変形していって標準形に直したときに同じになるなら、同じグループに属していると考えます。式の変形が不十分で『不完全な』標準形だと、実は等価な式なのに単一の標準形にすることができず、一つのグループにまとめられないことがありえます。上記の例は単純なので、そのようなグループ化不足はないはずですが…… |
| 注3: | G内通番はグループ毎のもので、そのグループに所属する計算式に1から順に割り振っている通番です |

交換法則がどうのとか面倒くさいこと言ってるけど……。法則を使えるところが2つあって数が8から6に減ってるだけ……。大して変わらないじゃん

まあな。□が2個のときは8から6への25%減で削減効果は今一。なんだが、□が増えると、法則が増えたり法則の組み合わせが生じたりするんで、削減の比率が増えるぞ。ってことで、□が3つの場合に進むとしよう

どうぞどうぞ

□2個のときと同様、解答者が選べるポイントを考える。まず式のパターンだが、□3個の場合は2とおりある。どちらのパターン中にも□が3つあるので、値を表す文字a, b, cのあてはめかたは3個を全て使う順列の数となる。すなわち3!=6とおり。また、〇も2個に増えているので、それぞれに四則演算のいずれかを選んで当てはめることができる。4とおりの○が2箇所に増えたから、4×4=16とおりだな

うだうだ言ってないで□が3つのときの結論をとっとと!


ちと落ち着け。選べる計算式の場合の数は『式パターン数』×『値(の変数)当てはめかた数』×『四則当てはめかた数』ゆえ、具体的な値は2×6×16で192とおり。例によって得られた192とおりの計算式を列挙すると、下記の表となる
| 通番 | 式パターン | 四則 | 変数順 | 計算式 | グループ番号 |
|---|---|---|---|---|---|
| 1 | □○(□○□) | +, + | a, b, c | a+(b+c) | 1 |
| 2 | a, c, b | a+(c+b) | 1 | ||
| 3 | b, a, c | b+(a+c) | 1 | ||
| 4 | b, c, a | b+(c+a) | 1 | ||
| 5 | c, a, b | c+(a+b) | 1 | ||
| 6 | c, b, a | c+(b+a) | 1 | ||
| 7 | +, - | a, b, c | a+(b-c) | 2 | |
| 8 | a, c, b | a+(c-b) | 3 | ||
| 9 | b, a, c | b+(a-c) | 2 | ||
| 10 | b, c, a | b+(c-a) | 4 | ||
| 11 | c, a, b | c+(a-b) | 3 | ||
| 12 | c, b, a | c+(b-a) | 4 | ||
| 13 | +, × | a, b, c | a+(b×c) | 5 | |
| 14 | a, c, b | a+(c×b) | 5 | ||
| 15 | b, a, c | b+(a×c) | 6 | ||
| 16 | b, c, a | b+(c×a) | 6 | ||
| 17 | c, a, b | c+(a×b) | 7 | ||
| 18 | c, b, a | c+(b×a) | 7 | ||
| 19 | +, ÷ | a, b, c | a+(b÷c) | 8 | |
| 20 | a, c, b | a+(c÷b) | 9 | ||
| 21 | b, a, c | b+(a÷c) | 10 | ||
| 22 | b, c, a | b+(c÷a) | 11 | ||
| 23 | c, a, b | c+(a÷b) | 12 | ||
| 24 | c, b, a | c+(b÷a) | 13 | ||
| 25 | -, + | a, b, c | a-(b+c) | 14 | |
| 26 | a, c, b | a-(c+b) | 14 | ||
| 27 | b, a, c | b-(a+c) | 15 | ||
| 28 | b, c, a | b-(c+a) | 15 | ||
| 29 | c, a, b | c-(a+b) | 16 | ||
| 30 | c, b, a | c-(b+a) | 16 | ||
| 31 | -, - | a, b, c | a-(b-c) | 3 | |
| 32 | a, c, b | a-(c-b) | 2 | ||
| 33 | b, a, c | b-(a-c) | 4 | ||
| 34 | b, c, a | b-(c-a) | 2 | ||
| 35 | c, a, b | c-(a-b) | 4 | ||
| 36 | c, b, a | c-(b-a) | 3 | ||
| 37 | -, × | a, b, c | a-(b×c) | 17 | |
| 38 | a, c, b | a-(c×b) | 17 | ||
| 39 | b, a, c | b-(a×c) | 18 | ||
| 40 | b, c, a | b-(c×a) | 18 | ||
| 41 | c, a, b | c-(a×b) | 19 | ||
| 42 | c, b, a | c-(b×a) | 19 | ||
| 43 | -, ÷ | a, b, c | a-(b÷c) | 20 | |
| 44 | a, c, b | a-(c÷b) | 21 | ||
| 45 | b, a, c | b-(a÷c) | 22 | ||
| 46 | b, c, a | b-(c÷a) | 23 | ||
| 47 | c, a, b | c-(a÷b) | 24 | ||
| 48 | c, b, a | c-(b÷a) | 25 | ||
| 49 | ×, + | a, b, c | a×(b+c) | 26 | |
| 50 | a, c, b | a×(c+b) | 26 | ||
| 51 | b, a, c | b×(a+c) | 27 | ||
| 52 | b, c, a | b×(c+a) | 27 | ||
| 53 | c, a, b | c×(a+b) | 28 | ||
| 54 | c, b, a | c×(b+a) | 28 | ||
| 55 | ×, - | a, b, c | a×(b-c) | 29 | |
| 56 | a, c, b | a×(c-b) | 30 | ||
| 57 | b, a, c | b×(a-c) | 31 | ||
| 58 | b, c, a | b×(c-a) | 32 | ||
| 59 | c, a, b | c×(a-b) | 33 | ||
| 60 | c, b, a | c×(b-a) | 34 | ||
| 61 | ×, × | a, b, c | a×(b×c) | 35 | |
| 62 | a, c, b | a×(c×b) | 35 | ||
| 63 | b, a, c | b×(a×c) | 35 | ||
| 64 | b, c, a | b×(c×a) | 35 | ||
| 65 | c, a, b | c×(a×b) | 35 | ||
| 66 | c, b, a | c×(b×a) | 35 | ||
| 67 | ×, ÷ | a, b, c | a×(b÷c) | 36 | |
| 68 | a, c, b | a×(c÷b) | 37 | ||
| 69 | b, a, c | b×(a÷c) | 36 | ||
| 70 | b, c, a | b×(c÷a) | 38 | ||
| 71 | c, a, b | c×(a÷b) | 37 | ||
| 72 | c, b, a | c×(b÷a) | 38 | ||
| 73 | ÷, + | a, b, c | a÷(b+c) | 39 | |
| 74 | a, c, b | a÷(c+b) | 39 | ||
| 75 | b, a, c | b÷(a+c) | 40 | ||
| 76 | b, c, a | b÷(c+a) | 40 | ||
| 77 | c, a, b | c÷(a+b) | 41 | ||
| 78 | c, b, a | c÷(b+a) | 41 | ||
| 79 | ÷, - | a, b, c | a÷(b-c) | 42 | |
| 80 | a, c, b | a÷(c-b) | 43 | ||
| 81 | b, a, c | b÷(a-c) | 44 | ||
| 82 | b, c, a | b÷(c-a) | 45 | ||
| 83 | c, a, b | c÷(a-b) | 46 | ||
| 84 | c, b, a | c÷(b-a) | 47 | ||
| 85 | ÷, × | a, b, c | a÷(b×c) | 48 | |
| 86 | a, c, b | a÷(c×b) | 48 | ||
| 87 | b, a, c | b÷(a×c) | 49 | ||
| 88 | b, c, a | b÷(c×a) | 49 | ||
| 89 | c, a, b | c÷(a×b) | 50 | ||
| 90 | c, b, a | c÷(b×a) | 50 | ||
| 91 | ÷, ÷ | a, b, c | a÷(b÷c) | 37 | |
| 92 | a, c, b | a÷(c÷b) | 36 | ||
| 93 | b, a, c | b÷(a÷c) | 38 | ||
| 94 | b, c, a | b÷(c÷a) | 36 | ||
| 95 | c, a, b | c÷(a÷b) | 38 | ||
| 96 | c, b, a | c÷(b÷a) | 37 | ||
| 97 | (□○□)○□ | +, + | a, b, c | (a+b)+c | 1 |
| 98 | a, c, b | (a+c)+b | 1 | ||
| 99 | b, a, c | (b+a)+c | 1 | ||
| 100 | b, c, a | (b+c)+a | 1 | ||
| 101 | c, a, b | (c+a)+b | 1 | ||
| 102 | c, b, a | (c+b)+a | 1 | ||
| 103 | +, - | a, b, c | (a+b)-c | 2 | |
| 104 | a, c, b | (a+c)-b | 3 | ||
| 105 | b, a, c | (b+a)-c | 2 | ||
| 106 | b, c, a | (b+c)-a | 4 | ||
| 107 | c, a, b | (c+a)-b | 3 | ||
| 108 | c, b, a | (c+b)-a | 4 | ||
| 109 | +, × | a, b, c | (a+b)×c | 28 | |
| 110 | a, c, b | (a+c)×b | 27 | ||
| 111 | b, a, c | (b+a)×c | 28 | ||
| 112 | b, c, a | (b+c)×a | 26 | ||
| 113 | c, a, b | (c+a)×b | 27 | ||
| 114 | c, b, a | (c+b)×a | 26 | ||
| 115 | +, ÷ | a, b, c | (a+b)÷c | 51 | |
| 116 | a, c, b | (a+c)÷b | 52 | ||
| 117 | b, a, c | (b+a)÷c | 51 | ||
| 118 | b, c, a | (b+c)÷a | 53 | ||
| 119 | c, a, b | (c+a)÷b | 52 | ||
| 120 | c, b, a | (c+b)÷a | 53 | ||
| 121 | -, + | a, b, c | (a-b)+c | 3 | |
| 122 | a, c, b | (a-c)+b | 2 | ||
| 123 | b, a, c | (b-a)+c | 4 | ||
| 124 | b, c, a | (b-c)+a | 2 | ||
| 125 | c, a, b | (c-a)+b | 4 | ||
| 126 | c, b, a | (c-b)+a | 3 | ||
| 127 | -, - | a, b, c | (a-b)-c | 14 | |
| 128 | a, c, b | (a-c)-b | 14 | ||
| 129 | b, a, c | (b-a)-c | 15 | ||
| 130 | b, c, a | (b-c)-a | 15 | ||
| 131 | c, a, b | (c-a)-b | 16 | ||
| 132 | c, b, a | (c-b)-a | 16 | ||
| 133 | -, × | a, b, c | (a-b)×c | 33 | |
| 134 | a, c, b | (a-c)×b | 31 | ||
| 135 | b, a, c | (b-a)×c | 34 | ||
| 136 | b, c, a | (b-c)×a | 29 | ||
| 137 | c, a, b | (c-a)×b | 32 | ||
| 138 | c, b, a | (c-b)×a | 30 | ||
| 139 | -, ÷ | a, b, c | (a-b)÷c | 54 | |
| 140 | a, c, b | (a-c)÷b | 55 | ||
| 141 | b, a, c | (b-a)÷c | 56 | ||
| 142 | b, c, a | (b-c)÷a | 57 | ||
| 143 | c, a, b | (c-a)÷b | 58 | ||
| 144 | c, b, a | (c-b)÷a | 59 | ||
| 145 | ×, + | a, b, c | (a×b)+c | 7 | |
| 146 | a, c, b | (a×c)+b | 6 | ||
| 147 | b, a, c | (b×a)+c | 7 | ||
| 148 | b, c, a | (b×c)+a | 5 | ||
| 149 | c, a, b | (c×a)+b | 6 | ||
| 150 | c, b, a | (c×b)+a | 5 | ||
| 151 | ×, - | a, b, c | (a×b)-c | 60 | |
| 152 | a, c, b | (a×c)-b | 61 | ||
| 153 | b, a, c | (b×a)-c | 60 | ||
| 154 | b, c, a | (b×c)-a | 62 | ||
| 155 | c, a, b | (c×a)-b | 61 | ||
| 156 | c, b, a | (c×b)-a | 62 | ||
| 157 | ×, × | a, b, c | (a×b)×c | 35 | |
| 158 | a, c, b | (a×c)×b | 35 | ||
| 159 | b, a, c | (b×a)×c | 35 | ||
| 160 | b, c, a | (b×c)×a | 35 | ||
| 161 | c, a, b | (c×a)×b | 35 | ||
| 162 | c, b, a | (c×b)×a | 35 | ||
| 163 | ×, ÷ | a, b, c | (a×b)÷c | 36 | |
| 164 | a, c, b | (a×c)÷b | 37 | ||
| 165 | b, a, c | (b×a)÷c | 36 | ||
| 166 | b, c, a | (b×c)÷a | 38 | ||
| 167 | c, a, b | (c×a)÷b | 37 | ||
| 168 | c, b, a | (c×b)÷a | 38 | ||
| 169 | ÷, + | a, b, c | (a÷b)+c | 12 | |
| 170 | a, c, b | (a÷c)+b | 10 | ||
| 171 | b, a, c | (b÷a)+c | 13 | ||
| 172 | b, c, a | (b÷c)+a | 8 | ||
| 173 | c, a, b | (c÷a)+b | 11 | ||
| 174 | c, b, a | (c÷b)+a | 9 | ||
| 175 | ÷, - | a, b, c | (a÷b)-c | 63 | |
| 176 | a, c, b | (a÷c)-b | 64 | ||
| 177 | b, a, c | (b÷a)-c | 65 | ||
| 178 | b, c, a | (b÷c)-a | 66 | ||
| 179 | c, a, b | (c÷a)-b | 67 | ||
| 180 | c, b, a | (c÷b)-a | 68 | ||
| 181 | ÷, × | a, b, c | (a÷b)×c | 37 | |
| 182 | a, c, b | (a÷c)×b | 36 | ||
| 183 | b, a, c | (b÷a)×c | 38 | ||
| 184 | b, c, a | (b÷c)×a | 36 | ||
| 185 | c, a, b | (c÷a)×b | 38 | ||
| 186 | c, b, a | (c÷b)×a | 37 | ||
| 187 | ÷, ÷ | a, b, c | (a÷b)÷c | 48 | |
| 188 | a, c, b | (a÷c)÷b | 48 | ||
| 189 | b, a, c | (b÷a)÷c | 49 | ||
| 190 | b, c, a | (b÷c)÷a | 49 | ||
| 191 | c, a, b | (c÷a)÷b | 50 | ||
| 192 | c, b, a | (c÷b)÷a | 50 |

むむっ。さっきは8だったのに今度は192とか、いきなり場合の数が増えてるし。これがその筋の日常ってヤツ……

左様。それから、○が2個に増えたので、加法と乗法の交換法則に加えて結合法則(下記)も加味して同様な数式をグループ化している。
(a+b)+c=a+(b+c)
(a×b)×c=a×(b×c)
引き算(減法)では結合法則は成り立たないが、例えば下記の等式が成り立つ。
a+(b-c)=(a+b)-c
a-(b+c)=(a-b)-c
a-(b-c)=(a-b)+c
割り算(除法)についても似たような等式があるな。
a×(b÷c)=(a×b)÷c
a÷(b×c)=(a÷b)÷c
a÷(b÷c)=(a÷b)×c
こういった等式も加味してグループ化しているぞ

結合法則……。な〜ほ〜ね (☜深く考えてない?)
| 注1: | 上で示した次の式では注意が必要です。 a÷(b÷c)=(a÷b)×c この等式は殆ど常に成り立ちますが、cに0を代入した場合のみ違いが生じます。左辺ではゼロ割りが生じ使用禁止式となりますが、右辺は普通に0です。この点については、後で惰性慣性が言及するはずです |
| 注2: | 加法(+)と乗法(×)との間に成り立つ分配法則(下記)もあります。 a×(b+c)=(a×b)+(a×c) 交換法則を併用すると下記も成り立ちます。(a+b)×c=(a×c)+(b×c) |
| 注3: | さらに減法(-)でも、下記の等式が成り立ちます。 a×(b-c)=(a×b)-(a×c) (a-b)×c=(a×c)-(b×c) |
| 注4: | 乗法(×)を除法(÷)に変えると、下記の等式が成り立ちます。 (a+b)÷c=(a÷c)+(b÷c) (a-b)÷c=(a÷c)-(b÷c) |
| 注5: | 上記(注2~注4)の法則を使うと四則演算の数が変わるので、演算の○は2個といった掟がある状況で使うと掟破りになってしまいますが……。標準形への変形では掟にこだわらないことが多いので、分配法則も加味して式を変形したりしますね |

□が2個の場合と同様、上記の表だとグループ化の様子が分かりにくいので、グループ別に整理した表も用意した。これだ
| G通番 | 標準形 | G内通番 | 計算式 | 備考 |
|---|---|---|---|---|
| 1 | a+b+c | 1 | a+(b+c) | |
| 2 | a+(c+b) | |||
| 3 | b+(a+c) | |||
| 4 | b+(c+a) | |||
| 5 | c+(a+b) | |||
| 6 | c+(b+a) | |||
| 7 | (a+b)+c | |||
| 8 | (a+c)+b | |||
| 9 | (b+a)+c | |||
| 10 | (b+c)+a | |||
| 11 | (c+a)+b | |||
| 12 | (c+b)+a | |||
| 2 | a+b-c | 1 | a+(b-c) | |
| 2 | b+(a-c) | |||
| 3 | a-(c-b) | |||
| 4 | b-(c-a) | |||
| 5 | (a+b)-c | |||
| 6 | (b+a)-c | |||
| 7 | (a-c)+b | |||
| 8 | (b-c)+a | |||
| 3 | a-b+c | 1 | a+(c-b) | |
| 2 | c+(a-b) | |||
| 3 | a-(b-c) | |||
| 4 | c-(b-a) | |||
| 5 | (a+c)-b | |||
| 6 | (c+a)-b | |||
| 7 | (a-b)+c | |||
| 8 | (c-b)+a | |||
| 4 | -a+b+c | 1 | b+(c-a) | |
| 2 | c+(b-a) | |||
| 3 | b-(a-c) | |||
| 4 | c-(a-b) | |||
| 5 | (b+c)-a | |||
| 6 | (c+b)-a | |||
| 7 | (b-a)+c | |||
| 8 | (c-a)+b | |||
| 5 | a+b×c | 1 | a+(b×c) | |
| 2 | a+(c×b) | |||
| 3 | (b×c)+a | |||
| 4 | (c×b)+a | |||
| 6 | a×c+b | 1 | b+(a×c) | |
| 2 | b+(c×a) | |||
| 3 | (a×c)+b | |||
| 4 | (c×a)+b | |||
| 7 | a×b+c | 1 | c+(a×b) | |
| 2 | c+(b×a) | |||
| 3 | (a×b)+c | |||
| 4 | (b×a)+c | |||
| 8 | a+b÷c | 1 | a+(b÷c) | |
| 2 | (b÷c)+a | |||
| 9 | a+c÷b | 1 | a+(c÷b) | |
| 2 | (c÷b)+a | |||
| 10 | a÷c+b | 1 | b+(a÷c) | |
| 2 | (a÷c)+b | |||
| 11 | b+c÷a | 1 | b+(c÷a) | |
| 2 | (c÷a)+b | |||
| 12 | a÷b+c | 1 | c+(a÷b) | |
| 2 | (a÷b)+c | |||
| 13 | c+b÷a | 1 | c+(b÷a) | |
| 2 | (b÷a)+c | |||
| 14 | a-b-c | 1 | a-(b+c) | |
| 2 | a-(c+b) | |||
| 3 | (a-b)-c | |||
| 4 | (a-c)-b | |||
| 15 | -a+b-c | 1 | b-(a+c) | |
| 2 | b-(c+a) | |||
| 3 | (b-a)-c | |||
| 4 | (b-c)-a | |||
| 16 | -a-b+c | 1 | c-(a+b) | |
| 2 | c-(b+a) | |||
| 3 | (c-a)-b | |||
| 4 | (c-b)-a | |||
| 17 | a-b×c | 1 | a-(b×c) | |
| 2 | a-(c×b) | |||
| 18 | -a×c+b | 1 | b-(a×c) | |
| 2 | b-(c×a) | |||
| 19 | -a×b+c | 1 | c-(a×b) | |
| 2 | c-(b×a) | |||
| 20 | a-b÷c | 1 | a-(b÷c) | |
| 21 | a-c÷b | 1 | a-(c÷b) | |
| 22 | -a÷c+b | 1 | b-(a÷c) | |
| 23 | b-c÷a | 1 | b-(c÷a) | |
| 24 | -a÷b+c | 1 | c-(a÷b) | |
| 25 | c-b÷a | 1 | c-(b÷a) | |
| 26 | a×(b+c) | 1 | a×(b+c) | |
| 2 | a×(c+b) | |||
| 3 | (b+c)×a | |||
| 4 | (c+b)×a | |||
| 27 | b×(a+c) | 1 | b×(a+c) | |
| 2 | b×(c+a) | |||
| 3 | (a+c)×b | |||
| 4 | (c+a)×b | |||
| 28 | c×(a+b) | 1 | c×(a+b) | |
| 2 | c×(b+a) | |||
| 3 | (a+b)×c | |||
| 4 | (b+a)×c | |||
| 29 | a×(b-c) | 1 | a×(b-c) | |
| 2 | (b-c)×a | |||
| 30 | a×(-b+c) | 1 | a×(c-b) | |
| 2 | (c-b)×a | |||
| 31 | b×(a-c) | 1 | b×(a-c) | |
| 2 | (a-c)×b | |||
| 32 | b×(-a+c) | 1 | b×(c-a) | |
| 2 | (c-a)×b | |||
| 33 | c×(a-b) | 1 | c×(a-b) | |
| 2 | (a-b)×c | |||
| 34 | c×(-a+b) | 1 | c×(b-a) | |
| 2 | (b-a)×c | |||
| 35 | a×b×c | 1 | a×(b×c) | |
| 2 | a×(c×b) | |||
| 3 | b×(a×c) | |||
| 4 | b×(c×a) | |||
| 5 | c×(a×b) | |||
| 6 | c×(b×a) | |||
| 7 | (a×b)×c | |||
| 8 | (a×c)×b | |||
| 9 | (b×a)×c | |||
| 10 | (b×c)×a | |||
| 11 | (c×a)×b | |||
| 12 | (c×b)×a | |||
| 36 | a×b÷c | 1 | a×(b÷c) | |
| 2 | b×(a÷c) | |||
| 3 | a÷(c÷b) | ÷入れ子 | ||
| 4 | b÷(c÷a) | ÷入れ子 | ||
| 5 | (a×b)÷c | |||
| 6 | (b×a)÷c | |||
| 7 | (a÷c)×b | |||
| 8 | (b÷c)×a | |||
| 37 | a×c÷b | 1 | a×(c÷b) | |
| 2 | c×(a÷b) | |||
| 3 | a÷(b÷c) | ÷入れ子 | ||
| 4 | c÷(b÷a) | ÷入れ子 | ||
| 5 | (a×c)÷b | |||
| 6 | (c×a)÷b | |||
| 7 | (a÷b)×c | |||
| 8 | (c÷b)×a | |||
| 38 | b×c÷a | 1 | b×(c÷a) | |
| 2 | c×(b÷a) | |||
| 3 | b÷(a÷c) | ÷入れ子 | ||
| 4 | c÷(a÷b) | ÷入れ子 | ||
| 5 | (b×c)÷a | |||
| 6 | (c×b)÷a | |||
| 7 | (b÷a)×c | |||
| 8 | (c÷a)×b | |||
| 39 | a÷(b+c) | 1 | a÷(b+c) | |
| 2 | a÷(c+b) | |||
| 40 | b÷(a+c) | 1 | b÷(a+c) | |
| 2 | b÷(c+a) | |||
| 41 | c÷(a+b) | 1 | c÷(a+b) | |
| 2 | c÷(b+a) | |||
| 42 | a÷(b-c) | 1 | a÷(b-c) | |
| 43 | -a÷(b-c) | 1 | a÷(c-b) | |
| 44 | b÷(a-c) | 1 | b÷(a-c) | |
| 45 | -b÷(a-c) | 1 | b÷(c-a) | |
| 46 | c÷(a-b) | 1 | c÷(a-b) | |
| 47 | -c÷(a-b) | 1 | c÷(b-a) | |
| 48 | a÷(b×c) | 1 | a÷(b×c) | |
| 2 | a÷(c×b) | |||
| 3 | (a÷b)÷c | |||
| 4 | (a÷c)÷b | |||
| 49 | b÷(a×c) | 1 | b÷(a×c) | |
| 2 | b÷(c×a) | |||
| 3 | (b÷a)÷c | |||
| 4 | (b÷c)÷a | |||
| 50 | c÷(a×b) | 1 | c÷(a×b) | |
| 2 | c÷(b×a) | |||
| 3 | (c÷a)÷b | |||
| 4 | (c÷b)÷a | |||
| 51 | (a+b)÷c | 1 | (a+b)÷c | |
| 2 | (b+a)÷c | |||
| 52 | (a+c)÷b | 1 | (a+c)÷b | |
| 2 | (c+a)÷b | |||
| 53 | (b+c)÷a | 1 | (b+c)÷a | |
| 2 | (c+b)÷a | |||
| 54 | (a-b)÷c | 1 | (a-b)÷c | |
| 55 | (a-c)÷b | 1 | (a-c)÷b | |
| 56 | (-a+b)÷c | 1 | (b-a)÷c | |
| 57 | (b-c)÷a | 1 | (b-c)÷a | |
| 58 | (-a+c)÷b | 1 | (c-a)÷b | |
| 59 | (-b+c)÷a | 1 | (c-b)÷a | |
| 60 | a×b-c | 1 | (a×b)-c | |
| 2 | (b×a)-c | |||
| 61 | a×c-b | 1 | (a×c)-b | |
| 2 | (c×a)-b | |||
| 62 | -a+b×c | 1 | (b×c)-a | |
| 2 | (c×b)-a | |||
| 63 | a÷b-c | 1 | (a÷b)-c | |
| 64 | a÷c-b | 1 | (a÷c)-b | |
| 65 | -c+b÷a | 1 | (b÷a)-c | |
| 66 | -a+b÷c | 1 | (b÷c)-a | |
| 67 | -b+c÷a | 1 | (c÷a)-b | |
| 68 | -a+c÷b | 1 | (c÷b)-a |
| 注: | G通番等、各欄の意味は□が2個の場合の表と同様です |

それにしても、項目が192もある表を手で書くとか乙

フッ、そんなことはない

え〜。したら一体どうやったんじゃい?

□2個の段階で既に数式の種類が192に増えとるのでな。実はプログラムを書いていろいろ計数している

な〜んだ。プログラムかい! コンピューター君を酷使して自分は楽してる

まあそういうことだが、反面、プログラムを書いたりデバッグしたりが大変なんじゃ……。それはさておき、1,1,2,5,14……と増えていく□○計算式パターンの生成、○への四則演算割り当て、□への変数割り当ては Python というプログラム言語を用いて淡々と処理しており、□2個なら192個といった数式生成はできている。先程の表もワシの手書きではなく、実はプログラムで生成しておる

へ〜。ってことは□が増えても安心?

昨今のPCは計算が人間の数億倍以上速いとはいえ、場合の数が鬼のように増えていく組合せ数学への応用では、そのような安直なコンピューター信仰は危険だ。ちょっと問題の規模が大きくなると、コンピューター処理でも辛くなることがしばしばあってな

そうなんだ

特に、ワシが愛用している Python 言語は、よく練られたライブラリが充実していて凝った処理をサクサク書ける点では大変めでたいが、処理速度がかーなーり遅いという大きな問題がある。クリプト (Krypto) に対応できるよう、□5個までは何とかしたいが……

なら、そのパイなんたらを止めてもっと速いのにすればいいじゃん

詳しくは知らないけど、噂ではプログラミング言語って沢山あるんでしょ? IT系就職に有利な言語はこれだ、的な
☝夢未さんは、プログラミング言語が色々ある事実を就活系のサイトや広告等で知ったのでしょうか?

世の中、ままならないもんっすね (☜他人事)

とはいえ Python 一辺倒では辛い局面もしばしばあるんで、ライブラリ活用でサクサクしたい部類の処理でなければ、TypeScriptとか、あとは Codonにも手を出しつつあるが……
蛇足1: 惰性慣性オヤジは Python と TypeScript を含む JavaScript 系以外のプログラミング言語には手を広げるつもりがない感じですね
蛇足2: Python や JavaScript はインタープリタ型言語というタイプで、ちょっとしたプログラムをサクっと書いて何回か走らせるといった用途に向いており、その反面、高速処理には向いていないのが過去の常識でしたが。昨今は Python や JavaScript で大規模プログラムを開発したりするようになってきたためか、JIT コンパイラといった高速化の技がハゲしく進化しているようで
蛇足3: JavaScript では V8 エンジンという言語処理系の JIT コンパイラが非常に強力で、C, C++ といったコンパイル型言語に肉薄する性能を出せるそうな。実際、ナンプレ/数独系のとあるプログラムを Python から TypeScript に書き換えて Node.js 処理系(☜これは内部でV8エンジンを活用)で走らせた惰性慣性オヤジが「こんなに速くなるんかい!」と驚いたこともあるとか
蛇足4: さらに、できれば Python⇒TypeScript といった面倒な書き換えなしで Python プログラムをそのまま速くしたいという意図で、Codon という Python コンパイラに注目しているのでしょう。Codon でも、C, C++ 等に匹敵する性能を出せるとか。ただし、Codon が受け付けるのは 99% Python だそうなので、惰性慣性オヤジが書いた怪しい Python プログラムを全て受け付けてくれるかどうかは謎です。その意味で過信は禁物かもしれません
蛇足5: 最近の Python 処理系には JIT コンパイラが含まれるようになったそうですが、今のところは「あまり速くならない」との噂が多い感触です。今後の進化に期待でしょうか

んな細かい話をされても、プログラミング言語の違いとかようわからん。けど、ま、記事のネタになるみたいなんで、適当に頑張ってちょ〜だい
(☝なんか偉そうというか上からというか)

そこはぼちぼちとな……

さておき、先程の表を作成する上で面倒だった点は、交換法則や結合法則等を使って実質的には同じとなる数式をグルーピングする処理だ。192式もあるのでな。手作業では日が暮れるし、間違いも多発てなことに……

でも結局は、仕方ないからグルーピングのとこは手作業でやったんでしょ? 日は暮れまくって涙目だし、間違いは沢山残ってて表の中身はインチキだらけ、みたいな

フッ、そんなことはない

え〜。したら一体どうやったんじゃい?


そんな飛び道具が……

Sympy は数式処理の専門家が開発しておるし、比較的よく使われ品質が安定している感触ゆえ、怪しげなワシの手計算よりは遥かに信用できるじゃろうて

まっ、その心配(?)先生にすがったのはわかった。名前がアレなんで、頼っていいのか謎だけど……
☝Sympy の読み方はシムピー(⇒シンピ⇒神秘?)なのか、シムパイ(⇒シンパイ⇒心配?)なのかという素朴な疑問がありまして。正解は後者らしいのですが、その線で惰性慣性オヤジが「シムパイ」と発音した際、夢未さんには「心配」と聞こえたのではないかと

ところで数式処理って何?

そこかい!

そこだね❤

よかろう。数式処理は、数式の計算をしてくれる

そんなインチキ辞書みたいなテキトー説明で済むと思っとんのかい!

やはり駄目じゃったか……

残当! もっと誠意を持って、丁寧に、分かりやすく!
☝この『残当』の意味は、「おっちゃんにとっては残念かもしれないけど当然でしょ。常識的に考えて!」といった感じでしょうか?

……小学校の算数では、計算というと特定の数の計算だと思うが。例えば、
2x3+1=6+1=7
といったような

まあ、そうだったかな…… (☜算数・数学系の記憶が常に怪しい?)

しかし、中学になると変数が導入されて変数を含む文字式が普通になり、文字式のままでの計算が多くなったはず。例えば、
x+y=3 (式1)
2x+4y=8 (式2)
式1の両辺を2倍すると
2x+2y=6 (式3)
式2の両辺から式3の両辺を引くと
2y=2 (式4)
式4の両辺を2で割って
y=1
といった感じだな

そんな気もするけど、きちんと思い出そうとすると頭痛が……

今説明した文字式の計算が理解できんレベルだとすると、中学数学からやり直してマスターしてもらわん限り、これ以降の説明は『馬の耳に念仏』状態になるんだが……

まっ、そりゃ文字式ぐらい、当然、知ってっし (☜怪しい?)

なら話は簡単。数式処理は、正に中学以降で行う文字式の計算をしてくれる。それゆえ、a+b と b+a が『文字式として』実は同じ、といった処理が可能になるわけで

な、な〜ほ〜ね (☜本当に分かった?)

って、ちょっと待ったぁ!

はて?

わざわざ『心配?』とかいう数式処理の何かをどっかから持ってこないと駄目なわけ? 中学以降でならう文字式って、割と基本な感じがするんだけど。おっちゃんが使ってるパイなんたらってプログラミング言語は、そんな基本も満足にできないものなん?

そのような核心を突いた質問をしてくるとは……意外に鋭い奴だな

フッ、当然

あと、「意外に」は不要ですぅ

これは失礼をば。で、いきなり結論を言うと、Python といった通常のプログラミング言語は、小学生と中学生の中間、的な処理しかしてくれないのだな

プログラマーはプログラム中に文字式を書くことができるが、この文字式は計算の手順を示すためのもので、プログラマーが書いた複数の文字式を組み合わせて別な文字式を導出する、といったことはしてくれない

で、プログラムを実行したらコンピューターは何をやってくれるかというと、やはりプログラマーの指示に従い、各文字変数について別途指定された数値を当てはめて数値の計算をするだけ

プログラム中に文字式を書けるとか各文字変数に指定の数値を当てはめるとかはやや中学生的だが、そこから先の実際の計算は数値計算のみなので小学生的

なんか微妙。イメージ湧かないんで具体例プリーズ

そうだな……。わざとらしい例だが、1から10まで足すとか、1から25まで足すといった計算を色々したいとしよう。言い方を変えると、1からNまで足す計算パターンで、Nのところが10だったり25だったり、はたまた57だったり

で、プログラマーは1からNまで足したらN×(N+1)÷2だという文字式の公式を知っていたとする。その場合、プログラマーは『指定したNについてN×(N+1)÷2の計算をしろ』的なプログラムを書くことができる

その後、Nは10と指定すれば、コンピューターは N×(N+1)÷2式のNのところに10を当てはめて10×(10+1)÷2の計算を行い、55という値を計算してくれる。さらにNとして25を指定すれば、25×(25+1)÷2の計算を行い、325を返してくれる

う〜ん。プログラムの指定には文字式があるけど、計算してるところは数字の計算だけ……

左様。N×(N+1)÷2という文字式を受け入れて色々なN (10, 25, 57……) についてその計算をしてくれるから、10×(10+1)÷2を投入したら55になるといった個々の指定数値の計算しかしてくれない電卓よりは融通が利く

が、Nのところに x+y-1を代入したら (x+y-1)×((x+y-1)-1)÷2=(x+y-1)×(x+y)÷2 といった如何にもな文字式計算はしてくれないのだな

勿論、数式処理の仕組みをどこかから入手すれば、こういった文字式計算ができるようになるわけだが

……まっ、まあ、この話はこの辺でいいや
(☝単なる思い付きで質問してみただけで、実は詳しく知りたいわけではないのが見え見え?)

プログラミングや数式処理など手段の話題に逸れたが、話を戻すと全192式を諸々の法則で整理すると、68グループにまとめられると分かったわけだ

なんかかなり減ってる感じ

□が2個のときは8から6で25%削減だったが、□が3個になると192から68ゆえ、65%弱の削減というか、元の数の35%程まで減るというか

□がちょっと増えただけで、なんでそんなに削減率が上がるんじゃい?!

既に伝えたと思うが、□が増えると、法則が増えたり法則の組み合わせが生じたりするんで、削減の比率が増えるんだな、これが。法則はこれ以上は増えんが、法則の組み合わせかたがどんどん多くなっていくので、□を増やすと更に削減率が上がるはず

あっそ (☜実は削減率とか興味ない?)

ただし、この68グループの数には2点ほど懸念事項があってな

68グループじゃないかも、って意味?

そうなんじゃ

駄目じゃん!

うむ……。まず最初に、ゼロ割りの可能性が微妙に違う場合があるのではないかと。今回のルールでは、割る数が0の計算に遭遇したらその計算式は使えないという鉄則なんじゃが……。使った法則の中にゼロ割りの状況が違うものが混じっておってな

そんな微妙な法則って……

具体的には次の式だ。
a÷(b÷c)=(a÷b)×c
この式は殆ど全ての場合に正しいんじゃが、cが0になる場合だけ状況が異なる。例えば、aとbに1、cに0を代入すると、左辺は
1÷(1÷0) → ゼロ割り
この式では、先に計算する右側の割り算で1÷0というゼロ割りが発生しており、テンパズルのゼロ割り禁止ルールの元では使用不可な式となっている。一方で右辺は
(1÷1)×0 → 0
これは普通に計算できて値は0となる。このように結果が違うじゃろ?

それは分ったけど、さっき言ってた心配(?)先生はその辺の配慮はしてくれるん?
☝夢未さんが言う心配先生とは Sympy (シムパイ) 数式処理ライブラリのことです

いや。特段の配慮はない模様。先ほど示した『□が3個の場合の計算式一覧 (グループ別)』にてグループ通番(G通番)37番を見てみると、a÷(b÷c) および (a÷b)×c が両方含まれておる。つまり、等価な式として扱われている

一瞬、何を他人事みたいに、って思ったけど、グルーピングはおっちゃんが自分でやったんじゃなくて心配先生に丸投げしたんだった……

てか、そんなんだとすると心配先生って怪しいじゃん! もっと頼りになる奴を探さないと!

うーむ。Python 言語から簡単に呼び出せるものとしては、Sympy 以外の選択肢は殆どないんじゃが……。一応、他の数式処理システムではどうなるかも見ておこうと考え、ウェブ上のオンラインサービスで使える Wolfram Alpha と SageMath の2種を試してみたぞ。どちらもかなりメジャーなシステムといえよう
☝実は SageMath も Python 言語から呼び出せますが、以下の理由により惰性慣性は使っていない模様です。①SageMath はかなり巨大なので、インストールすると多量のダウンロードが発生する。②かつて SageMath は Python2 ベースだったので、Python3 プログラミング限定の惰性慣性にとっては考慮対象外だった。③惰性慣性が必要とする範囲の数式処理なら、ほぼ間違いなく Sympy で十分

ウルフなんとかと政治升?がメジャーって……、そんなん知らんし。数式処理界隈では、ってことでしょ!

それはそうだが

メジャーの意味はどうでもいいけど、お試しの結果は?

どちらのシステムでも Sympy と同様な結果じゃった

駄目じゃん!

これはもう、数式処理界隈全体が駄目かもしれんね……

それは極論。今回の場合、テンパズルのゼロ割りルールが硬すぎるというか、テンパズルは特段の注意が必要なタイプの応用分野、的な側面があり

どゆこと?


なんだが、今回のテンパズルでは、変数に色々な値を代入して計算するので、文字変数について純然たる超越元扱いでは済まない

ば……



なんだが、テンパズルでは、正に値を定義できない特異点の箇所が、ゼロ割り禁止で使用不可扱いになるので、『うまい値を定めればすっきり』というわけにはいかない


その顔、やめい!

ふぅ
(☝本格的wwwばなな顔の表情&発言&ポーズにより発散して復活?)

……要するに、数式処理システムの結果で問題ない利用局面が多々ある中、今回のテンパズル問題は特段の注意が必要なウザいケース

う〜ん。それって、心配先生を普通に使っただけじゃ駄目ってコト⁉

む?

でもって、おっちゃんは心配先生を普通に使っただけ……

むむ?

結論、心配先生の使い方がなってないおっちゃんが悪い

くっ。そのとおりじゃが、そこまで露骨に言わんでも……

となると、心配先生が出した68ってグループ数はインチキ!

全くの出鱈目ではないはずじゃが、詰めが甘いかも……

んなことでいいんかい?!

いや。よろしくないので、少し捻りを入れてみた

捻りとな?

まずは素朴な対処として、怪しげなところにマークを付けてみた

怪しげなところ?

ゼロ割りが微妙なことになるのは、割り算の右側というか分母側にさらに割り算があるときなんで、そういう式をチェックして『÷入れ子』のマークを付けてみた。実は、先ほど見せた『□が3個の場合の計算式一覧 (グループ別)』に、既に反映させてある

そだっけ?

よく見ると、グループ通番(G通番)が 36, 37, 38 の三カ所で、備考欄に『÷入れ子』のマークがついた計算式がある

え〜、面倒くさ。どれどれ、っと……。あっ、これ。最初の辺りしか見てなかったから気付かなかったけど、下のほうまで見てくと確かにあるねぇ
| G通番 | 標準形 | G内通番 | 計算式 | 備考 |
|---|---|---|---|---|
| … | … | … | … | … |
| 36 | a×b÷c | 1 | a×(b÷c) | |
| 2 | b×(a÷c) | |||
| 3 | a÷(c÷b) | ÷入れ子 | ||
| 4 | b÷(c÷a) | ÷入れ子 | ||
| 5 | (a×b)÷c | |||
| 6 | (b×a)÷c | |||
| 7 | (a÷c)×b | |||
| 8 | (b÷c)×a | |||
| 37 | a×c÷b | 1 | a×(c÷b) | |
| 2 | c×(a÷b) | |||
| 3 | a÷(b÷c) | ÷入れ子 | ||
| 4 | c÷(b÷a) | ÷入れ子 | ||
| 5 | (a×c)÷b | |||
| 6 | (c×a)÷b | |||
| 7 | (a÷b)×c | |||
| 8 | (c÷b)×a | |||
| 38 | b×c÷a | 1 | b×(c÷a) | |
| 2 | c×(b÷a) | |||
| 3 | b÷(a÷c) | ÷入れ子 | ||
| 4 | c÷(a÷b) | ÷入れ子 | ||
| 5 | (b×c)÷a | |||
| 6 | (c×b)÷a | |||
| 7 | (b÷a)×c | |||
| 8 | (c÷a)×b | |||
| … | … | … | … | … |

□が3つの計算式では、『÷入れ子』はこの3カ所しかないんで、目視でチェックしたが、これらの3カ所では、『÷入れ子』ではない式を選んでおけば問題ないと分かった

でもさっき、0で割って駄目になるときが微妙に違うって言ったじゃん!

テンパズルやその亜種では、計算式の文字変数のところに色々な整数を当てはめたとき、式全体の値が何になるかを知りたいわけでな。例えば 10 あるいは 24 になるのかなど。クリプトのようにゴール数が様々なものもあるから、10 と 24 だけ考えればよいとは限らないが

それはそうかも

でもって、□の数が増えると急激に計算式の種類が増えるんでな。常に同じ値を出してくる等価な式も律儀に全部しらみつぶししていると無駄、というか計算多過ぎになりがちゆえ、グルーピングして同一グループ内は1つの式だけ試すという手間省きを考えとるわけだ

なんか謎のグルーピングをしてるのは、単におっちゃんの趣味か出来心かと思ってたけど……

随分な言われようだが、ワシは一向に構わん

ワンパターン乙

ぐぬぬ

それはどうでもいいとして、グルーピングには計算をケチるって目的があったんだ

左様。だもんで、ゼロ割りではない値が出てくるケースが多いほうを選んでおけば問題ない。例えば



