Browse Source

Simplify calls

Passes challenges 1-4 somewhat consistently.
master
Ashton Charbonneau 5 years ago
parent
commit
373f9da55c
1 changed files with 26 additions and 33 deletions
  1. 26
    33
      elevator.js

+ 26
- 33
elevator.js View File

@@ -56,24 +56,29 @@
56 56
 					let allStops = new Set([...destinations, ...requests[UP], ...requests[DOWN]]);
57 57
 					try {
58 58
 						floorNum = getClosestFloor(elevator.currentFloor(), allStops)
59
-						console.log("> Sending elevator[" + elevatorIndex + "] to floor[" + floorNum + "]");
59
+						//console.log("> Sending elevator[" + elevatorIndex + "] to floor[" + floorNum + "]");
60 60
 						elevator.goToFloor(floorNum);
61 61
 					} catch (e) {
62
-						console.log("> No closest floor. Sending elevator[" + elevatorIndex + "] to rest floor[" + restFloors[1] + "]");
62
+						//console.log("> No closest floor. Sending elevator[" + elevatorIndex + "] to rest floor[" + restFloors[1] + "]");
63 63
 						elevator.goToFloor(restFloors[1]);
64 64
 					}
65 65
 				} else {
66
-					console.log("> Sending elevator[" + elevatorIndex + "] to rest floor[" + restFloors[1] + "]");
66
+					//console.log("> Sending elevator[" + elevatorIndex + "] to rest floor[" + restFloors[1] + "]");
67 67
 					elevator.goToFloor(restFloors[1]);
68 68
 				}
69 69
 			} else {
70
-				floorNum = getClosestFloor(elevator.currentFloor(), destinations)
71
-				console.log("> Sending elevator[" + elevatorIndex + "] to destination floor[" + floorNum + "]");
72
-				elevator.goToFloor(floorNum);
70
+				try {
71
+					floorNum = getClosestFloor(elevator.currentFloor(), destinations)
72
+					console.log("> Sending elevator[" + elevatorIndex + "] to destination floor[" + floorNum + "]");
73
+					elevator.goToFloor(floorNum);
74
+				} catch (e) {
75
+					//console.log("> No closest floor. Sending elevator[" + elevatorIndex + "] to rest floor[" + restFloors[1] + "]");
76
+					elevator.goToFloor(restFloors[1]);
77
+				}
73 78
 			}
74 79
 		}
75 80
 
76
-		function bringClosestElevator(floorNum) {
81
+		function getClosestElevator(floorNum) {
77 82
 			let closestElevator = 0;
78 83
 			let distance        = floorCount;
79 84
 			let newDistance     = distance;
@@ -87,7 +92,7 @@
87 92
 			});
88 93
 
89 94
 			//console.log("Closest is elevator[" + closestElevator + "]")
90
-			elevators[closestElevator].goToFloor(floorNum);
95
+			return closestElevator;
91 96
 		}
92 97
 
93 98
 		function setDirection(elevator, direction){
@@ -114,12 +119,10 @@
114 119
 			floor.on("up_button_pressed", function() {
115 120
 				//console.log("> Up request on floor[" + floor.level + "]");
116 121
 				requests[UP].add(floor.level);
117
-				//bringClosestElevator(floor.level);
118 122
 			});
119 123
 			floor.on("down_button_pressed", function() {
120 124
 				//console.log("> Down request on floor[" + floor.level + "]");
121 125
 				requests[DOWN].add(floor.level);
122
-				//bringClosestElevator(floor.level);
123 126
 			});
124 127
 		});
125 128
 
@@ -129,32 +132,22 @@
129 132
 
130 133
 		elevators.forEach(function (elevator, elevatorIndex) {
131 134
 
132
-			// Basic elevator info
135
+			// Elevator info and variables
136
+			let destinations = new Set();
133 137
 			const restFloors = [
134 138
 				elevatorIndex * Math.floor(floorCount / (elevatorCount + 1)),
135 139
 				(elevatorIndex + 1) * Math.floor(floorCount / (elevatorCount + 1)),
136 140
 				(elevatorIndex + 2) * Math.floor(floorCount / (elevatorCount + 1))
137 141
 			]
138 142
 
139
-			//console.log("Rest floors for elevator[" + elevatorIndex + "]: " + restFloors[0] + ", " + restFloors[1] + ", and " + restFloors[2])
140
-
141
-			elevator.on("floor_button_pressed", function(floorNum) {
142
-				//console.log("> Pressed floor[" + floorNum + "] on elevator[" + elevatorIndex + "]");
143
-				destinations.add(floorNum);
144
-			});
145
-
146
-			// Elevator variables
147
-			let destinations = new Set();
148
-
149 143
 			// Start
150
-			setDirection(elevator, IDLE); // Starts on the ground floor
151
-			console.log("> Sending elevator[" + elevatorIndex + "] to floor[" + restFloors[0] + "]");
152
-
153
-			elevator.goToFloor(restFloors[0]); // Closest rest floor
144
+			setDirection(elevator, UP); // Starts on the ground floor
145
+			console.log("> Elevator[" + elevatorIndex + "] rest floors are " + restFloors[0] + ", " + restFloors[1] + ", and " + restFloors[2] + ". Starting at " + restFloors[0] + ".")
146
+			elevator.goToFloor(restFloors[0]); // Nearest rest floor
154 147
 
155 148
 			// Idle
156 149
 			elevator.on("idle", function() {
157
-				console.log("> Elevator[" + elevatorIndex + "] is idle")
150
+				//console.log("> Elevator[" + elevatorIndex + "] is idle")
158 151
 				setDirection(elevator, IDLE);
159 152
 				if (requests[UP].size == 0 && requests[DOWN].size == 0 && destinations.size == 0) {
160 153
 					elevator.goToFloor(restFloors[1]);
@@ -165,23 +158,23 @@
165 158
 
166 159
 			// Passing
167 160
 			elevator.on("passing_floor", function(floorNum, direction) {
168
-				if (elevator.loadFactor() < 1) {
169
-					if (requests[UP].has(floorNum) || requests[DOWN].has(floorNum) || destinations.has(floorNum)) {
170
-						elevator.goToFloor(floorNum, true);
171
-					}
172
-				} else if (destinations.has(floorNum)) {
161
+				if (elevator.loadFactor() < 1 && (requests[UP].has(floorNum) || requests[DOWN].has(floorNum))) {
173 162
 					elevator.goToFloor(floorNum, true);
174 163
 				}
175 164
 			});
176 165
 
166
+			// Buttons
167
+			elevator.on("floor_button_pressed", function(floorNum) {
168
+				//console.log("> Pressed floor[" + floorNum + "] on elevator[" + elevatorIndex + "]");
169
+				destinations.add(floorNum);
170
+			});
171
+
177 172
 			// Stopped
178 173
 			elevator.on("stopped_at_floor", function(floorNum) {
179 174
 				//console.log("> elevator[" + elevatorIndex + "] stopped at floor[" + floorNum + "]");
180 175
 				destinations.delete(floorNum);
181 176
 				requests[UP].delete(floorNum);
182 177
 				requests[DOWN].delete(floorNum);
183
-
184
-				sendToNext(elevators, elevatorIndex, destinations, requests, restFloors);
185 178
 			});
186 179
 		});
187 180
 	},

Loading…
Cancel
Save