Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "Dice I"
https://onlinejudge.u-aizu.ac.jp/problems/ITP1_11_A
入力としてサイコロの各面のラベルに対応する整数と、転がす命令の列が与えられるので、サイコロの上面の整数を出力してください。
僕が作成、提出したコードは、以下のとおりです。
Aizu Online Judge in C++ #ITP1_11_A : Dice I
/* Aizu Online Judge in C++ #ITP1_11_A : Dice I https://onlinejudge.u-aizu.ac.jp/problems/ITP1_11_A 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; struct Dice{ int s[6]; void roll(char c){ int i; if(c=='E'){ i=s[0]; s[0]=s[3]; s[3]=s[5]; s[5]=s[2]; s[2]=i; }else if(c=='W'){ i=s[0]; s[0]=s[2]; s[2]=s[5]; s[5]=s[3]; s[3]=i; }else if(c=='N'){ i=s[0]; s[0]=s[1]; s[1]=s[5]; s[5]=s[4]; s[4]=i; }else{ i=s[0]; s[0]=s[4]; s[4]=s[5]; s[5]=s[1]; s[1]=i; } } int up(void){ return s[0]; } }; int main(void){ Dice d; for(int i=0;i<6;i++){ cin>>d.s[i]; } string str; cin>>str; for(int i=0;i<str.size();i++){ d.roll(str[i]); } cout<<d.up()<<endl; return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/