MCPcopy Index your code
hub / github.com/braziljs/eloquente-javascript / lazyRobot

Function lazyRobot

code/solutions/07_2_robot_efficiency.js:1–24  ·  view source on GitHub ↗
({place, parcels}, route)

Source from the content-addressed store, hash-verified

1function lazyRobot({place, parcels}, route) {
2 if (route.length == 0) {
3 // Describe a route for every parcel
4 let routes = parcels.map(parcel => {
5 if (parcel.place != place) {
6 return {route: findRoute(roadGraph, place, parcel.place),
7 pickUp: true};
8 } else {
9 return {route: findRoute(roadGraph, place, parcel.address),
10 pickUp: false};
11 }
12 });
13
14 // This determines the precedence a route gets when choosing.
15 // Route length counts negatively, routes that pick up a package
16 // get a small bonus.
17 function score({route, pickUp}) {
18 return (pickUp ? 0.5 : 0) - route.length;
19 }
20 route = routes.reduce((a, b) => score(a) > score(b) ? a : b).route;
21 }
22
23 return {direction: route[0], memory: route.slice(1)};
24}
25
26runRobotAnimation(VillageState.random(), lazyRobot, []);

Callers

nothing calls this directly

Calls 4

scoreFunction · 0.85
mapMethod · 0.45
reduceMethod · 0.45
sliceMethod · 0.45

Tested by

no test coverage detected