![]() |
これまで解析機能に加えた修正のまとめです。 ご参考までに、どうぞ。 |
![]() |
誰が読むんだろ。必要あるのかな。 作者の自己満足? もしくは露悪趣味? 恥さらし? |
![]() |
まあ、別に、今解ければいいって人は読まなくていいんですけど。 修正の歴史も意外とドラマティックだったりするんですよね。 |
![]() |
やっぱり自己満足だ。 まあいいや。聞かせてもらおうじゃないの。 |
![]() |
聞いていただきましょう。まずは2010年1月、version 1.4 で修正した2個。 自分で気付いていた動作の不備と、中村様に指摘していただいたバグ。 |
![]() |
はい。 |
![]() |
あらかじめ気付いていたのはレベル3にあった動作の不備。 小ループ禁止の連発に対応できず、手動で繰り返さねばいけなかったものです。 |
![]() |
やっと、1回の実行で解ける限り解いてくれるようになったのね。 できるならもっと早くやっとけよ!……ってのは酷かな? |
![]() |
う〜ん、今まで気付かなかった解決法をヒラメイタらしいから。 「人生にはそういうこともある」らしいよ。 |
![]() |
へえ、まあいいや。 もう一つの指摘されたバグは? |
![]() |
1〜3の数字に線が引かれてない場合に、完成の判定で見逃してしまうバグ。 その時は修正して表面上は解決したのですが、実はもっと根深いものでした。 |
![]() |
え? version 1.4 の修正で終りじゃなかったんだ。 |
![]() |
はい。その時は分からなかったのですが…… その後、上村様の指摘で根本的な問題に気付き同年9月の version 1.6 の修正へ。 |
![]() |
なるほど、真の原因は別にあったと。 ドラマティックなわけだ。 |
![]() |
完成(単独ループ確定)時に数字周囲の線不足を見逃してしまうバグ。 後に指摘されたバグが、以前のバグのそもそもの原因だったわけです。 |
![]() |
ああ……そうか。そうだね。 確かに同じ内容だね、この2個のバグは。 |
![]() |
線不足の判定は普通は×印でします。空欄はまだ線が引かれるかもですから。 でも完成時はもう線が引かれないので、空欄も×印として判定すべきなわけで。 |
![]() |
ええと……そうか。 単独ループ確定した時は特別扱いしなくてはいけなかったんだ。 |
![]() |
普通に×印をつけて解いていれば、条件として出現しないバグなんですが。 version 1.6 の修正をして、version 1.4 のその修正は不要になり削除しました。 |
![]() |
まさに「そうだったのか!」って感じ? 痛恨の経験だね。 |
![]() |
実は、この問題はもう一つ続きがありまして。 矢藤様と若槻様のご指摘による同年11月 version 1.7 の修正。 |
![]() |
まだ引きずるの! それも2人から指摘されてるし。 |
![]() |
完成する瞬間に小ループ禁が絡むと、ある条件下で間違った解析結果になるバグ。 ある条件とは、最後に引かれるべき線を含むマスに数字が入っている状態。 |
![]() |
込み入った出現条件だねえ。 どうしてそうなるの。 |
![]() |
それはプログラムの構造や条件分岐によるもので…… ともかくも、これは例の根本的バグと少し関係しています。……わかる? |
![]() |
ええっと……ああ……そういわれれば、そうかも。 「ある条件」の内容が、そうだね。 |
![]() |
version 1.4 で加えた修正の処理が、一ヶ所、思慮不足でした。 version 1.6 でもそれを継承して続いていたので、それを削除で解決。 |
![]() |
必要だと思って加えた処理だったんでしょ。 難しいもんだね。 |
![]() |
作者も、解析プログラムがいかにデリケートか、思い知ったようです。 あと、同時期に指摘されたバグを調べると実は原因が同じだったって、スゴイ? |
![]() |
出現しにくいバグを同時期に指摘されたのだったら、面白いね。 そうか、原因が同じでもバグとしての出方は違うんだ。 |
![]() |
残り二つ。年がかわって2011年10月 version 1.8 での修正。 指摘してくださったのは version 1.7 でもご指摘いただいた矢藤様。 |
![]() |
おお、2度目だ。 今度は何? |
![]() |
背理法で矛盾の検出が不十分でした。解ける問題を解けないとしてしまいます。 まあ普通は別の箇所から解けてしまうので、よほどの限定条件下でしか表に出ません。 |
![]() |
ほとんど表に出ないから、それまで判らなかったんだ。 それを見つけた矢藤さんて人はスゴイね。 |
![]() |
常識外れの問題をたくさん作られているようで、おかげさまで大助かりです。 究極のは最後、時間を戻して2010年6月 version 1.5 で改良した1個。 |
![]() |
矢藤さんから3度目のご指摘、と。時間的にはこれが最初だけど。 何だったの? |
![]() |
「解き口」が無い問題は解けなかったのを改善し、解けるようにした。 解く時の入り口になる簡単な数字の配置を、この場は「解き口」と呼びましょう。 |
![]() |
レベル1で解ける内容イコール解き口なわけね。 解き口がないと最初から先読みをせねばならない・・・・・・無茶な問題! |
![]() |
だからニコリに投稿しても載らないですし、普通は作りません。 それをあえて作る人が世の中にはいました。素晴らしいですよね。 |
![]() |
これが、いわゆる「特殊な偏った問題」の一つか。作者も想定してなかったんだ。 でもレベル5の背理法で解けたんじゃないの? |
![]() |
このソフトの背理法では「線をどう延ばせるか」を判定していました。 だから解き口がなく線が引かれない状況では解けませんでした。 |
![]() |
なるほど。線を基準にした解析なわけだから。 レベル1で解析が進まなければ、その後も解けない仕組みだったわけだ。 |
![]() |
レベル5に「線を引くと破綻するからここは×」という背理法を加えました。 解き口が無い問題にはこれが実行され、それでほとんど解けるはずです。 |
![]() |
ほとんど解けるはず? ということは、解けない問題もある? |
![]() |
この背理法をくぐり抜ける問題を果たして作れるのかどうか。 解き口が無い問題自体が皆無だから、もう想像の世界だよね。 |
![]() |
まあ、これ以上追求するのは現実的じゃあないよね。 重箱の隅をつつくような話になっちゃう。 |
![]() |
でも、まあ、解けない問題があれば遠慮なく教えていただきたいです。 先にも言いましたが、バグや解けないタイプの特殊な問題はありえます。 |
![]() |
確かに、可能性としてはね。 |
![]() |
もし何かおかしい動作を見つけたら遠慮なくお知らせください。 一人で作っていると気付かない事が多い、と作者の言葉です。 |
![]() |
バグに気付いても知らせてくれる人は少ないよね。 ほとんどは放置だもんね。 |
![]() |
そういう人に知らせてもらいたいそうだよ。 知らせてくださった4人の方には大感謝です。ありがとうございました。 |
![]() |
さて、次は? |
![]() |
次は3つの判定機能です。 今解説してきた解析も利用しています |