Quellcode durchsuchen

sort rides by end time

Gildas Chabot vor 7 Jahren
Ursprung
Commit
a40f6c790d
1 geänderte Dateien mit 11 neuen und 0 gelöschten Zeilen
  1. 11 0
      main.go

+ 11 - 0
main.go

@@ -3,6 +3,7 @@ package main
3 3
 import (
4 4
 	"fmt"
5 5
 	"os"
6
+	"sort"
6 7
 )
7 8
 
8 9
 var input *os.File
@@ -29,6 +30,14 @@ type Ride struct {
29 30
 	used bool
30 31
 }
31 32
 
33
+type ByEndtime []*Ride
34
+
35
+func (rs ByEndtime) Len() int      { return len(rs) }
36
+func (rs ByEndtime) Swap(i, j int) { rs[i], rs[j] = rs[j], rs[i] }
37
+func (rs ByEndtime) Less(i, j int) bool {
38
+	return rs[i].f < rs[j].f
39
+}
40
+
32 41
 type Scheduler interface {
33 42
 	Add(*Car)
34 43
 	Pop() *Car
@@ -65,6 +74,8 @@ func (c *Car) moveTo(x, y int) {
65 74
 }
66 75
 
67 76
 func Choose(c *Car) *Ride {
77
+	sort.Sort(ByEndtime(Rides))
78
+
68 79
 	for _, r := range Rides {
69 80
 		if !r.used {
70 81
 			return r