iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 19
0
自我挑戰組

程式設計師大冒險系列 第 19

[19/150]幾何座標解題(Python)10242 - Fourth Point !!

  • 分享至 

  • xImage
  •  

解這類型題目需要平面空間概念,以及久遠的數學公式。


大綱


10242 - Fourth Point !!

平行四邊形,求第四點
這題比較簡單,就沒寫測試系統


import sys

def inp():
    sinp=sys.stdin.readline()
    while(sinp!=""):
        sinp=sinp.replace("\n","")
        coord=list(map(float,sinp.split()))
        print("%.3f %.3f"%fourpo(coord))#%.3f是因為只取到小數點後三位
        sinp=sys.stdin.readline()

測資讀取
測資會給你(x,y)^4
其中一組是重複的
會組成三角形

0.000 0.000 0.000 1.000 0.000 1.000 1.000 1.000

def fourpo(co):
    for i in range(3):#總共比i輪
        for j in range(3-i):#每輪比j次
            if(co[0+2*i]==co[2*(i+1)+2*j]):#重複的話
                x=sum(co[::2])-co[0+2*i]*3#全部座標軸相加,減去重複座標軸三次
                y=sum(co[1::2])-co[1+2*i]*3
                return x,y
    
inp()

尋找重複的C點

迴圈(i)=3 迴圈(j)=3-i co[0+2^i] co[2^(i+1)+2^j]
0 0 0 2
0 1 0 4
0 2 0 6
1 0 2 4
1 1 2 6
2 0 2 6
平行四邊形ABCD公式,A+C=B+D
推導後,A=B+D-C
重複的那一點必為C
所以四點相加後,扣掉重複二點,在減掉公式的C,就是答案。
測資 B D C
----- -------- ------------- -
R1= B +D
R2= B +D -C

總結

不難,不過要細心。
感謝撥冗閱讀


上一篇
[18/150]測試系統應用(Python)10221 - Satellites
下一篇
[20/150]排序解題(Python)之九乘九乘法迴圈進階299-Train Swapping
系列文
程式設計師大冒險115
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言