虫食い算

虫食い算（むしくいざん、cryptarithm あるいは arithmetical restorations）は、いくつかの数字が伏せられた計算式を与えられ、明らかになっている部分から伏せられた数字が何であるかを推理し、完全な計算式を導き出すパズルである。 解き手のヒントになるように、計算式は筆算の形で与えられることが多い。 「虫食い算」という名称は、計算式が虫に食われたように穴があることに由来する。他に「暗号算」「幽霊算」などの名称もあるが、1946年に出版された佐野昌一の著書『虫食い算大会』に使用された「虫食い算」の名称が最も広く使用されている。 「虫食い算」は広義には覆面算などを含む計算式を復元する問題全般をさすが、本稿ではことわりのない限り□に数字を入れる物のみを表す。 虫食い算の具体的な起源ははっきりしていないが、日本では、江戸時代の和算書や算額などにも残されている。日本で記録に残っている古い問題としては、中根彦循の「竿頭算法」（1738年）に掲載されている問題が挙げられる。また、欧米でも古くから計算の練習問題として使用されていた。 1906年にイギリスの数学者バーウィック(en)は『7つの7』という作品を発表した。これは、ヒントとなる数字が7個に対して70個以上の□があるという作品であり、見た目に美しく知的な虫食い算の元祖ともいわれる。 意味のある単語を使用した覆面算（ワード覆面算）に関しては、ヘンリー・アーネスト・デュードニーが1924年に発表した SEND+MORE=MONEY という作品が最初といわれる。 これらの作品は大正時代には日本にも紹介されていた。 1946年 『虫食い算大会』が出版される。 1964年 雑誌『数芸パズル』創刊。虫食い算を含む様々なパズルの発表の場が与えられた。 1976年 雑誌『詰将棋パラダイス』に「虫食算研究室」のコーナーができる。 読者から問題・解答を募る形式のため、多くの作品が寄せられた。 丸尾学・山本行雄・浅尾和義が担当を勤め、22年続いた。 1980年 雑誌『パズル通信ニコリ』創刊。 創刊当初から虫食い算・覆面算に数ページを割いており、17号からは「スージーコーナー」という独立したコーナーとなっている（71号まで）。 5号より毎号テーマを決めて覆面算を募集していたが、投稿数低下のため107号（04年夏号）からは不定期連載となった。 着順発表と呼ばれる覆面算の解答競争も行われていた（現在でも同コーナーは存在するが、パズルは覆面算に限らなくなっている）。 □には一つの数字が入る。 最上位の□には0は入らない。ただし、小数点で始まる小数の場合は最上位に0が入ることがある。 1桁の□があった場合、最上位の条件を満たすので0を入れないとする考え方が一般的である。 狭義の虫食い算の問題では1つの□に入る数字は1つであるが、広義の虫食い算には空欄に複数の数字が入ることもある。筆算でない問題が多いが、筆算でも上位または下位の数字をまとめて隠すことがある。 □7□6□×7＝3□29□6 筆算での出題の例 虫食い算の中には、ヒント・形状・制約等から特別な名前を冠される物がある。 孤独のn ヒントとして数字が1個のみ提示されているものを総称して孤独のnと呼ぶ。 この呼称は、E・F・オドリングが発表した作品『孤独の7』に由来する。 例題　「孤独の4」 完全虫食い算 ヒントとして数字が全く提示されていないものを完全虫食い算と呼ぶ。 無条件での完全虫食い算の作成は不可能であり、必ず何らかの制約条件（小数点・使用数字の制限など）が加えられる。 割り算において割り切れたことを示す最下段の0はあってもよい。 例題　□には0以外の偶数が入る 小町虫食い算 □の中に1～9（あるいは0～9）の数字が1つずつ入るように指定したものを小町虫食い算と呼ぶ。この呼称は、1～9を使い100を表す小町算にちなんでいる。 0～9を2個ずつ・3個ずつ使用する問題もあり、それらは「ダブル小町」「トリプル小町」などとも呼ばれる。 1943年にオランダの数学者Fred. Schuhはダブル小町完全虫食い算という条件作を発表している。 多重虫食い算 マスの中に色違いの物を配置し、色違いのマスだけでも筆算が成り立つようにする問題を多重虫食い算という。制約が強く、数字が全くない完全虫食い算になることが多い。 例題 ■で表された1桁×1桁=2桁の筆算も成り立つようにする。 グループ化 0-9を2つのグループ（偶数と奇数・4以下と5以上 など）に分け、グループによって入れるマスを変える問題。 バリエーションとして、特定のマスには同じ数字、他のマスにはそれ以外の数字を入れる問題もある。関連項目にある「ファインマンの問題」などが知られている。 例題 ◇には素数（2,3,5,7）、◎にはそれ以外の数を入れる。 足し算と引き算は、虫食い算より覆面算の作例が多い。理由としては□に制約がなく数字を入れ替えた別解が発生しやすいことがあげられる。 以下の問題は一意解である。 12□ + 3□4 = □56 □ + 7□ + □□ + □□ = □1 算数の演習問題として虫食い算が出題されるときには、1つの□に複数桁の数字が入ることがある。以下はその一例である。 123 + □ = 789 数学記号や関数を使用した虫食い算が存在する。これらは数学の知識が必要になるので通常の問題ほど多くは発表されていない。以下はその一例である。 √（□! + （□!）!） = □ （ルートは左辺全体にかかる） log□□□0□ + log□□0□□ = □0 筆算による開平を元にした虫食い算が存在する。『虫食算パズル700選』には問題が収録されているが、現在では義務教育で教えられていないため、この形式の問題を見ることはほとんどない。 例題を1問提示する。 一部の虫食い算は、自由に桁数を増やすことができる。例えば上の例にある完全虫食い算は、□…（n桁）…□×□□＝□…（n+1桁）…□ としても一意解である。このため、最大の虫食い算は存在しない。ただし、このような手法に頼らない大型虫食い算は存在する。 1999年からパズル通信ニコリの編集長を務めている安福良直は、学生時代に商が20000桁を超える割り算の虫食い算を作成して同誌に投稿したことがある。大きすぎて掲載できないため、最初の20桁ほどが紹介された。『世界最大の虫食い算』に詳しい顛末と理論が著されている。 コンピューターを用いて虫食い算を解く場合、桁数は計算時間に影響する。 2つの数字の掛け算が筆算の形で与えられた問題は、NP完全であることが知られている 。 例題1 47568×7＝332976 例題2 46×22＝1012 孤独の4 5734÷47＝122 偶数のみ 222×22＝4884 多重虫食い算 10856÷92＝118 8×2＝16 グループ化 18×49＝882 足し算 122+334=456 1+70+10+10=91 123+666=789 ルートと階乗の問題 √(4!+(1!)!)=5 対数の問題 log72401+log44096=10 開平算 √100489=317 ^ 例えば『竿頭算法』の問題は、文章中の数字が虫に食われている。 ^ 『虫食算パズル700選』P.134 など ^ 『虫食い算大会』佐野昌一より引用。なお著者の没年は1949年 ^ 『虫食算パズル700選』P.63 ^ 『虫食算パズル700選』P.68 ^ 『虫食算パズル700選』では完全虫食算の一種として紹介されている。 ^ 『虫食算パズル700選』P.132-133には条件のない問題での拡張の例が書かれている。 ^ 『虫食算パズル700選』P.137-140には、大型の虫食い算として積が45桁に及ぶ問題や□が500個以上ある問題が掲載されている。 ^ Tomomi Matsui (2013), “NP-Completeness of Arithmetical Restorations”, Journal of Information Processing 21 (3): 402–404.  『新数学事典』大阪書籍（VII. 数学特論、3. 興味ある数学問題、§3.3 虫食い算、pp.909-910.） ISBN 4-754-82009-6 佐野昌一『推理学校虫食い算大会』学生社 ISBN 4-311-41810-8 大駒誠一『虫食算パズル700選』共立出版 ISBN 4-320-01339-5 大駒誠一『続虫食算パズル700選』共立出版 ISBN 4-320-01411-1 山本行雄『数のふしぎ・数のたのしみ―虫食い算と完全方陣』ナカニシヤ出版 ISBN 4-888-48506-2 数学セミナー編集部／編『数学100の問題　数学史を彩る発見と挑戦のドラマ』日本評論社 ISBN 4-535-60614-5 安福良直『世界最大の虫食い算』文春新書 ISBN 978-4-16-660669-6 数学パズル 覆面算 小町算 ペンシルパズル Feynman Long Division Puzzles - リチャード・P・ファインマンが私信に添えた虫食い算 佐野 昌一『虫喰ひ算大会』（旧字旧仮名）（青空文庫） 佐野 昌一『虫喰い算大会』（新字新仮名）（青空文庫）