数独のソルバーを作っては、機能を追加したり、解法を追加するかを考えたりしている。
前回はチェーンについて考えてみた。
今回はスカイスクレイパーについて考えてみる。
チェーンやスカイスクレイパーはまだ組み込んではいないので、それが必要になる局面で、プログラムは一時停止する。
これを解かせると、
こんな感じになる。
5に着目して、行や列で2個しかないところを探すと、
d列とf列とh列が見つかる。
関係するところをアルファベットを振ってみる。
なんだ、チェーン系でしたね。
ニコニコチェーンなので、
Aが5ならば、Dが5でない。
Dが5ならば、Aが5でない。
という関係から、
EとFから5を取り除けるということです。
スカイスクレイパーという名前。
世代的な話になるが、
歌詞に出てきたものとして認識はしていたが、
摩天楼のことですね。
2本のそびえ立つ様が、そういうことなんでしょうね。
高さが異なることで、除外できるものが出てくるということだろう。
今回はBとCは強いリンクになっているが、ここは弱いリンクであっても、チェーンとしては成立するということなのでしょう。
スカイスクレイパーが隠れているようです。
9に着目して探してみましょう。
アルファエットを振ってみました。
EとFの9が取り除けますね。
無事解決しました。
スカイスクレイパー、結構使う機会があるように思えてきました。
プログラミングとしてみると、スカイスクレイパーはチェーン系ではあるが、前回のチェーンの回とは、構造がちょっと違うので、別のサブルーチンとして分けて考えたほうが楽そうではある。
スカイスクレイパーは3連結で、チェーンは3以上の奇数連結が可能だが、連結が多くなると、処理が重くなってしまうので、その辺のさじ加減も考えないとならない。
ではでは
PS:
スカイスクレイパーが登場する楽曲は、
プリンセス・プリンセスの『Diamonds』です。
1989年4月21日に発売されたって、ちょうど36年前の今日でした。
私が大学生の頃の楽曲ですので、知らない世代のほうが多いだろうな。
てか、なんだこの偶然の一致は…
怖いんだけれども…









