paiza Aランクレベルアップメニュー へび「STEP: 2 移動が可能かの判定・方向 PHP編」

paizaのAランクレベルアップセット へび問題 STEP2です。

実は今でもeastとwestがどっちだったかと混乱したりします(そこからか)
あとマップ系は、起点が0,0なのか1,1なのか気をつけないとですね…。

<?php
    // 自分の得意な言語で
    // Let's チャレンジ!!
    
    //・ 1 行目には盤面の行数を表す整数 H , 盤面の列数を表す整数 W , 現在の y, x 座標を表す sy sx , 
    //現在向いている方角 d , 1 マス移動する方向 m が与えられます。
    //・ 続く H 行のうち i 行目 (0 ≦ i < H) には、盤面の i 行目の文字をまとめた文字列 S_i が与えられ、 
    //S_i の j 文字目は、盤面の i 行目の j 列目に書かれている文字を表します。(0 ≦ j < W)


    $s = trim(fgets(STDIN));
    $s = str_replace(array("\r\n","\r","\n"), '', $s);
    $s = explode(" ", $s);
    //echo "hello = ".$s[0]." , world = ".$s[1]."\n";
    
    $h = $s[0];
    $w = $s[1];
    $y = $s[2];
    $x = $s[3];
    $dis = $s[4];
    $move = $s[5];

    for ($i = 0; $i < $h; $i++) {
        $hoge = trim(fgets(STDIN));
        
        for ($j = 0; $j < $w; $j++) {
            $map[$i][$j] = mb_substr($hoge,$j,1);
        }
    }
    //print_r($map);
    
    //どの方向を向いているかでmove先座標を決定
    if($dis=="N" && $move=="L"){ //N
        $x--;
    }elseif($dis=="N" && $move=="R"){
        $x++;
        
    }elseif($dis=="E" && $move=="L"){ //E
        $y--;   
    }elseif($dis=="E" && $move=="R"){
        $y++;
    
    }elseif($dis=="S" && $move=="L"){ //S
        $x++;   
    }elseif($dis=="S" && $move=="R"){
        $x--;
        
    }elseif($dis=="W" && $move=="L"){ //W
        $y++;   
    }elseif($dis=="W" && $move=="R"){
        $y--;
    }
    
    //移動先はokかどうか
    if($x<0){//はみだしている
        $answer = "No";
    }elseif($x>$w){
        $answer = "No";
    }elseif($y<0){
        $answer = "No";
    }elseif($y>$h){
        $answer = "No";
        
    }elseif($map[$y][$x]=="#"){//障害物がある
        $answer = "No";
        
    }else{
        $answer = "Yes";
    }
    
    echo($answer."\n");

?>

0