« 「サンタのトナカイは雄か雌か」 | トップページ | DNAと遺伝子は違う »

2013年12月 1日 (日)

10puzzle 「おもしろい問題」って?

(全体の目次はこちら


10puzzle 「おもしろい問題」って?

- 解ではなく問題を探す。 -

 

今日は算数パズルの話題。
Google Nexus7のCMでこんな内容のものが放送されていた。

 

【1,1,5,8で10を作る】

この問題、私が学生のころは電車の切符でよくやった。

Img_6926s

この切符なら【6847】を解く。

切符に印刷されている4つの数字を使って四則演算だけで10を作る式を探す。
それだけの問題だ。

ご存じない方のために、例を示すと、

 【 1234 】の場合、

   「 1 + 2 + 3 + 4 = 10 」   でもいいし、
   「 (2 x 4) + 3 - 1 = 10 」  でもいいし、
   「 ((3 x 4) - 2) x 1 = 10 」 でもいいし、

とにかく、4つの数字を全部、一度だけ使って四則演算のみで10にする式を見つければいい。
数字を使う順番は問わない。

(この問題、実際にそう呼んだことはないが、
 「10puzzle」、「make10」、「テンパズル」、「10 Puzzle」、「Ten Puzzle」などと
 呼ばれているようなので、
 このブログでも「10puzzle」を使わせていただくことにする)

だれが早く解を見つけられるか仲間で競争したり、
目的の駅までに解けず、モヤモヤした気分のまま電車を降りたり、
いろいろな思い出がある。

Suicaの登場以降、切符を手にする機会はすっかり減ってしまって、
もうずいぶん長い間、この問題で遊んではいない。
CMを見て、久しぶりに思い出した。

 

【解法プログラム】

当時、理系学部の学生だった私は、
友人とこの問題をプログラムで解くことにも挑戦した。

「マイコン」なんて言葉がようやく知られるようになった
そのころのコンピュータの思い出話を始めると、それだけでキリがなくなるので
ここでは全部省略するが、メモリわずか数KBという貧弱なハードウェアリソースでも
なんとか解が導ける手頃な問題であった。

ちょうどそのころ、共立出版から「bit」という雑誌が出版されていた。
(2001年に休刊となってしまったのだが、)
計算機に関するかなり硬派な内容の雑誌だった。

この雑誌がこの問題(10puzzle)を解くプログラムを募集していたことがある。

自分が応募したわけではないが、応募作品が掲載された号の、
その解説を興味深く読んだ記憶がある。
いかにエレガントに解くか、
アルゴリズムに「美」を求めていたような時代だった。

と、ここまでは単純な問題解決プログラムの話。

 

Img_6898s

切符の数字の例:
もちろん、JR以外の切符にも4つの数字はある。
この切符の場合は【9468】が問題となる。

 

【雑誌「bit」が出した次の問題】

ところが、「bit」は、この問題をこれで終わりにしなかった。

「10pluzzle」、実際にいろいろな問題に挑戦してみるとわかるが、
このパズルには「おもしろい問題」と「つまらない問題」とがある。

上に挙げた
【1234】の出題に対して
「1 + 2 + 3 + 4 = 10」と解けても、「おもしろい問題だ」とは思えないだろう。

ところが、CMで取り上げられている【1,1,5,8】に挑戦して、
自らの力で解の式に到達できれば、思わず「おもしろい!」と声をあげるはずだ。

 

雑誌「bit」が着目したのはこの点。

「10puzzleにおいて、『おもしろい問題』を探すプログラムを作れ。」

いい問題だ。解ではなくて、問題のほうを探すプログラム。

そもそも挑戦したときに、
「おもしろい」と感じるポイントはどこにあるのだろうか。

すぐに解ける簡単な問題は、多くの場合「おもしろい問題」ではない。
【1234】はまさにこのグループだ。
ある程度の困難さは必要な気がする。

では、難しければそれだけで「おもしろい」のだろうか。
そもそも「難しい問題」とは、どう定義すればいいのだろう。

「解の式がただひとつ(1種類)しか存在しない組合せ」
「解の式に引き算や割り算を多く含む組合せ」
「計算の途中で整数以外を経由する組合せ」
「いかにもすぐに解けそうなのになかなか解がみつからない組合せ」などなど。

もちろん「おもしろい」の定義に絶対的な正解があるわけではない。

「おもしろい問題」をみつけるための評価関数について
仲間内で、あれやこれや議論したりもした。

 

<ひとこと補足>
 解の式の「かず(種類)」の定義については、
 ここでは深く述べないことにする。
   (1+2)+3+4=10 と (1+4)+2+3=10 は同じ式(1種類)だが、
   (1+2)+3+4=10 と (2x3)+(4x1)=10 は違う式(2種類)とする、程度の意味。

 たとえば
 【5558】の場合、

   ((5+5) - 8) x 5 = 10
   ((8-5) x 5) - 5 = 10
   ((5+5) / 5) + 8 = 10

 と「解は3種類ある」と数えることにする。

 

さて、いくつかの具体例で「おもしろさ」について見てみよう。

 

【例題1:1167】

【1167】

ちょっとお考えあれ。

それほど時間をかけなくても解けることだろう。
答えは

6/(1+1) + 7 = 10

この問題、実はこの1種類しか解がない。
1種類しか解がないのに、たいていの人はあまり時間をかけずに簡単に解けてしまう。

解が1種類しかないのに、比較的簡単に解ける組には、

【1116】
【1149】
【1555】
【1566】
【1599】

などがある。

解が少ないことが、難しさやおもしろさと直接繋がっているわけではない。

 

【例題2:2477】

【2477】

「簡単、簡単」と思った方、浮かんだ解はおそらくこれだろう。

(7/7 + 4) x 2 = 10

ところがこの組合せには、もうひとつ別な解がある。

(2 - 4/7) x 7 = 10

解はこの2種類のみ。一方は易しいのに、
もう一方を探そうとするとかなりの難問だ。
最初にこちらの解が浮かぶ人がどの程度いるのかわからないが、
この式で解けた人は「おもしろい問題だ」と思ったことだろう。

 

同じようなパターンには、
【2334】もある。

解は全部で4種類あるが、

(3x3 - 4) x 2 = 10
(3/3 + 4) x 2 = 10

は簡単。ところがこの問題には

(2 + 4/3) x 3 = 10
(4 - 2/3) x 3 = 10

という解もある。こちらの方はなかなか思いつかない。

10puzzleは、ひとつでも解が思いついた時点で「わかった!」となって終わってしまうので、
これらは「つまらない問題」に分類されてしまいがちだが、
おもしろい解を含んでいる問題であることに間違いはない。

【2477】の (2 - 4/7) x 7 = 10

【2334】の (2 + 4/3) x 3 = 10
などは、
「おもしろい問題か?」において、どのように扱うのが適切なのだろう。

 

このように、「おもしろい問題」を少ない条件だけで定義することはむつかしい。
むつかしいからこそ、考えるのはおもしろい、とも言えるのだが...

 

というわけで、いまだにプログラムで「おもしろい問題」を自分が納得できるかたちで、
すっきりと選ぶことはできていない。
しかし、経験的に「おもしろい」と思ったものを選ぶことはできる。

10puzzleの「おもしろい問題」、お薦めは以下の組合せだ。

【3478】
【1158】

【1199】
【2289】
【6699】

【4466】
【7899】
【9999】

ネットで解を「探す」のではなく、
自身の頭で解を探してみて下さい。
どの組合せも「解ける」問題です。

 

 

どうしても、の方はこちらをどうぞ。

完全版 テンパズル (10puzzle) 全問題 全解答一覧

 

(全体の目次はこちら

 

 

 

 

 

« 「サンタのトナカイは雄か雌か」 | トップページ | DNAと遺伝子は違う »

日記・コラム・つぶやき」カテゴリの記事

映画・テレビ」カテゴリの記事

科学」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1756499/54110109

この記事へのトラックバック一覧です: 10puzzle 「おもしろい問題」って?:

« 「サンタのトナカイは雄か雌か」 | トップページ | DNAと遺伝子は違う »

2017年7月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
無料ブログはココログ