AtCoder Regular Contest 006 B – あみだくじ をPython3で解く

Share

AtCoder上にある問題のうち、AtCoder Problemsでdiff 800以上と判定されているものを順番に解いていく企画。
基本的な考え方は全てコード中のコメントに入れてあるので、参照のこと。

出典:
AtCoder Regular Contest 006 B – あみだくじ

少し珍しいタイプの、古めの問題。
受け取ったアスキーアートのあみだくじをどのように取り扱うかを考え必要があるが、そこまで複雑でもなく、順番にたどっていけばいい。

# AtCoder Regular Contest 006 B - あみだくじ
# https://atcoder.jp/contests/arc006/tasks/arc006_2
# tag: アスキーアート 基礎問題 高橋君

# 与えられた文字列(アスキーアート)から情報を取り出し、
# それを元に処理を行う必要がある問題。
# 落ち着いて実装すれば、それほど難しくは無い、と思う。

def main():
    N, L = map(int, input().split())
    lottery = [input() for _ in range(L+1)]

    x_now = lottery[-1].find('o')
    width = 2 * N - 1

    # あみだくじを下から逆にたどっていく感じで……
    for y in range(L, -1, -1):
        # 現在地の右側に棒があれば x 座標に +2
        if x_now + 1 < width and lottery[y][x_now + 1] == '-':
            x_now += 2
        # 現在地の左側に棒があれば x 座標に -2
        elif x_now - 1 >= 0 and lottery[y][x_now - 1] == '-':
            x_now -= 2

    # x 座標を n 本目に変換して出力
    result = x_now // 2 + 1
    print(result)

main()
Share

コメントを残す

メールアドレスが公開されることはありません。