【へび】STEP: 2 移動が可能かの判定・方向 (paizaランク B 相当) 解答例 – PHP編【Aランクレベルアップメニュー】
【Aランクレベルアップメニュー】 > 【へび】STEP: 2 移動が可能かの判定・方向 (paizaランク B 相当)
※リンク先へ移動する為には「paiza」へのログインが必要です。
マップの移動の際に、障害物の判定を行いますが、今回は向いている向きの関係から左と右によって移動する座標が変わります。今回もごりおしでいきます(;^ω^)
解答例
|
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
<?php [$row , $col ,$sy ,$sx , $d , $m] = explode(" ",trim(fgets(STDIN))); for($i = 0;$i < $row;$i++){ $array[$i] = str_split(trim(fgets(STDIN))); } //print_r($array); if($d == "N" && $m == "L"){ /*北を向いている時、左に移動可能か判断する*/ if($array[$sy][$sx - 1] == "."){ echo "Yes"; } else { echo "No"; } } if($d == "N" && $m == "R"){ /*北を向いている時、右に移動可能か判断する*/ if($array[$sy][$sx + 1] == "."){ echo "Yes"; } else { echo "No"; } } if($d == "E" && $m == "L"){ /*東を向いている時、左に移動可能か判断する*/ if($array[$sy - 1][$sx] == "."){ echo "Yes"; } else { echo "No"; } } if($d == "E" && $m == "R"){ /*東を向いている時、右に移動可能か判断する*/ if($array[$sy + 1][$sx] == "."){ echo "Yes"; } else { echo "No"; } } if($d == "W" && $m == "L"){ /*西を向いている時、左に移動可能か判断する*/ if($array[$sy + 1][$sx] == "."){ echo "Yes"; } else { echo "No"; } } if($d == "N" && $m == "R"){ /*西を向いている時、右に移動可能か判断する*/ if($array[$sy - 1][$sx] == "."){ echo "Yes"; } else { echo "No"; } } if($d == "S" && $m == "L"){ /*南を向いている時、左に移動可能か判断する*/ if($array[$sy][$sx + 1] == "."){ echo "Yes"; } else { echo "No"; } } if($d == "S" && $m == "R"){ /*南を向いている時、右に移動可能か判断する*/ if($array[$sy][$s - 1] == "."){ echo "Yes"; } else { echo "No"; } } ?> |