2006年11月21日

4つの数で10

車を運転しながら,前の車のナンバープレートの4桁数字を組み合わせて10を作るという遊びをよくやる。昔は電車の切符の番号でもやったが,最近は切符を買う機会はめっきり減ってしまったので専ら車のナンバーである。なかなか優れた頭の体操であると思う。

たとえば,「1 6 2 3」なら,1+6×2−3=10 とか,「7 1 3 8」なら,(7−1) ×3−8=10 といった具合にである。

この,4つの1桁整数に演算子を組み合わせて10を作るという遊びは,他愛ないようでいて実は奥が深い。演算子に何を使うか(四則演算とカッコ以外にべき乗や平方根などを使うかどうか)によっても可能性は変化するが,簡単のために四則演算とカッコのみを使う場合に限定しても,「0 0 0 0」から「9 9 9 9」までの1万通りの組み合わせのうち,いったい何%くらいが10になり得るのか。

奥が深い,と書いたのは,この問題を解くプログラムをエレガントに作る方法がなかなか見出せないからである。もちろん,4つの変数にそれぞれ整数を入れておき,演算子の組み合わせをすべて与えて10になるケースを探索すればよいだけなのだが(探索の計算量もどうってことはないだろう),演算子の組み合わせをすべて与える,という部分をコーディングするのがなかなか難しい。べき乗や平方根をも考える場合はなおさらである。

というわけで,これ,プログラミングの課題。if 文をいっぱい並べる,というのは少し芸がないので,できる限りソースコードが短くなるようなプログラムを任意の言語で作りなさい。>プログラミング好きな学生諸君
posted by gecky at 23:58| Comment(0) | TrackBack(0) | 科学技術 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。