数独のソルバーを作っては、機能を追加したり、解法を追加するかを考えたりしている。

 

前回はチェーンについて考えてみた。

 

今回はスカイスクレイパーについて考えてみる。

 

チェーンやスカイスクレイパーはまだ組み込んではいないので、それが必要になる局面で、プログラムは一時停止する。

 

 

これを解かせると、

 

 

こんな感じになる。

 

 

5に着目して、行や列で2個しかないところを探すと、

d列とf列とh列が見つかる。

 

 

関係するところをアルファベットを振ってみる。

 

 

なんだ、チェーン系でしたね。

 

ニコニコチェーンなので、
Aが5ならば、Dが5でない。
Dが5ならば、Aが5でない。
という関係から、
EとFから5を取り除けるということです。

 

スカイスクレイパーという名前。

 

世代的な話になるが、

歌詞に出てきたものとして認識はしていたが、

摩天楼のことですね。

2本のそびえ立つ様が、そういうことなんでしょうね。

 

高さが異なることで、除外できるものが出てくるということだろう。

 

今回はBとCは強いリンクになっているが、ここは弱いリンクであっても、チェーンとしては成立するということなのでしょう。

 

早速、EとFから5を取り除いて続けてみます。

 

スカイスクレイパーが隠れているようです。

 

 

9に着目して探してみましょう。

 

 

アルファエットを振ってみました。

 

 

EとFの9が取り除けますね。

 

 

無事解決しました。

 

スカイスクレイパー、結構使う機会があるように思えてきました。

 

プログラミングとしてみると、スカイスクレイパーはチェーン系ではあるが、前回のチェーンの回とは、構造がちょっと違うので、別のサブルーチンとして分けて考えたほうが楽そうではある。

 

スカイスクレイパーは3連結で、チェーンは3以上の奇数連結が可能だが、連結が多くなると、処理が重くなってしまうので、その辺のさじ加減も考えないとならない。

 

 

ではでは

 

PS:

スカイスクレイパーが登場する楽曲は、

プリンセス・プリンセスの『Diamonds』です。

1989年4月21日に発売されたって、ちょうど36年前の今日でした。

私が大学生の頃の楽曲ですので、知らない世代のほうが多いだろうな。

てか、なんだこの偶然の一致は…

怖いんだけれども…