次の絵をご覧ください.
これは以下のルールのもとで,「全消し」になるパターンです.
- 縦または横に同じのが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
本日の記事冒頭の画像は,このパターンに基づきます.あいにく,ここから,全消しにならない状態を得ることは望めません….