唯一座標轉換問題

2021-09-20 01:37:35 字數 1904 閱讀 4187

現在有乙個二維座標組成的陣列,例如

[[0,7],[8,10],[12,19],[13,15],[2,9],[19,22],[25,27],[30,33]];

這些座標可以按照以下規則進行轉換,例如:

1.座標之間可以組成連續的座標,則這些座標可以轉化為乙個座標,

[0,7] & [8,10] -> [0,10]

2.座標之間存在包含關係,則這些座標可以轉換為乙個座標,

[12,19] & [13,15] -> [12,19]

需要經過重新計算將陣列內的座標轉換為唯一座標(即 既不包含(或者被包含)其他座標,也不能和其他座標連續的座標),例子裡的座標的轉化結果為:

[[0,7],[8,10],[12,19],[13,15],[2,9],[19,22],[25,27],[30,33]]

->

[[0,10],[12,22],[25,27],[30,33]]

請寫出轉化演算法:

def merge(list):

def by_rule_merge_ranges(list):

merge_list =

def _merge(ranges):

copy_ranges = copy.deepcopy(ranges)

ranges_length = len(ranges)-1

start_offset = copy_ranges[0][0]

end_offset = copy_ranges[0][1]

for j in range(ranges_length):

if j < ranges_length:

next_start_offset = ranges[j + 1][0]

next_end_offset = ranges[j + 1][1]

if start_offset <= (next_end_offset + 1) and start_offset >= next_start_offset and end_offset >= next_end_offset:

start_offset = next_start_offset

copy_ranges.remove(ranges[j+1])

elif end_offset >= (next_start_offset - 1) and end_offset <= next_end_offset and start_offset <= next_start_offset:

end_offset = next_end_offset

copy_ranges.remove(ranges[j + 1])

elif start_offset >= next_start_offset and end_offset <= next_end_offset:

start_offset = next_start_offset

end_offset = next_end_offset

copy_ranges.remove(ranges[j + 1])

elif start_offset <= next_start_offset and end_offset >= next_end_offset:

copy_ranges.remove(ranges[j + 1])

copy_ranges.remove(copy_ranges[0])

'startoffset': start_offset,

'endoffset': end_offset,

'count': 0

})if len(copy_ranges) == 0:

return

else:

_merge(copy_ranges)

_merge(list)

return merge_list

Echart總結 一 座標軸屬性

demo xaxis show true false name 座標軸名字 namelocation 座標軸位置 property namestyle 座標軸名稱樣式 namestyle,namegap 15 座標軸名稱與軸線之間的距離。namerotate null,旋轉角度 property a...

北京54座標到西安80座標轉換小結

1 北京54和西安80是兩種不同的大地基準面,不同的參考橢球體,因而兩種地圖下,同乙個點的座標是不同的,無論是三度帶六度帶座標還是經緯度座標都是不同的。2 數位化後的得到的座標其實不是wgs84的經緯度座標,因為54和80的轉換引數至今沒有公布,一般的軟體中都沒有54或80投影系的選項,往往會選擇w...

Android自定義View(一)座標系解讀

首先,先認識一下android的座標系統,自定義view的時候需要非常清楚座標系的正負方向,要知道android系統中的座標方向和數學中的座標系方向是不一樣的,android中的螢幕座標系如下圖所示 android的螢幕座標係以螢幕左上角為原地 0,0 x軸和y軸的正方向分別為向右和向下。這裡也說明...