2014年01月20日
今日はまるっきり違う方向性のネタ。
頭の体操。
頭の体操と言っても、そんな大袈裟なものではないです。
4桁の数字(1桁の数字を四つ)を四則演算のみで10にするというものです。
例
1234 → 1+2+3+4=10
他に、2×3+4×1=10としてもいいです。
一応、ルールを明文化すると、
・数字の順番の変更は可
・括弧を使って演算の順番を操作するのも可
・各数字の使用は一回のみ
としています。
切符に印刷されている4桁の数字とか車のナンバープレートを見たりして、よくやってました。
問題を出力するプログラムも書いたりして遊んだりもしました。
問題を自動で作るのは簡単ですね。4桁の数字を乱数で表示すればいいだけですから。
実際には不可能な数字もありますけどね。0000とか1111とか。
なので、0019~9999までの範囲の数字を出せばいいんです。ただ、順番の変更がありですので、0001が1000とか0100とかも駄目です。
まあ、そんなのが出たら飛ばせばいいだけですが。
そして、考え始めたのが、問題を出力するのではなく、解答を求めるプログラムです。
完全に自分だけでは作れなかったので、当時の勤務先のコンピュータに詳しかった先輩が考え方や式の処理方法等を教えてくれました。実際にサンプルも作られ、その手法を見て自分でも作りました。
8ビット時代から作り始め、最初のものから何度も改良をして、随分と前ですが開発は終了しています。
簡単に書くと、式を逆ポーランド記法で作り、数字の順番の入れ換えもしながら、総当たりで計算するだけです。
逆ポーランド記法を使うと、括弧を使わずに式を書くことが出来るので、式を解析、処理するのに「+-×÷」の四つだけを考えれば良くなります。
上記の式の例だと、
2×3+4×1 → 2 3 × 4 1 × +
のようになります。
今でも保存してあるので、希望があればプログラムを提供してもいいですよ。
動作環境はMS-DOSとWin32です(一応Windows3.1用もありますけどね)。
Win32に関しては数値演算プロセッサ機能が必須です。まあ、今時の機種で困ることはないですが。
この動作環境の意味がわからない人が多いんだろうなあ。(^^;
Posted at 2014/01/20 09:48:47 | |
トラックバック(0) |
頭の体操 | ビジネス/学習