わくワーク

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

Aランクレベルアップメニュー「座標系での向きの変わる移動」

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

 

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

練習問題は、次のリンクから確認することができます。

paiza.jp

 

今回は、1回目の提出が25点でした。原因は、方向を示すDの値を初期値の1にするところを0にしたミスでした。

東西南北を数値に置き換えて制御しました。

スタート地点では、北を向いている設定だったので、北を1、東を2、南を3、西を4として制御しました。

進む方向の指示である左右は、向いている方向により、XY座標の進行方向が変わるので、向きと方向によって、処理を変えています。

 

#include <stdio.h>
int main(void){
    char str[1000];
    int x,y,n,d,i;
    char lr;
    d=1;
    fgets(str, sizeof(str), stdin);
    sscanf(str,"%d %d %d",&x,&y,&n);
    for(i=0;i<n;i++){
        fgets(str, sizeof(str), stdin);
        sscanf(str,"%c",&lr);
        if(lr=='R'){
            switch(d){
                case 1:
                    x++;
                    d++;
                    break;
                case 2:
                    y++;
                    d++;
                    break;
                case 3:
                    x--;
                    d++;
                    break;
                case 4:
                    y--;
                    d=1;
                    break;
            }
        }
        else {
            switch(d){
                case 1:
                    x--;
                    d=4;
                    break;
                case 2:
                    y--;
                    d--;
                    break;
                case 3:
                    x++;
                    d--;
                    break;
                case 4:
                    y++;
                    d--;
                    break;    
            }
        }
        printf("%d %d\n",x,y);
    }
    return 0;
}

 

引き続きAランクへのレベルアップを目指して、練習問題を進めます。

 

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

チャオチャオ!