ナンバープレイスを課題にしたプログラム作りです。解法手順2の記述に辿りつきました。手順2は、「区画内に数字の確定したマス目があるとき、確定した数字は、区画内の他のマス目の候補から外す」でした。区画ごとに数字の確定したマス目を探します。要素を取り出すことで得られます。取り出した要素も配列であり、マス目の位置を表す添字の集合となっています。$grid[$e]とすることで、そのマス目の候補値を参照できます。候補値が一つの数字からなる文字列、つまり長さが1の文字列なら、数字の確定したマス目だということになります。コードは次のとおりです。$region)区画内に確定した数字を見つけたら、次の処理として、区画内の他のマス目の候補からその数字を取り除く作業を行ないます。確定した数字を長さ0の文字列''に置き換えます。コードは次のとおりです。確定値と同一の候補を取り除く。$region)手順2の記述は簡単でした。結果的に手順3も記述したことになります。手順3は「候補の数が一つだけになったマス目があれば、そのマス目に入る数字が確定する」でした。上のコードでは候補値を列記した文字列から確定値を取り除いていきますので、1文字になった時点で、そのマス目に入る数字が確定したことになります。上のコードをプログラム本体に組み込んで実行させてみましょう。組み込む位置は、PrintGridState();の直前です。実行結果は次のとおりです。8(1579)(139)マス目の列が揃っていないので読みにくいのが難点です。関数にコードをを書き足します。全てのマス目の状態を表示する。}}改めて実行結果を記します。読みやすくなりました。確定値を持つマス目は増えませんでしたが、候補値の文字列が短くなったのが判ります。※右の文字列を入力してください。