Skip to content

wokaio/interval-tree

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

interval-tree

Interval tree

Installation

go get -u github.com/miczone/interval-tree

Example (Optional)

func main() {
	intervals, min, max, err := fdinterval.CreateIntervalsFromCsvFile("./data/dhl.csv", 0.0005, -1, -1)
	//intervals, min, max, err := fdinterval.CreateIntervalsFromCsvFile("./data/dhl.csv", 0.0005, 4.0, 150.0)
	if err != nil {
		fmt.Println(err.Error())
		return
	}

	tree := fdinterval.BuildIntervalTree(intervals, min, max)
	// tree.PrintIntervalNode()

	var countryIsoCode string = "us"
	intervalPool := fdinterval.NewIntervalPool()
	intervalPool.SetIntervalPtr(countryIsoCode, tree)

	treeItem, err := intervalPool.GetIntervalPtr(countryIsoCode)
	if err != nil {
		fmt.Println(err.Error())
		return
	}

	fmt.Println("\nDeliveryCalculatorByZone")
	result, err := treeItem.DeliveryCalculatorByZone(4.1, "Zone D")
	if err != nil {
		fmt.Println(err.Error())
		return
	}
	fmt.Printf("Low %v, high %v, data %v", result.Low, result.High, result.DeliveryData)

	fmt.Println("\n\nDeliveryCalculator")
	results, err := treeItem.DeliveryCalculator(4.3)
	if err != nil {
		fmt.Println(err.Error())
		return
	}

	for i := 0; i < len(results); i++ {
		fmt.Printf("Low %v, high %v, data %v\n", results[i].Low, results[i].High, results[i].DeliveryData)
	}
}

Contributing

  • Please create an issue in issue list.
  • Following the golang coding standards.

License

The project is under the Apache 2.0 license. See the LICENSE file for details.