覆面算

覆面算（ふくめんざん）は、0から9の数字がそれぞれに対応する別の記号に置き換えられた計算式を与えられ、どの記号が何の数字に対応しているかを推理し、完全な計算式を導き出すパズルである。解き手のヒントになるように、計算式は筆算の形で与えられることが多い。
例題.
「A」には、0から9までのいずれかの数字が入る。2つある「A」の一方が例えば1と決まると、もう一方の「A」にも自動的に1が入る。そして、「B」には、1以外のいずれかの数字が入る。もともとの式に現れている2を使ってもよい。
種類.
ワード覆面算.
覆面算のうち、各項が意味のある単語となっているものをワード覆面算と呼ぶ。
一例を挙げる。
掛け算のワード覆面算の場合、A × B = C の形式の物と、筆算で表記され途中の積もすべて意味のある言葉になっている物がある。
それぞれの例を1つずつ挙げる。
 　大宮
 ×大宮
 大井町
 横浜　
 浜松町
数詞覆面算.
ワード覆面算のうち、各項が数字を表す単語となっており、かつ、その数字の計算も正しいものを数詞覆面算と呼ぶ。
一例を挙げる。
Dani Ferrai・田村三郎らにより、コンピューターによる検討が行われ、多くの作品が発表されている。
複合覆面算.
ワード覆面算のうち、各ワードはそのままにして演算記号だけを変えて二つ以上の覆面算になるものを複合覆面算と呼ぶ。
Word Arithmetic.
覆面算のうち、使用された文字を対応する数字の順に並べると短文が表れるものをWord Arithmeticと呼ぶ。
すべての数字を使い切るために、割り算の筆算による形で出題されることが多い。
以下に例題を挙げる
 　　　　　　　いしき
 しれい）てつていてき
 　　　　うてほき　
 　　　　　いんして
 　　　　　てほうて　
 　　　　　　いつれき
 　　　　　　いりてつ
 　　　　　　　　ほて
除数（割る数）・被徐数（割られる数）・商の3つ（例題の太字の部分）は意味のある言葉にすることが多い。
幾何模様覆面算.
覆面算のうち、文字の配列に趣向を凝らし、同じ文字が固まっていたり直線状になっているものを幾何模様覆面算と呼ぶ。
以下に例題を挙げる。
超高層覆面算.
足す項の数が多い覆面算を超高層覆面算や超大型覆面算と呼ぶ。縦長になるのを避けるために掛け算の形で出題されることが多い。数字にも意味を持たせることができる数詞覆面算が多い。
項数に関する定義はないが、超高層覆面算として発表された作品の中で最小のものは約150項である。
以下に例を挙げる。
連立覆面算.
一問では複数解が出る式を複数組み合わせることによって解答が一意になるようにしたものを連立方程式になぞらえて連立覆面算という。
連立覆面算では違う式にあっても同じ文字は同じ数字、違う文字は違う数字である。
以下に例を挙げる。
この問題は、上の式だけだと7解（b=0 を認めると8解）、下の式だけだと3解が存在するが、（上の式のb）=（下の式のb）,（上の式のc）=（下の式のc）より解が一つに決まる。
解き方.
覆面算の解き方は問題によって変わる部分が多いので統一的な解法は存在しないが、多くの問題で使用される考え方がいくつかある。
注：以下の解説には例題として「バナナ+バナナ=シナモン」という問題を用いる。
繰り上がり.
足し算の覆面算において、和の桁数が他の桁数より多い場合には繰り上がりが発生している。このことから最上位の文字を確定する（又は絞り込む）ことができる。
また、各桁で加えている数が同じなのに和が違う場合、繰り上がりが影響していると考えられる。
繰り上がりの有無によって文字の範囲を絞り込むこともある。
偶数・奇数.
同じ数を足すと偶数になる。これを利用して文字の可能性を絞り込むことができる。ただし、繰り上がりに注意する必要がある。
数式.
数字が置き換えられた記号を変数と考えて数式をたてて解くことができる。必要に応じて各記号にそれぞれ行番号と列番号を添えて区別することがある。数式には等式、不等式、合同式などが考えられる。
その他.
九去法などを利用して、文字の範囲を絞り込んだり検算することがある。
作り方.
覆面算には決まった作り方は存在しないが、一般的には
といった手順で作られる。
例として、ヨーロッパをテーマとした覆面算を考える。
まず「イギリス+スイス=ヨーロッパ」という式を考えると、これには解が2つある。次に助詞をつけて「イギリスと+スイス=ヨーロッパ」という式を考えると、これは解が3つある。次にイギリスをイタリアに変えて「イタリア+スイス=ヨーロッパ」という式を考えるとこれは解が1つである。これで1つの問題が完成である。
一意解でない自明なパターン.
上の手順で「検算する」と書いたが、実際には見ただけで解がなかったり複数あるのが分かる場合も多い。
以下に代表的な例を示す。
朝日新聞方式.
上で例題としてあげた「バナナ+バナナ=シナモン」はこの方法で作られたものである。
一意解と分かっている式の利用.
あらかじめ一意解であることが判明している式に適当な言葉を当てはめて問題を作ることができる。
例えば「abcd+fdgh=abcde」という式がある。「abcde」に「ふくめん算」という文字をあてはめて他を調整すると「ふくめん+さんすう=ふくめん算」という問題を作ることができる。
パズル通信ニコリや虫食算研究室では、一意解の問題を提示して入れる単語を募集したことが何度かある。
コンピューターの利用.
コンピュータで覆面算を作成するプログラムが存在する。最も一般的なのは、単語群をデータとして渡すとその単語を組合せて問題を作るものである。
単語の組合せが限定される数詞覆面算ではコンピュータによる探索が一般的である。
10進法であれば、各文字に0～9の数字を当てはめて、式が成立することを確認すれば良いので、10! 通りの方法を確認することで解くことができる。一般的に r進法であれば、r! 通りの確認をすることで、コンピュータならば容易に解く事ができる。しかし、「何進法であるか」も入力の一部となっている問題については、2つの数字の加算についての問題がNP完全であることが証明されており、非常に難しいクラスに属する問題であると考えられている。
英語での呼称における注意.
数字と文字（記号）との間で式が成り立つような対応を求めるパズルを概して "cryptarithm" と呼び、その答えが実際の言葉になるなら"alphametic"と呼ぶ。
ただし、 "cryptarithm" という語は覆面算も虫食い算も包含し、二者の区別をしないので注意が必要である。そのため、"cryptarithm" の意味を汲むなら「暗号計算問題」あるいは「換字計算問題」となる。