現在有乙個二維座標組成的陣列,例如
[[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軸的正方向分別為向右和向下。這裡也說明...