$ ruby alphametics.rb 'SEND + MORE == MONEY' SEND + MORE == MONEY 9567 + 1085 == 10652 $ ruby alphametics.rb 'DO + YOU + FEEL == LUCKY' DO + YOU + FEEL == LUCKY 57 + 870 + 9441 == 10368 ご存知の方には説明不要でしょう。このようにアルファベットを数字に置換して解くパズルが覆面算です。ルールを簡単に示します。 アルファベットの種類は10以内(11以上は解なし) 数は10進で、単語の最初の文字は0以外に対応する(0123はだめ) この覆面算ソルバは等号に=ではなく==を使います(理由は後で説明します)。足し算だけでなく加減乗除すべてとべき乗の**が使えます。解が複数ある場合は最初に見つかったものを表示します。 $
![覆面算を解く(Ruby/Pythonレクリエーション) - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/a391d2ff89d6a6fd615f42027a200fa18bc14f08/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JUU4JUE2JTg2JUU5JTlEJUEyJUU3JUFFJTk3JUUzJTgyJTkyJUU4JUE3JUEzJUUzJTgxJThGJTI4UnVieSUyRlB5dGhvbiVFMyU4MyVBQyVFMyU4MiVBRiVFMyU4MyVBQSVFMyU4MiVBOCVFMyU4MyVCQyVFMyU4MiVCNyVFMyU4MyVBNyVFMyU4MyVCMyUyOSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9ZjQzYzM2MmRkNWJhNGJkODM5NTMxZmEzNjVjNDViYjA%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwaGlndW1hJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0yZmRmYzUyYzg0YzY0YmNhYjhiMDQ1MTNjZWZiNGI4ZQ%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D288d73973ca71879be3936fcb305db6b)