editorial 解
(0, 1), (1, 0), (1, 1) に平行ないい感じのベクトル 3 本をとって10 倍格子を作ると a = b = c = 100, d = 1000 になります。
私の方針
書いてみて気づいたのですが、解説の方針のちょっと要領の悪いバージョンといったところですね。
着眼ポイント
- a, b vs c, d を作れば、あとはこれを (1, 1) でずらして増殖すると良いです。(今考えると、これを 3 回やるのが editorial 解なのですね。)
- 縦横には重なっていても、ずらせば斜め位置が全部違うようにできそうです。
- 再帰的に構成できると嬉しいです。
再帰的構成
このような感じで、x 方向と y 方向交互に 2 冪だけずらしていくと、斜めにいは一切重ならず、縦横にはそこそこ(平方根くらい)重なっていることになります。
ずらします
このようにずらすと、c, d が影響を受けます。
すると a, b, c, d の値はこのようになります。制約も OK です。
バーガーが斜めに重なっていないことの視覚化
45 度ずらすと見やすいでしょうか。行列だと思うと、対角に 2 倍するのと反対角に 2 倍するのを交互にやります。
感想
けっこううまくやったつもりだったのですが、考えてみると解説の方針の劣化版といった感じです。
いずれにしても、D 以外のところを重ねつつ D は重ねないように増殖していけばよいようですね。