どん底から這い上がるまでの記録

どん底から這い上がりたいけど這い上がれない人がいろいろ書くブログ(主にプログラミング)

0502: Dice

スポンサーリンク


Dice

問題ページ

解き方

サイコロとそのサイコロの動かし方を記憶した辞書を用意し指示に従ってサイコロを動かす。

サイコロの初期配置はリストで表すと[1, 2, 3, 4, 5, 6]。

指示がきたら辞書を参照する。例えば、Northという指示の場合、

"North": (1, 5, 2, 3, 0, 4) となっている。タプルのそれぞれの値は現在のサイコロのインデックスを北方向に一回転した後のインデックスとなっている。

dice[0]にはdice[1]、dice[1]にはdice[5]の値を入れていく。

コード(python)

operation = {"North": (1, 5, 2, 3, 0, 4),
             "East": (3, 1, 0, 5, 4, 2),
             "West": (2, 1, 5, 0, 4, 3),
             "South": (4, 0, 2, 3, 5, 1),
             "Right": (0, 2, 4, 1, 3, 5),
             "Left": (0, 3, 1, 4, 2, 5)}

while True:
    n = int(input())
    if n == 0:
        break
    dice = [i+1 for i in range(6)]
    ans = 1
    for _ in range(n):
        # stripを使わないとRuntimeError
        indices = operation[input().strip()]
        dice = [dice[i] for i in indices]
        ans += dice[0]
    print(ans)