タイルを永遠に置き続けるゲーム

CF#534のDiv1Aの一般化について考えていました。 https://codeforces.com/contest/1103/problem/A 要約版↓ H*Wのグリッドがあり、そこに1*2か2*1のタイルを重ならないように置いていきます。 列または行が完全に埋まると、その列(行)は消えて空きマスに戻ります。 どんな順番でタイルが来ても永久に置き続けられる戦略は存在するでしょうか?
5
ꑄ꒖ꐇꌅꏂ🐾 @snuke_

A問題の盤面サイズを一般化したとき、永久に出来るH,Wの条件は?

2019-01-23 01:55:55
ꑄ꒖ꐇꌅꏂ🐾 @snuke_

実はまだ解けてないんですが、min(H,W)=1がダメなのは自明でそれ以外は全部できるという仮説を持っている。 - Wが偶数 -- H=2:自明 -- H>=3:縦を上2行に、横を下1行に割り当てればいい Hが偶数の時も同様なので、本質は奇数*奇数。とりあえず3*3は出来た。

2019-01-23 02:29:07
ꑄ꒖ꐇꌅꏂ🐾 @snuke_

H=2が自明は嘘で、W=2なら自明、W>=3なら"H>=3"の方法でできる。(まぁ簡単だけど)

2019-01-23 02:32:36
かつっぱ@ 競プロYouTuber @catupper

@snuke_ W=偶数、H=3のときうっかり縦に消えたりしませんか?(とはいえ反例が見つかったわけではない)

2019-01-23 02:37:36
ꑄ꒖ꐇꌅꏂ🐾 @snuke_

@catupper たしかに。これも本質だった。

2019-01-23 02:40:12
きり @kiri8128

@snuke_ H,W>=4のとき、 左下から詰めて2×2の正方形にグリッドを分けておきます(奇数のときは右1列and/or上1行が余る)。 なるべく各正方形がきれいに埋まるように置いていく(縦だけおいたグリッドがあって縦がもうひとつ来たら埋める。右と上の隙間には消えるとき以外置かない)方針でうまくいきます。

2019-01-23 02:59:28
ꑄ꒖ꐇꌅꏂ🐾 @snuke_

@kiri8128 どちらかが偶数の時はなにか変なことが起こりそうな気がちょっとするんですが、H,W>=3かつ奇数*奇数はかなり綺麗に出来てそうですね。これは美しい...

2019-01-23 03:09:04
ꑄ꒖ꐇꌅꏂ🐾 @snuke_

補足(奇数*奇数):切羽詰まった状態というのは、2*2のグリッドのうち1つを除いて全て埋まっているという状況で、H,W>=5なら全てのグリッドが埋まっている列と行が少なくとも1つ以上ずつはあるのでそこを消せばいい。

2019-01-23 03:32:26
きり @kiri8128

@snuke_ H=3かつW>=3のときは、 「各列では、ある箇所から下のみ(ゼロもありえる)が埋まっている」 「各列の埋まっているマスの個数は左から右にいくにつれて単調減少」 を守る置き方が必ず存在するので、これに従うとうまくいきそうです。

2019-01-23 03:05:04
ꑄ꒖ꐇꌅꏂ🐾 @snuke_

@kiri8128 確かに出来てそうですね。sugoi...

2019-01-23 03:19:16
ꑄ꒖ꐇꌅꏂ🐾 @snuke_

@kiri8128 いや、ダメなケースが1つだけある気がしてきました。画像の状況で横が来ると条件を満たす置き方がありません。 pic.twitter.com/27xMDfE310

2019-01-23 03:42:46
拡大
ꑄ꒖ꐇꌅꏂ🐾 @snuke_

N=4の場合は図1の15状態から外れることなく遷移できる。N>4の場合は右にどんどん列が追加されていくだけで、縦棒を置くときに右から詰めて置く感じでやれば自然に拡張できると思う(図2)。Nが1増えるたびに6状態ずつ増える感じ。(🐘すぎる・・・) pic.twitter.com/FXRMHJWq8C

2019-01-23 04:49:33
拡大
拡大