Zerojudge k731. 路徑偵測

題解

開一個dictionary,紀錄從哪個方位到哪個方位是怎樣的轉彎,就差不多結束了。

Python 解答

transform = {
    ('N', 'W'):0, ('E', 'N'):0, ('S', 'E'):0, ('W', 'S'):0,
    ('N', 'E'):1, ('E', 'S'):1, ('S', 'W'):1, ('W', 'N'):1,
    ('N', 'S'):2, ('E', 'W'):2, ('S', 'N'):2, ('W', 'E'):2,
    ('N', 'N'):3, ('E', 'E'):3, ('S', 'S'):3, ('W', 'W'):3
} #0, 1, 2, 3是左轉, 右轉, 迴轉, 沒轉彎

n = int(input())
points = [tuple(map(int, input().split())) for _ in range(n)]

res = [0, 0, 0, 0] #left, right, uturn, noturn
currx = 0
curry = 0
currdir = 'E'

for nxtx, nxty in points:
    
    if   nxtx>currx: newdir = 'E'
    elif nxtx<currx: newdir = 'W'
    elif nxty>curry: newdir = 'N'
    else: newdir = 'S'
    
    res[transform[(currdir, newdir)]] +=1
    
    currx, curry = nxtx, nxty
    currdir = newdir

print(*res[:3:]) #不能把noturn次數打出來