縦横のラベルの数から図の再現ができないか?

■縦横の数に合うような図を出せないかの検討。

QRコードからtkinterへの再現はできたし、その図から縦横で黒色のラベルの数を求めることもできた。今度は、その縦横の数から図を再現させるといったことができないか見てみる。
なお、今回のやり方ではうまくいっていない。

今回の手順は下のとおり。
まず図を用意。あまり、大きな図ではどうにもならないのでQRコードから36×36ピクセル(1マス4ピクセルなので、tkinterでは9×9のラベル)にクロップしたもの。

これに対して、縦と横の黒のラベルの数を求める。総数は33。上のBlackCellsCountボタンでコンソール表示させるようにした。

黒のラベルの総数が33になるようにして、11-71番目までの数値をランダムで得る。重なり無しのランダムについては、pythonで既存のメソッドなどないようなので、ランダムで出したものが既存のものと重なるかif文でチェックする。なるべく対象の数を減らすよう9×9のラベルの中でも11-71までに限定する(18, 27なども不要だけど面倒なので11-71にする)。

これでランダムで黒色のラベルを指定できるので、この結果が上で求めた縦横の数と一致するまで繰り返す。

この方法で行うと、これだけ小さい図でも終わらない。やはり各行ごとに見ていく必要があるかな。後は、数は大きいかもしれないけど、単純な組み合わせの問題かと思う。つまり、ラベルの総数に対する黒のラベル総数。上の例では、61C33。この組み合わせをすべて検証すれば一致するものが出てくるはず(上の例では元の図だけかもしれないけど)。