- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVehicle.java
More file actions
Latest commit
85 lines (72 loc) · 1.74 KB
/
Copy pathVehicle.java
File metadata and controls
85 lines (72 loc) · 1.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
importjava.util.ArrayList;
publicclassVehicle {
intcurrRow, currCol;
Rideride;
booleanhasPassenger;
publicVehicle() {
currRow = 0;
currCol = 0;
ride = null;
hasPassenger = false;
}
publicvoidupdate(intt, ArrayList<Ride> rides) {
if (ride == null) {
pickNewRide(rides);
} elseif (hasPassenger) {
intdestRow = ride.getEndRow();
if (currRow > destRow) {
currRow--;
} elseif (currRow < destRow) {
currRow++;
} else {
intdestCol = ride.getEndCol();
if (currCol > destCol) {
currCol--;
} else {
currCol++;
}
if (currCol == destCol) {
hasPassenger = false;
// Scrivi su file
pickNewRide(rides);
}
}
} else {
intdestRow = ride.getStartRow();
if (currRow > destRow) {
currRow--;
} elseif (currRow < destRow) {
currRow++;
} else {
intdestCol = ride.getStartCol();
if (currCol > destCol) {
currCol--;
} else {
currCol++;
}
if (currCol == destCol && ride.getEarly() <= t) {
// Scrivi su file
hasPassenger = true;
}
}
}
}
publicvoidpickNewRide(ArrayList<Ride> r) {
if(r.size() <= 0) {
return;
}
intbestTimeArrival = Integer.MAX_VALUE;
intbestIndex = 0;
for(inti = 0; i < r.size(); i++) {
Ridecurr = r.get(i);
if(curr.getEarly() + Math.abs(curr.getStartRow() - currRow) + Math.abs(curr.getStartCol() - currCol) < bestTimeArrival) {
bestTimeArrival = curr.getEarly() + Math.abs(curr.getStartRow() - currRow) + Math.abs(curr.getStartCol() - currCol);
bestIndex = i;
}
}
ride = r.remove(bestIndex);
}
publicStringtoString() {
returncurrRow + " " + currCol;
}
}