Переглянути джерело

Revert "Some inputs perform better picking one of the next best rides"

This reverts commit 1e502229e8484cd59584993e2ef5fa94d7bfd870.
Guillaume Koenig 7 роки тому
батько
коміт
5c0828ac27
1 змінених файлів з 11 додано та 27 видалено
  1. 11 27
      main.go

+ 11 - 27
main.go

@@ -133,19 +133,17 @@ func max(a, b int) int {
133 133
 }
134 134
 
135 135
 func Choose(c *Car) *Ride {
136
-	var bestRides []struct {
137
-		r         *Ride
138
-		lenOfRide int
139
-		total     int
140
-	}
136
+	var bestRide *Ride
137
+	bestLenOfRide := 0
138
+	bestTotal := 0
141 139
 	// fmt.Printf("car %d\n", c.ID)
142 140
 	for _, r := range Rides {
143 141
 		if r.used {
144 142
 			continue
145 143
 		}
146
-		// if r.Length() > 6000 {
147
-		// 	continue
148
-		// }
144
+		if r.Length() > 6000 {
145
+			continue
146
+		}
149 147
 		if r.f < c.EarliestFinish(r) {
150 148
 			continue
151 149
 		}
@@ -153,30 +151,16 @@ func Choose(c *Car) *Ride {
153 151
 		lenOfRide := r.length()
154 152
 		total := max(c.distanceTo(r.a, r.b), r.s-c.Arrival) + lenOfRide
155 153
 		// fmt.Printf("%d/%d\n", lenOfRide, total)
156
-		if len(bestRides) == 0 || lenOfRide*bestRides[len(bestRides)-1].total > total*bestRides[len(bestRides)-1].lenOfRide {
157
-			bestRides = append(bestRides, struct {
158
-				r         *Ride
159
-				lenOfRide int
160
-				total     int
161
-			}{r, lenOfRide, total})
162
-			// shitty sort-of-correct-but-quite-incorrect way
163
-			// of picking next best n rides
164
-			n := 3
165
-			if len(bestRides) > n {
166
-				bestRides = bestRides[len(bestRides)-n:]
167
-			}
154
+		if bestRide == nil || lenOfRide*bestTotal > total*bestLenOfRide {
155
+			bestLenOfRide = lenOfRide
156
+			bestTotal = total
157
+			bestRide = r
168 158
 		}
169 159
 	}
170 160
 	// if bestRide != nil {
171 161
 	// 	fmt.Printf("Picking %d %d -> %d %d\n", bestRide.a, bestRide.b, bestRide.x, bestRide.y)
172 162
 	// }
173
-	if len(bestRides) != 0 {
174
-		// pick the not quite best ride...hey some
175
-		// of the inputs already  give a better score !
176
-		return bestRides[0].r
177
-		//return bestRides[len(bestRides)-1].r
178
-	}
179
-	return nil
163
+	return bestRide
180 164
 }
181 165
 
182 166
 func assign() bool {