読者です 読者をやめる 読者になる 読者になる

Tamflexの貯蔵庫

やる気のない備忘録

aoj 0502

サイコロ | Aizu Online Judge

クラスを使えば結構綺麗にかけるかもしれないけど、まあ個人的な趣味でしょう。
今回はわかりやすさのために変数を3つ導入したけど、サイコロの現在の姿勢は2変数で書けます。文字数チャレンジをする人はここらへんを切り詰めるかと思われます。

class Dice
{
public:
  int top,front,right;
  Dice(){top=1;front=2;right=3;}
  void setDice(int t,int f,int r){top=t;front=f;right=r;}
  void North(){setDice(front,7-top,right);}
  void East(){setDice(7-right,front,top);}
  void West(){setDice(right,front,7-top);}
  void South(){setDice(7-front,top,right);}
  void Right(){setDice(top,right,7-front);}
  void Left(){setDice(top,7-right,front);}
};

int main()
{
  int n;
  string s;
  while(cin >> n,n)
  {
    Dice d;
    int ans = 1;
    REP(i,n)
    {
      cin >> s;
      switch (s[0]) {
        case 'N':
        d.North();
        break;
        case 'E':
        d.East();
        break;
        case 'W':
        d.West();
        break;
        case 'S':
        d.South();
        break;
        case 'R':
        d.Right();
        break;
        case 'L':
        d.Left();
        break;
      }
      ans += d.top;
    }
    cout << ans << endl;
  }
  return 0;
}