paiza Aランクレベルアップメニュー STEP26 「裏返せる可能性(斜め) PHP編」 解答例

受験数が少ない!!

みなさんこんなの楽勝だよとファイナル問題だけ解いてるのかな??

<?php
    // 自分の得意な言語で
    // Let's チャレンジ!!
    
    //出力する盤面の行数 H ,列数 W と石を置くマスの y , x 座標である Y , X が1行で与えられます。

    $s = explode(" ",trim(fgets(STDIN)));
    $h = $s[0];
    $w = $s[1];
    $y = $s[2];
    $x = $s[3];
    
    //get map
    for ($i = 0; $i < $h; $i++) {
        for ($j = 0; $j < $w; $j++) {
            if($y==$i && $x==$j){
                $maps[$i][$j]="!";
            }else{
                $maps[$i][$j]=".";
            }
        }
        
    }
    
    //右下
    for ($i = 0; $i < $h; $i++) {
        for ($j = 0; $j < $w; $j++) {
            if($x<$w && $y<$h && $i==$j && $maps[$y+$i][$x+$j] == "."){
                //echo("here");
                $maps[$y+$i][$x+$j]="*";
            }
        }
    }
    
    //右上
    for ($i = 0; $i < $h; $i++) {
        for ($j = 0; $j < $w; $j++) {
            if($y>0 && $i==$j && $maps[$y-$i][$x+$j] == "."){
                $maps[$y-$i][$x+$j]="*";
            }
        }
    }
    
    //左下
    for ($i = 0; $i < $h; $i++) {
        for ($j = 0; $j < $w; $j++) {
            if($x>0 && $i==$j && $maps[$y+$i][$x-$j] == "."){
                //echo("here");
                $maps[$y+$i][$x-$j]="*";
            }
        }
    }
    
    //左上
    for ($i = 0; $i < $h; $i++) {
        for ($j = 0; $j < $w; $j++) {
            if($y>0 && $x>0 && $i==$j && $maps[$y-$i][$x-$j] == "."){
                $maps[$y-$i][$x-$j]="*";
            }
        }
    }

    //出力
    for ($i = 0; $i < $h; $i++) {
        for ($j = 0; $j < $w; $j++) {
            echo($maps[$i][$j]);
        }
        echo("\n");
    }
    
    
?>

0