【マップの判定・縦横】STEP: 3 マップの判定・横 (paizaランク C 相当) 解答例 – PHP編【Aランクレベルアップメニュー】
【Aランクレベルアップメニュー】 > 【マップの判定・縦横】STEP: 3 マップの判定・横 (paizaランク C 相当)
※リンク先へ移動する為には「paiza」へのログインが必要です。
現在のマップから両隣が「#」ならば、現在のマップの座標を出力しなさいとという問題です。調べる座標が右端、左端の場合、両隣ではなく、片方だけ「#」の時に出力するので条件分岐を作成します。
解答例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php [$row , $col] = explode(" ",trim(fgets(STDIN))); //「y」座標数と「x」座標数を取得する for($i = 0; $i < $row; $i++){ $array[] = str_split(trim(fgets(STDIN))); // マップを取得し「$array」に格納する } for($i = 0; $i < $row;$i++){ for($j = 0;$j < $col;$j++){ if($j == 0 && $array[$i][1] == "#"){ //x座標が0(マップ左端)の時かつ、右隣の座標が「#」ならば… echo $i." ".$j."\n"; //現在の座標を出力する } if($j != 0 && $j != ($col-1) && $array[$i][$j - 1] == "#" && $array[$i][$j + 1] == "#"){ //x座標が右端、左端以外のとき、両隣が「#」ならば… echo $i." ".$j."\n"; //現在の座標を出力する } if($j == ($col - 1) && $array[$i][($col - 1) - 1] == "#"){ //x座標が「col - 1」(マップ左端)の時かつ、左隣の座標が「#」ならば… echo $i." ".$j."\n"; //現在の座標を出力する } } } ?> |
