浏览代码

Simplify calls

Passes challenges 1-4 somewhat consistently.
master
父节点
当前提交
373f9da55c
共有 1 个文件被更改,包括 26 次插入33 次删除
  1. 26
    33
      elevator.js

+ 26
- 33
elevator.js 查看文件

56
 					let allStops = new Set([...destinations, ...requests[UP], ...requests[DOWN]]);
56
 					let allStops = new Set([...destinations, ...requests[UP], ...requests[DOWN]]);
57
 					try {
57
 					try {
58
 						floorNum = getClosestFloor(elevator.currentFloor(), allStops)
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
 						elevator.goToFloor(floorNum);
60
 						elevator.goToFloor(floorNum);
61
 					} catch (e) {
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
 						elevator.goToFloor(restFloors[1]);
63
 						elevator.goToFloor(restFloors[1]);
64
 					}
64
 					}
65
 				} else {
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
 					elevator.goToFloor(restFloors[1]);
67
 					elevator.goToFloor(restFloors[1]);
68
 				}
68
 				}
69
 			} else {
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
 			let closestElevator = 0;
82
 			let closestElevator = 0;
78
 			let distance        = floorCount;
83
 			let distance        = floorCount;
79
 			let newDistance     = distance;
84
 			let newDistance     = distance;
87
 			});
92
 			});
88
 
93
 
89
 			//console.log("Closest is elevator[" + closestElevator + "]")
94
 			//console.log("Closest is elevator[" + closestElevator + "]")
90
-			elevators[closestElevator].goToFloor(floorNum);
95
+			return closestElevator;
91
 		}
96
 		}
92
 
97
 
93
 		function setDirection(elevator, direction){
98
 		function setDirection(elevator, direction){
114
 			floor.on("up_button_pressed", function() {
119
 			floor.on("up_button_pressed", function() {
115
 				//console.log("> Up request on floor[" + floor.level + "]");
120
 				//console.log("> Up request on floor[" + floor.level + "]");
116
 				requests[UP].add(floor.level);
121
 				requests[UP].add(floor.level);
117
-				//bringClosestElevator(floor.level);
118
 			});
122
 			});
119
 			floor.on("down_button_pressed", function() {
123
 			floor.on("down_button_pressed", function() {
120
 				//console.log("> Down request on floor[" + floor.level + "]");
124
 				//console.log("> Down request on floor[" + floor.level + "]");
121
 				requests[DOWN].add(floor.level);
125
 				requests[DOWN].add(floor.level);
122
-				//bringClosestElevator(floor.level);
123
 			});
126
 			});
124
 		});
127
 		});
125
 
128
 
129
 
132
 
130
 		elevators.forEach(function (elevator, elevatorIndex) {
133
 		elevators.forEach(function (elevator, elevatorIndex) {
131
 
134
 
132
-			// Basic elevator info
135
+			// Elevator info and variables
136
+			let destinations = new Set();
133
 			const restFloors = [
137
 			const restFloors = [
134
 				elevatorIndex * Math.floor(floorCount / (elevatorCount + 1)),
138
 				elevatorIndex * Math.floor(floorCount / (elevatorCount + 1)),
135
 				(elevatorIndex + 1) * Math.floor(floorCount / (elevatorCount + 1)),
139
 				(elevatorIndex + 1) * Math.floor(floorCount / (elevatorCount + 1)),
136
 				(elevatorIndex + 2) * Math.floor(floorCount / (elevatorCount + 1))
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
 			// Start
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
 			// Idle
148
 			// Idle
156
 			elevator.on("idle", function() {
149
 			elevator.on("idle", function() {
157
-				console.log("> Elevator[" + elevatorIndex + "] is idle")
150
+				//console.log("> Elevator[" + elevatorIndex + "] is idle")
158
 				setDirection(elevator, IDLE);
151
 				setDirection(elevator, IDLE);
159
 				if (requests[UP].size == 0 && requests[DOWN].size == 0 && destinations.size == 0) {
152
 				if (requests[UP].size == 0 && requests[DOWN].size == 0 && destinations.size == 0) {
160
 					elevator.goToFloor(restFloors[1]);
153
 					elevator.goToFloor(restFloors[1]);
165
 
158
 
166
 			// Passing
159
 			// Passing
167
 			elevator.on("passing_floor", function(floorNum, direction) {
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
 					elevator.goToFloor(floorNum, true);
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
 			// Stopped
172
 			// Stopped
178
 			elevator.on("stopped_at_floor", function(floorNum) {
173
 			elevator.on("stopped_at_floor", function(floorNum) {
179
 				//console.log("> elevator[" + elevatorIndex + "] stopped at floor[" + floorNum + "]");
174
 				//console.log("> elevator[" + elevatorIndex + "] stopped at floor[" + floorNum + "]");
180
 				destinations.delete(floorNum);
175
 				destinations.delete(floorNum);
181
 				requests[UP].delete(floorNum);
176
 				requests[UP].delete(floorNum);
182
 				requests[DOWN].delete(floorNum);
177
 				requests[DOWN].delete(floorNum);
183
-
184
-				sendToNext(elevators, elevatorIndex, destinations, requests, restFloors);
185
 			});
178
 			});
186
 		});
179
 		});
187
 	},
180
 	},

正在加载...
取消
保存