お気づきの点や感想要望などなんでもOK!
高橋さんいろいろと教えていただきありがとうございます。 まづはボール3つからと考えていたのですがそれも簡単にはいかない ようですね。うーむ難しい。。。
解答者は「最短で解を見つけよう」として光の当てる箇所を指定する訳ですが それに対する出題者からの返答は「最も解を特定しにくい最悪の位置」から光が 出てくるということを前提にして探索を行う必要があるということです。 こう言う探索法を「ミニマックス法」といいます。これを幅優先探索で行うと 解を最短で見つける光の当てる箇所が見つかることになります。 ただし、このパズルは選択肢が多すぎるようなので幅優先ではメモリがパンク すると思われます。そうなると反復深化を使うことになりますが反復深化は とても遅い探索法なのでよほど工夫しないと失敗することになると思われます。 実はちょっとプログラムを書いてみたのですが、このパズルは決して簡単な問題 ではありませんでした。ボール1個の場合でやっと最短4手という結果を得る にしか至っていません。majorさんの独自ルールでもボール1個なら最短4手です。 この程度の結果ならプログラムを書かなくても解るんですけどね。。。。
皆さんいろいろありがとうございます。 >高橋さん 最短の探索についてよろしかったらもう少し詳しく教えていただけないでしょうか。 よろしくお願いします。
としひでさんのプログラムを見て納得しました。 光の進路がループする場合は吸収(ブラックボックスに吸収された)と返答する訳ですね。 そうなるとルールの優先順位は自然な流れとして、 b:玉に吸収(玉のマスで判定), e:入口反射, d:180度反射, c:90度転換, a:直進 ということになるし、提示されている例題も解が求まることになる。、、ですね。 majorさんの独自ルール(玉にぶつかると180度反射し光が吸収されることはない)ですと 玉の個数が5個以上ある場合は光の進路がループして吸収されるケースがあるので玉の 個数は4個以下に制限されることになります。 さて、いよいよ「解を最短で見つける」という話ですが、これは秤の問題を求めるのと 同じ考え方でいいと思います。ミニマックス法的にシラミ潰し探索をする、という程度 のことしか思い付きません。 面白い問題なので時間があれば実際にプログラムを書いてみたいです。
としひでさんありがとうございます。みなさん本当にすごいですね。 感激致しております。 現在自分が考えている問題としては光の吸収のルールは180度反転する ということで考えています。よって入力された座標と出力された座標は 情報として得ることができます。その2つの情報から玉の位置を推測 するプログラムを考えております。玉の数も3つからと考えています。 よきアドバイスがございましたらよろしくお願いします。
みなさんこんにちは。 面白そうな問題なので首を突っ込んでみます。 件のページで提示されている問題は、組み合わせ64C5=7624512通り調べるといけました。 光の吸収は、ボールのますで起こるということにした上でですが。 ただ、解を最短で見つけるとなると、難しそうですね。 ブラックボックスが外部からの光だけでどの場合も一意に定まるのでしょうか。 int search(int d) { if (0からd-1までの入力で解が一意に決まる) then return 1; return d番目の全ての入力パターンに関するsearch(d + 1)の最小値 + 1; } みたいな感じでどうなのでしょう。(計算時間的に無理っぽいですが)http://homepage2.nifty.com/hanatani/puzzle/blackbox.c
高橋さんありがとうございます。 正直自分の中で明確になっていない部分があるのかも知れないのですが、 2つならびにぶつかったときにはbが適用されると考えています。 ということで吸収されるとしたら(3,26)で吸収されて今時分が考えている 180度反転ということからいくと4から出た光は4に返ってくるということに なると思います。もし的外れなことを言っていたらすみません。 やはり5つもあると難しいですね。3個ならできるかな。。。
majorさん、shellyさん、こんにちは。 下の図で4 から入った光はどうなるでしょう。 どうなるかを知らせる選択肢には無い結果になります。 吸収されるというルールはボールの直前のマスで判断すべき ものなのでしょうか。そうなるとルールの優先順位は明確に 示しておく必要があると思うのです。 32 31 30 29 28 27 26 35 1 □ □ □ □ □ □ □ □ 24 2 □ ● □ □ □ □ ● □ 23 3 □ □ □ □ □ □ ● □ 22 4 □ □ □ □ □ □ □ □ 21 5 □ □ □ □ □ □ □ □ 20 6 □ □ □ □ □ □ □ □ 19 7 □ ● □ □ □ □ ● □ 18 8 □ □ □ □ □ □ □ □ 17 9 10 11 12 13 14 15 16 # 昼休み中に書き込みしてていいのか!<自分
早速のご返信ありがとうございます。ひとつ言い忘れていたことがありました。 ルールbについては今自分が考えている問題では吸収されるのではなく180度反転 を考えています。よって入力位置と出力位置は必ず得ることができると思います。 ボールが複数の場合や優先順位についてはshellyさんのご指摘どおりです。 まずはボールの数を3個から作成できればと考えています。その後4つ5つと拡張 できればと考えています。最短で見るけるにはどうすれば。。。
ブラックボックスというゲームは初めて知りました。 優先順位が問題になるのは、eのケースしかないと思いましたが。 bは当然、自分のマスのことなので最優先でしょう。 cとdってジツは同じことですねで、競合しません。 とすると、eとcの場合ですが、文脈からしてeが優先されそうです。