+func FindBestState(data planet_data, dims []int, table []State) int {
+ addr := make([]int, NumDimensions)
+ addr[Edens] = *end_edens
+ addr[Cloaks] = dims[Cloaks] - 1
+ addr[NeedFighters] = dims[NeedFighters] - 1
+ addr[NeedShields] = dims[NeedShields] - 1
+ addr[Visit] = dims[Visit] - 1
+ // Fuel, Hold, UnusedCargo left at 0
+ var max_index int
+ max_value := 0
+ for addr[Location] = 0; addr[Location] < dims[Location]; addr[Location]++ {
+ index := EncodeIndex(dims, addr)
+ if table[index].value > max_value {
+ max_value = table[index].value
+ max_index = index
+ }
+ }
+ return max_index
+}
+