【へび】STEP: 1 移動が可能かの判定・方角 (paizaランク B 相当) 解答例 – PHP編【Aランクレベルアップメニュー】
【Aランクレベルアップメニュー】 > 【へび】STEP: 1 移動が可能かの判定・方角 (paizaランク B 相当)
※リンク先へ移動する為には「paiza」へのログインが必要です。
前回の「座標系での向きの変わる移動」のステップアップ問題になると思います。マップの移動の際に、障害物の判定を行います。障害物がなければ移動できる”Yes”をそうでなければ”No”を出力する問題です。
解答例
|
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 |
<?php [$row , $col , $sy , $sx , $m] = explode(" ",trim(fgets(STDIN))); //情報を取得 for($i =0;$i < $row;$i++){ $array[$i] = str_split(trim(fgets(STDIN))); //マップの取得 } if($m == "N" /*北に移動しようとした時の処理*/){ if($array[($sy - 1)][($sx)] == "."){ echo "Yes"; } else { echo "No"; } } elseif($m == "E" /*東に移動しようとした時の処理*/){ if($array[($sy)][($sx + 1)] == "."){ echo "Yes"; } else { echo "No"; } } elseif($m == "W" /*西に移動しようとした時の処理*/){ if($array[($sy)][($sx - 1)] == "."){ echo "Yes"; } else { echo "No"; } } elseif($m == "S" /*南に移動しようとした時の処理*/){ if($array[($sy + 1)][($sx)] == "."){ echo "Yes"; } else { echo "No"; } } ?> |