- #include<iostream>
- int main()
- {
- for (int n; std::cin >> n, n;)
- {
- int s = 1, d[] = {2, 3, 5, 4, 1}, i, t, a, b;
- for (i = 0; i++ < n; s += d[4])
- {
- char c[9], e;
- std::cin >> c;
- e = *c;
- a = 0;
- if (e != 'R' && e != 'L')
- {
- e == 'N' ? a = 2, b = 0 : e == 'E' ? a = 1, b = 3
- : e == 'W' ? a = 3, b = 1 : b = 2;
- d[a] = d[4];
- d[4] = d[b];
- d[b] = 7 - d[a];
- }
- else
- {
- e == 'R' ? : a = 2;
- t = *d;
- *d = d[1 + a];
- d[1 + a] = d[2];
- d[2] = d[3 - a];
- d[3 - a] = t;
- }
- }
- std::cout << s << '\n';
- }
- return 0;
- }
納得の331 Bytesです.
問題はサイコロに関する問題なんですが,
回転の種類を大きく2つに分けることができて,
関数化できるので,上記のようなショートコーディングが行えてます.
0 件のコメント:
コメントを投稿