#35555: Python Code + 解題思路(結構解題)


caballersky2000@gmail.com (KH K)

學校 : 不指定學校
編號 : 235211
來源 : [60.250.188.138]
最後登入時間 :
2023-06-06 17:27:33
k731. 1. 路徑偵測 -- 2023年6月APCS | From: [60.250.188.138] | 發表日期 : 2023-06-06 16:51

main idea :

  1. 定義方向陣列 => (向右 1, 0), (向下 0, -1), (向左 -1, 0), (向上 0, 1)
  2. 觀察方向 => 向右轉 index + 1, 向左轉 index - 1, 迴轉 index + 2 (為了確保在陣列內可以 % 4  取餘數)
  3. 根據 input 更新現在的點跟方向

==========程式分隔線==========

def gd(a) : # get direction 
    if a == 0 : return 0
    else : return a // abs(a)

def main() :
    ans = [0, 0, 0]  # left, right, back
    dirs = [[1, 0], [0, -1], [-1, 0], [0, 1]]
    cur = [0, 0, 0] # x, y ,dir
    n = int(input())

    for _ in range(n) :
        cur_point = [int(x) for x in input().split(' ')]
        cur_dir = [gd(cur_point[0] - cur[0]) , gd(cur_point[1] - cur[1])]

        if cur_dir not in dirs : 
            print(cur[:2] , cur_point , 'something go wrong')
        else : 
            cur_dir_index = dirs.index(cur_dir) 

            if cur_dir_index == (cur[2] - 1) % 4 : 
                ans[0] += 1
            elif cur_dir_index == (cur[2] + 1) % 4 :
                ans[1] += 1
            elif cur_dir_index == (cur[2] + 2) % 4 :
                ans[2] += 1

            cur = cur_point + [cur_dir_index]
    
    print(ans[0], ans[1], ans[2])

if __name__ == '__main__' :
    main()

        

 
ZeroJudge Forum