わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

ポケとる・全消しを目指せ

次の絵をご覧ください.

これは以下のルールのもとで,「全消し」になるパターンです.

  • 縦または横に同じのが3つ並べば消えます.
  • 消えたあと,残ってあるものは落下します.画面外からの補充はありません.

上の状態で,消える箇所を*に置き換えると,次のようになります.

落下させれば,次のようになって,すべて消えるというわけです.

ここからが問題です.初期状態では,1つも消えないけれど,その中の2つを交換すれば,全消しになるパターンを,図示してください.
解答の前に…「縦または横に同じのが3つ並べば消えます」というのは,パズドラのルールです.以前,画像を作って記事にしました.

パズドラのフィールドサイズは5行6列です.ですが上記は6行6列です.これは「ポケとる」をもとにしているからです.
先日,スマホ版のアナウンスを知り,クローズドβテストに参加することができました.

1手で2箇所の交換しかできない(しかしどんなに離れていてもいい)ことや,メガシンカに戸惑いつつも,なんとかステージ45までたどり着きました.
それで,フィールド画面生成や連鎖シミュレーションをするRubyプログラムを,作ってみました(気が向いたら,コードを整理して公開します).文字ベースのシミュレータが出来上がってから,ポケとるスマホ版を遊んでいると,消去判定のタイミングが,やや,イレギュラーなのにも気づきました.そのあたりの実装は容易でないので,消去→落下→消去→落下→…の判定や処理は,パズドラと同様としました.
といったところで解答その1です.

この状態では,どこも消えませんが,次のように2箇所を交換すると…

これは全消しになっています.GIFアニメーションにしました.

テキストだと次のとおりです.

121434
314241
324231
212343
314241
212343

6行6列は大きいなと思いまして,まず,6行3列で全消しパターンを作ってみました.プログラム生成ではなく,テキストエディタによる手編集です.それを横方向にコピーし,色が隣り合わないよう,調整しました.
上のパターンを作ったあと,Rubyスクリプトで,36のマスにランダムに1〜4を配置し,全消しできるものを見つけることにしました.しかし,1万回やってもダメ,100万回やってもダメ,500万回でもダメ.3,000万回させながら,テキストエディタであれこれ書いていると,また別の全消しパターンを作ることができました.

232324
233424
344333
432124
232133
211144

画像にすると,こうで,

2つ交換して,全消しにならないのは,こうです.

GIFアニメーションもつけておきます.

計算機のランダム生成ですが,2億を超えたあたりで,初めて,全消しパターンを出力してくれました.

222114
121222
323332
333412
313414
333414

本日の記事冒頭の画像は,このパターンに基づきます.あいにく,ここから,全消しにならない状態を得ることは望めません….