わくワーク

2022年3月に早期退職し起業しました。仕事、趣味について発信する雑記ブログです。当ブログはGoogleアドセンス及びアフィリエイト広告を利用しています。

Aランクレベルアップメニュー「移動が可能かの判定・方角」

お元気さまです。わくワークの義(ヨシ)です。

 

プログラミングスキルアップのためにpaizaラーニングでレベルアップ問題集を解いています。

練習問題は、次のリンクで確認できます。

paiza.jp

 

もっとコンパクトなコードにできるような気もしますが、指示通りに手順を進めて、作成しました。

 

 

#include <stdio.h>
#include <string.h>
int main(void){
    char str[1000];
    char buf[21][22];
    int h,w,sy,sx,i;
    char yn[5];
    char m;
    fgets(str, sizeof(str), stdin);
    sscanf(str,"%d %d %d %d %c",&h,&w,&sy,&sx,&m);
    for(i=0;i<h;i++){
        fgets(str, sizeof(str), stdin);
        sscanf(str,"%s",buf[i]);
    }
    switch(m){
        case 'N':
            if(sy==0){
                strcpy(yn,"No");
            }
            else if(buf[sy-1][sx]=='#'){
                strcpy(yn,"No");
            }
            else strcpy(yn,"Yes");
            break;
        case 'S':
            if(sy==h-1){
                strcpy(yn,"No");
            }
            else if(buf[sy+1][sx]=='#'){
                strcpy(yn,"No");
            }
            else strcpy(yn,"Yes");        
            break;
        case 'E':
            if(sx==w-1){
                strcpy(yn,"No");
            }
            else if(buf[sy][sx+1]=='#'){
                strcpy(yn,"No");
            }
            else strcpy(yn,"Yes");
            break;
        case 'W':
            if(sx==0){
                strcpy(yn,"No");
            }
            else if(buf[sy][sx-1]=='#'){
                strcpy(yn,"No");
            }
            else strcpy(yn,"Yes");
            break;
    }
    printf("%s", yn);
    return 0;
}

 

Aランクへのレベルアップ目指して、学習を進めたいと思います。

 

それでは、今日もワクワクな一日を!

チャオチャオ!