メニエスの名のもとに

プログラミング関係を中心としたぐだぐだブログ

ナンプレ(数独)問題作成プログラム バグ2

またしてもバグ

昨日のバグを修正して、検証しようとしていたら、別の問題に遭遇。もうやる気なくなってきたよ。

このスクリーンショットがその問題。紫色の1468がNaked Quadruple になっている。1468だけで四カ所を占有しているので、それ以外の場所の1468が消せるという状態である。これ自体には何の問題もない。だが、うっすらと見える隣の列を見て欲しい。そこには、23というNaked Pair が見えるではないか。
それなら23のNaked Pairの方を先にヒントにするべきだろう。この問題、実はプログラム作成中に一度は頭に浮かんだんだけど、これを解決するにはせっかく同じルーチンで解けるNaked 系の組と Hidden 系の組を別の関数にしなければならない。
抽象的に一つにまとめられるものは一つにした方がいいというのがプログラマとしての習い性として身についているので、分けるのには抵抗があるのだ。しかし、しばらく悩んでから分けることにした。
結構大きな修正なので、まだ出来ていないが、この種のものは、Naked Pair, Naked Triple, Hidden Pair, Hidden Triple, Naked Quadruple, Hidden Quadruple, Naked Quintupleの順に探索することにした。順番付けて探すなら半端な順番にしても仕方がないので、このくらいの順番にしないとね。
実際には業務プログラミングでも一つに出来る処理を二つに分けることはあり得る。それは、処理を高速化する時である。最近は少ないかも。99%のケースを別ルーチンにして高速化するとか、悪いことじゃない。
なお、これまでのところ、Hidden Quadruple, Naked Quintuple を含む問題は作成できていない。

本日のアフィちゃん

冬は肌が乾燥して痒くなるんだけど、普通のタオルだとやはり泡立ちが悪い気がして。これは柔らかくて泡立ちがいい。

アワスターSP 超やわらかめイエロ-

アワスターSP 超やわらかめイエロ-