add ranges

This commit is contained in:
YouROK
2020-12-22 13:15:07 +03:00
parent bb76523d57
commit a742614832

View File

@@ -0,0 +1,49 @@
package torrstor
import (
"sort"
)
type Range struct {
Start, End int
}
func inRanges(ranges []Range, ind int) bool {
for _, r := range ranges {
if ind >= r.Start && ind <= r.End {
return true
}
}
return false
}
func mergeRange(ranges []Range) []Range {
if len(ranges) <= 1 {
return ranges
}
// copy ranges
merged := append([]Range(nil), ranges...)
sort.Slice(merged, func(i, j int) bool {
if merged[i].Start < merged[j].Start {
return true
}
if merged[i].Start == merged[j].Start && merged[i].End < merged[j].End {
return true
}
return false
})
j := 0
for i := 1; i < len(merged); i++ {
if merged[j].End >= merged[i].Start {
if merged[j].End < merged[i].End {
merged[j].End = merged[i].End
}
} else {
j++
merged[j] = merged[i]
}
}
return merged[:j+1]
}