時間取並交集的小工具(Go)

2022-09-14 20:48:24 字數 1499 閱讀 4298

如求並集[1,2],[4,5],[5,9],結果是[1,2],[4,9]

求所有的交集為

但是求相交部分為[1,2],[5,5],

三個型別,對應下面三個小函式

type timeinterval struct 

type timeslice timeinterval

// 求全域性的並集

func (ts timeslice) union()timeslice

sort.slicestable(ts, func(i, j int) bool )

res := timeslice

for key, val := range ts

if val.start >= res[len(res)-1].start && val.start < res[len(res)-1].end

}else

} return res

}// 求全域性的交集

func (ts timeslice)intersect()timeslice

sort.slicestable(ts, func(i, j int) bool )

res := timeslice

for key, val := range ts

if val.start >= res[0].start && val.start <= res[0].end

}else

} return res

}// 求部分的交集

func (ts timeslice)intersectsome()timeslice

sort.slicestable(ts, func(i, j int) bool )

res := timeslice

for key, val := range ts

if val.start >= res[len(res)-1].start && val.start <= res[len(res)-1].end

}else

} return res

}func runmergeinterval(), timeinterval, timeinterval,timeinterval,timeinterval}

case2:= timeslice, timeinterval, timeinterval,timeinterval,timeinterval}

case3:= timeslice, timeinterval, timeinterval,timeinterval,timeinterval}

// res = [[1 100] [101 102]]

re := case1.union()

fmt.println(re)

fmt.println(case1.intersect(), case2.intersect(), case1.intersectsome(), case3.intersectsome())

//[ ]

// [ ]

}

Go 時間交並集小工具

示例 含測試 在這裡 在甘特圖的場景下,我們經常會遇到這種情況,五位員工a,b,c,d,e,可能他們的工作都是並行的,我們需要計算 某段時間內他們總的工作時長。我們不能簡單得把五個人的工作時間都加起來,因為當中會有重疊的部分。所以這時候我們就需要乙個計算時間交並集的工具。將一組離散的時間段按照開始時...

寫個 Go 時間交並集小工具

示例 含測試 在這裡在甘特圖的場景下,我們經常會遇到這種情況,五位員工a,b,c,d,e,可能他們的工作都是並行的,我們需要計算 某段時間內他們總的工作時長。我們不能簡單得把五個人的工作時間都加起來,因為當中會有重疊的部分。所以這時候我們就需要乙個計算時間交並集的工具。將一組離散的時間段按照開始時間...

VC下的小工具

vc6.0附帶工具軟體 1 activex control test container稱為 activex 控制項測試容器 顧名思義,此工具的主要功能就是測試activex 控制項,可以通過改變activex 控制項的屬性觀察控制項的變化,也可以通過呼叫activex 控制項的方法觀察控制項的返回...