【マップの判定・縦横】FINAL問題 マップの判定・縦横 (paizaランク B 相当) 解答例 – PHP編【Aランクレベルアップメニュー】
【Aランクレベルアップメニュー】 > 【マップの判定・縦横】FINAL問題 マップの判定・縦横 (paizaランク B 相当)
※リンク先へ移動する為には「paiza」へのログインが必要です。
STEP3、STEP4を併せた問題になります。縦判定と横判定を管理するフラグを用意し、縦と横の判定が「true」の時に座標を出力します。
解答例
|
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 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<?php [$row , $col] = explode(" ",trim(fgets(STDIN))); $array = array(); for($i = 0;$i < $row;$i++){ $array[$i] = str_split(trim(fgets(STDIN))); } for($i = 0;$i < $row;$i++){ for($j = 0;$j < $col;$j++){ $row_judge = false; //縦判定 $col_judge = false; //横判定 /*---------------------------縦判定開始--------------------------------*/ if($i == 0 || $i == ($row - 1)){ if($array[$i + 1][$j] == "#" || $array[$i - 1][$j] == "#"){ $row_judge = true; } } else { if($array[$i + 1][$j] == "#" && $array[$i - 1][$j] == "#"){ $row_judge = true; } } /*---------------------------縦判定修了--------------------------------*/ /*---------------------------横判定開始--------------------------------*/ if($j == 0 || $j == ($col - 1)){ if($array[$i][$j + 1] == "#" || $array[$i][$j - 1] == "#"){ $col_judge = true; } } else { if($array[$i][$j + 1] == "#" && $array[$i][$j - 1] == "#"){ $col_judge = true; } } /*---------------------------横判定修了--------------------------------*/ if($row_judge == true && $col_judge == true){ echo $i." ".$j."\n"; //座標の出力 } } } ?> |
