前回、ブロック内の数字配置パターンを利用して、
数独の問題を1行の文字列で表記する方法についてまとめた。
この表記方法をしばらく運用してみて、
まだもう少し工夫の余地があると考え、
数字配置パターンの追加削除の見直しを行う。
使用頻度が少ないKパターン、Uパターンは削除する。
一方で使用する機会が多いと考えられる
Tパターン、RパターンとYパターンは追加する。
数字配置パターンの一覧
各パターンのブロック内数字配置を図でまとめる。
基本パターン15、拡張パターン12の
27通りの配置パターンでブロック内の数字配置を表記する。
リーディングゼロサプレスとトレーリングゼロサプレス
固定長数字の場合、先頭側のゼロ、あるいは末尾側のゼロは省略できる。
例えば、5桁の数字文字列00123は
リーディングゼロサプレス(LZS)では数字の123と表記できる。
一方、別の例で5桁の数字文字列12300は
トレーリングゼロでサプレスでは数字の123と表記できる。
パターンを記述するとき、パターンZは9桁のリーディングゼロサプレス、
パターンYは9桁のトレーリングゼロサプレスを適用すると定義する。
これによりZ123は000000123、Y123は123000000となり、
それぞれブロック内の数字配置を表せる。
パターンZとパターンYは文字列長が短くなるよう、
数字文字列の前後の0の数で使い分ける。
数独問題の盤面から1行文字列を作成する例
記事の先頭にある数独問題を1行文字列に変換する例を載せる。
数独問題は配置パターンが分かり易いように(?)を補って再掲する。
上の数独問題を1行文字列で表記する。
F608 X84517 E304
LC57034 Y903201 LD6143
RC65030 Z20518 RD82500
数字配置パターンの捉え方
ブロック内の数字配置パターンの捉え方は1通りではない。
FパターンがCパターンになる。
上段右のブロックはEパターンがCパターンになる。
さらに上段左のブロックは、リーディングゼロ
サプレスによりC068がC68と表記できる。
これにより、上段の3つのブロックは
C68 X84517 C304と表記できる
このようにブロックによっては複数の
数字配置パターンで表記できる場合がある。
この場合、どちらの表記を使うかは好みの問題で適宜判断する。
文字列長は1文字変わるが、表記する盤面は同じです。
数独問題はダイソーナンプレ3中級編第31問から引用。
(owaki)