虫食い算

虫食い算（むしくいざん、英: cryptarithm, 英: arithmetical restorations, 英: digital puzzle, 英: restoration problem, 英: missing figure puzzle, 英: dotty puzzle）は、いくつかの数字が伏せられた計算式を与えられ、明らかになっている部分から伏せられた数字が何であるかを推理し、完全な計算式を導き出すパズルである。解き手のヒントになるように、計算式は筆算の形で与えられることが多い。 「虫食い算」という名称は、計算式が虫に食われたように穴があることに由来する。他に「暗号算」「幽霊算」などの名称もあるが、1946年（昭和21年）に出版された佐野昌一（1897年（明治30年） - 1949年（昭和24年））の著書『虫食い算大会』に使用された「虫食い算」の名称が最も広く使用されている。 「虫食い算」は広義には覆面算などを含む計算式を復元する問題全般をさすが、本稿ではことわりのない限り□に数字を入れる問題のみを表す。 虫食い算の具体的な起源ははっきりしていないが、日本では、江戸時代の和算書や算額などにも残されている。日本で記録に残っている古い問題としては、中根彦循の『竿頭算法』（1738年（元文3年））に掲載されている問題が挙げられる。また、欧米でも古くから計算の練習問題として使用されていた。 1906年（明治39年）にイギリスの数学者ウィリアム・ベリック（1888年-1944年）は「7つの7」という作品を発表した。これは、ヒントとなる数字が7個に対して72個もの□があるという作品であり、見た目に美しく知的な虫食い算の元祖ともいわれる。 意味のある単語を使用した覆面算（ワード覆面算）に関しては、ヘンリー・アーネスト・デュードニー（1857年 - 1930年）が1924年に発表した SEND+MORE=MONEY という作品が最初といわれる。 1931年にベルギーで数学遊戯雑誌"Sphinx"(fr)が創刊される。「虫食い算」に相当する英単語の1つである"Cryptarithmetics"は同誌によって提唱された。 1940年代になると、主流は虫食い算からワード覆面算に移行していく。1947年にアメリカのアラン・ウェインは最初の数詞覆面算を発表している。その後カナダのJ.A.ハンターがワード覆面算を"Alphametics"と命名して普及に努めた。 日本においては和算による虫食い算も存在したが、昭和初期には西洋の虫食い算が紹介されている。戦前から戦中に虫食い算を紹介した人物として高木茂男は藤本幸三郎、楠本虎四郎、佐野昌一、江口雅彦の4人を挙げている。このうち、楠本以外の3人は当時紹介のみで創作を行っていなかったとされる。 1946年（昭和21年） 佐野昌一『虫食い算大会』が出版される。 1947年（昭和22年） 文部省発行の算数・数学の教科書に虫食い算が掲載される。 昭和20年代 大学入試の進学適性検査の問題として毎年のように虫食い算が出題された。 この時期に創作を開始した人物としては泉行蔵、森本清吾、夏目康男、江口雅彦、佐藤米吉らの名前が挙げられる。 高木茂男が「年賀虫食い算」を始めたのもこの時期である。 1964年（昭和39年） 雑誌『数芸パズル』創刊。虫食い算を含む様々なパズルの発表の場が与えられた。 1976年（昭和51年） 雑誌『詰将棋パラダイス』に「虫食算研究室」のコーナーができる。 読者から問題・解答を募る形式のため、多くの作品が寄せられた。 丸尾学・山本行雄・浅尾和義が担当を勤め、22年続いた。 1980年（昭和55年） 雑誌『パズル通信ニコリ』創刊。 創刊当初から虫食い算・覆面算に数ページを割いており、17号からは「スージーコーナー」という独立したコーナーとなっている（71号まで）。 5号より毎号テーマを決めて覆面算を募集していたが、投稿数低下のため107号（04年夏号）からは不定期連載となった。 着順発表と呼ばれる覆面算の解答競争も行われていた（現在でも同コーナーは存在するが、パズルは覆面算に限らなくなっている）。 □には一つの数字が入る。 最上位の□には0は入らない。ただし、小数点で始まる小数の場合は最上位に0が入ることがある。また、小数点で始まる小数の場合は最下位に0が入らない。 1桁の□があった場合、最上位の条件を満たすので0を入れないとする考え方が一般的である。 狭義の虫食い算の問題では1つの□に入る数字は1つであるが、広義の虫食い算には空欄に複数の数字が入ることもある。筆算でない問題が多いが、筆算でも上位または下位の数字をまとめて隠すことがある。 解答は1つに定まる場合が大原則であり、これを一意解（いちいかい）ということがある。2つ以上の解がある場合に詰将棋の用語を借りて余詰（よづめ）のある虫食い算という。解が1つもない場合には詰将棋の用語を借りて不詰（ふづめ）の虫食い算という。 虫食い算大会　第三会場（２）の問題 虫食い算の中には、ヒント・形状・制約等から特別な名前を冠される物がある。 ヒントとして数字が1個のみ提示されているものを総称して「孤独のn」と呼ぶ。割り算において割り切れたことを示す最下段の0は除いて考える。この呼称は、1923年頃にE・F・オドリングが発表した作品「孤独の7」に由来する。 ヒントとして数字が全く提示されていないものを完全虫食い算と呼ぶ。まったく条件のつかない完全虫食い算の例としては、 □＋□＋□＋□＋□＋□＋□＋□＋□＝□ がある。しかし、通常は何らかの制約条件（小数点・循環小数・使用数字の制限など）が加えられる。このとき、制約条件の一つとして割り算において割り切れたことを示す最下段の0はあってもよい。 例題　□には0以外の偶数が入る。 □の中に1～9（あるいは0～9）の数字が1つずつ入るように指定したものを小町虫食い算と呼ぶ。この呼称は、1～9を使い100を表す小町算にちなんでいる。 例題　小町虫食い算　――1から9までの9種の数字をはめこむ（9と4はすでに使いずみ） 94 ◻ ◻ ◻ ◻ ◻ ◻ ◻ = 100 {\displaystyle 94{\frac {\square \square \square \square }{\square \square \square }}=100} 0～9を2個ずつ・3個ずつ使用する問題もあり、それらは「ダブル小町」「トリプル小町」などとも呼ばれる。1943年にオランダの数学者Fred. Schuh（1875年 - 1966年）はダブル小町完全虫食い算という条件作を発表している。 ダブル小町完全虫食い算 ―― □のなかには0から9までの数字が2つずつ入る。 升目の中に色違いの物を配置し、色違いの升目だけでも筆算が成り立つようにする問題を多重虫食い算という。制約が強く、数字が全くない完全虫食い算になることが多い。 例題 ■で表された1桁×1桁=2桁の筆算も成り立つようにする。 0～9を2つのグループ（偶数と奇数・4以下と5以上 など）に分け、グループによって入れる升目を変える問題。 バリエーションとして、特定の升目には同じ数字、他の升目にはそれ以外の数字を入れる問題もある。リチャード・P・ファインマンのものとされる「ファインマンの問題」はこのタイプの問題の中でよく知られているものの1つである。 例題 ◇には素数（2,3,5,7）、◎にはそれ以外の数を入れる。 足し算と引き算は、虫食い算より覆面算の作例が多い。理由としては□に制約がなく数字を入れ替えた別解が発生しやすいことがあげられる。 以下の問題は一意解である。 12□ + 3□4 = □56 □ + 7□ + □□ + □□ = □1 算数の演習問題として虫食い算が出題されるときには、1つの□に複数桁の数字が入ることがある。以下はその一例である。 123 + □ = 789 数学記号や関数を使用した虫食い算が存在する。これらは数学の知識が必要になるので通常の問題ほど多くは発表されていない。以下はその一例である。 √□! + (□!)! = □ log□□□0□ + log□□0□□ = □0 筆算による開平を元にした虫食い算が存在する。大駒, 武 & 丸尾 (1985, p. 71)には問題が収録されているが、現在では義務教育で教えられていないため、この形式の問題を見ることはほとんどない。 例題　開平算 一部の虫食い算は、自由に桁数を増やすことができる。例えば上の例にある完全虫食い算は、 □＋…（10n－1個）…＋□＝□…（n桁）…□ または □…（n桁）…□×□□=□…（n+1桁）…□ としても一意解である。このため、最大の虫食い算は存在しない。ただし、このような手法に頼らない大型虫食い算は存在する。 1999年（平成11年）から『パズル通信ニコリ』誌の編集長を務めている安福良直は、学生時代に商が20000桁を超える割り算の虫食い算を作成して同誌に投稿したことがある。大きすぎて掲載できないため、最初の20桁ほどが紹介された。安福 (2008)に詳しい顛末と理論が記されている。 コンピューターを用いて虫食い算を解く場合、桁数は計算時間に影響する。 2つの数字の掛け算が筆算の形で与えられた問題は、NP完全であることが知られている。 7つの7 SEND＋MORE＝MONEY 例題 孤独の7 まったく条件のつかない完全虫食い算 １＋１＋１＋１＋１＋１＋１＋１＋１＝９ 0以外の偶数のみを使う完全虫食い算 小町虫食い算 94 1578 263 = 100 {\displaystyle 94{\frac {1578}{263}}{=}100} ダブル小町完全虫食い算 多重虫食い算 グループ化 足し算 122+334＝456, 1+70+10+10＝91, 123+666＝789 ルートと階乗の問題 √(4!+(1!)!)＝5 対数の問題 log72401+log44096＝10 開平算 大きい虫食い算（まったく条件のつかない完全虫食い算） １＋…（10n－1個）…＋１＝９…（n桁）…９ 大きい虫食い算（0以外の偶数のみを使う完全虫食い算） ２…（n桁）…２×２２＝４８…（n－1桁）…８４