情報領域演習第一:P演習

電気通信大学情報理工学域I類 (情報系)
2023年度後学期


[一覧に戻る]


課題E2

問題

マインスイーパというゲームでは,長方形状の盤面の上に隠された地雷をすべて見つけ出すことが目標である.盤面上のマスをクリックすると,そのマスに隣接するたてよこ斜めの位置にある8個のマスの中で地雷のあるマスの数が分かる.それを手がかりとしてすべての地雷を見つけ出すのである.地雷のあるマスをクリックするとゲームオーバーとなる.

この問題では,既にすべての地雷の場所が分かっているものとする.そのときに,各マスをクリックしたときに表示すべき数が何であるのか,その表を2次元配列として計算することを目標とする.ただし,地雷のあるマスをクリックした際には0が表示されるものとする.(つまり,下の図で空白となっているマスと地雷が置かれているマスには「0」が書かれていると見なす.)

マインスイーパの盤面 board を入力として受け取って,この目標を達成するメソッド sweep(board) を作成せよ.

入力仕様

出力仕様

irb> sweep [[0, 0, 0], [0, 1, 0], [0, 0, 0]]
=> [[1, 1, 1], [1, 0, 1], [1, 1, 1]]
irb> sweep [[1, 0, 0, 1], [0, 1, 0, 1], [0, 0, 1, 1]]
=> [[0, 2, 3, 0], [2, 0, 5, 0], [1, 2, 0, 0]]
irb> sweep [[1, 1, 1], [1, 0, 1], [1, 1, 1]]
=> [[0, 0, 0], [0, 8, 0], [0, 0, 0]]
irb> sweep [[1, 0, 1, 1]]
=> [[0, 2, 0, 0]]
irb> sweep [[1, 0, 1, 0]]
=> [[0, 2, 0, 1]]
irb> sweep [[1], [0], [1], [0]]
=> [[0], [2], [0], [1]]
irb> sweep [[0]]
=> [[0]]

提出法

CEDにて,プログラムを作成したディレクトリで以下を実行せよ.
% ~ta001026/enshu1p/checker_e2.rb ファイル名
「Submission successfully completed.」と表示されれば,提出が完了したことになる.


[一覧に戻る]