【Aランクレベルアップメニュー】> 【マップの判定・縦横】STEP: 3 マップの判定・横 (paizaランク C 相当) [難易度: 1517 ±8]
※リンク先へ移動するためには[paiza]へのログインが必要です。
行数 H , 列数 W の盤面があり、盤面の各マスには文字が 1 つだけ書かれています。
盤面が与えられるので、「左右のマスが "#" 」であるようなマスの座標を全て出力してください。
ただし、左端のマスの場合は「右のマスが "#" 」であれば、右端のマスの場合は「左のマスが "#" 」であれば条件を満たすものとします。
なお、マスの座標系は左上端のマスの座標を ( y , x ) = ( 0 , 0 ) とし、
下方向が y 座標の正の向き、右方向が x 座標の正の向きとします。
入力値(例)
3 3
#.#
.#.
...
出力値(例)
0 1
1 0
1 2
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?php list($h, $w) = explode(" ", trim(fgets(STDIN))); for ($i = 0; $i < $h; $i++) { $s[] = trim(fgets(STDIN)); } //左右のマスが#かどうかを確認 for ($i = 0; $i < $h; $i++) { for ($j = 0; $j < $w; $j++) { if ($j == 0) { if ($s[$i][1] == "#") { echo sprintf("%d %d\n", $i, $j); } } elseif ($j == $w - 1) { if ($s[$i][$w -2] == "#") { echo sprintf("%d %d\n", $i, $j); } } else { if ($s[$i][$j - 1] == "#" && $s[$i][$j + 1] == "#") { echo sprintf("%d %d\n", $i, $j); } } } } ?> |