レポート課題 (パズドラ)


次のように、縦5×横6の大きさの盤面上に、6色の石が配置されている 状況を考える。

以下、この盤面を簡単に数字で、

1 4 3 5 4 6 
1 3 5 1 1 1 
1 2 2 2 5 4 
4 2 4 5 5 3 
3 2 5 6 6 6 
のように表記する。

消え方は以下の通り。

1 4 3 5 4 6 
1 3 5 1 1 1 
1 2 2 2 5 4 
4 2 4 5 5 3 
3 2 5 6 6 6 
のようなデータをファイルから入力し、このデータのコンボ数 (この場合なら8) を 表示するプログラムを作って欲しい。

(以下はデバッグ用にどうぞ)

4 4 3 3 4 1 
4 5 3 2 4 5 
1 4 4 6 5 6 
1 2 5 1 1 2 
5 3 5 3 6 5 
は 0 コンボ、
5 4 5 3 5 1 
1 4 6 1 1 4 
5 6 1 3 4 6 
5 5 1 5 6 3 
5 6 1 3 3 5 
は 3 コンボ、
1 1 1 3 4 1 
1 5 1 2 4 5 
1 4 1 6 5 6 
1 1 1 2 3 2 
5 3 5 3 6 5 
は 1 コンボである。

更に余力があるなら、実際のゲームのように、与えられた盤面の石配置に対して、 それを並べ替えてなるべくコンボ数が大きくなるようにするプログラムを 考えると面白い。例えば例に挙げた8コンボの盤面は、ランダムに生成した盤面

  0 1 2 3 4 5
0 1 4 5 3 5 4 
1 1 2 2 1 1 6 
2 2 5 4 5 1 4 
3 1 4 5 3 5 3 
4 3 2 6 2 6 6 
に対して、
(3 3)(3 4)(4 4)(4 3)(4 4)(3 4)(2 4)(3 4)(3 3)(2 3)(1 3)(1 2)(0 2)(0 3)(0 4)(0 5)
(1 5)(2 5)(1 5)(0 5)(1 5)(0 5)(1 5)(1 4)(1 3)(2 3)(2 2)(2 1)(2 2)(3 2)(4 2)(4 1)
(4 2)(3 2)(3 1)(3 0)(3 1)(3 2)(4 2)(4 3)(3 3)(2 3)(3 3)(3 2)(4 2)(4 3)(3 3)(2 3)
(2 2)(2 3)(2 2)(2 1)(1 1)(2 1)(2 0)(3 0)(3 1)(3 0)(2 0)(2 1)(2 0)(1 0)(0 0)(1 0)
(2 0)(1 0)(0 0)(1 0)(1 1)(1 0)(0 0)(1 0)(2 0)(3 0)(4 0)(3 0)(3 1)(3 2)(3 3)(2 3)
(2 4)(2 3)(2 4)(2 3)(2 2)(2 1)(1 1)(1 2)(1 3)(1 4)(2 4)(2 3)(1 3)(1 2)(1 1)
のように「なぞって」生成したものである。
レポート課題 (パスドラ) /