Created
December 21, 2015 00:27
-
-
Save hoorayimhelping/75ae8a1a515047f27091 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/js/graph/graph.js b/js/graph/graph.js | |
| index 37483ac..18e119c 100644 | |
| --- a/js/graph/graph.js | |
| +++ b/js/graph/graph.js | |
| @@ -2,8 +2,8 @@ var Node = require('./node'); | |
| var Edge = require('./edge'); | |
| var Graph = function() { | |
| - this.edges = []; | |
| - this.nodes = []; | |
| + this.edges = []; | |
| + this.nodes = []; | |
| }; | |
| Graph.prototype = { | |
| @@ -31,13 +31,15 @@ Graph.prototype = { | |
| start_node.visited = true; | |
| - for (var i = 0, l = start_node.edges.length; i < l; i++) { | |
| + for (var i = 0, l = start_node.edges.length; i < l; ++i) { | |
| var edge = edges[i]; | |
| var node = edge.nodes.tail; | |
| if (node.id === destination_node.id) { | |
| total_value += edge.value; | |
| +console.log(node.id, '==>', destination_node.id, '*******', edge.name, edge.value, total_value) | |
| + | |
| // stop walking the graph when a match is found | |
| // TODO: work out a better solution | |
| this.visitNodes(); | |
| @@ -46,10 +48,18 @@ Graph.prototype = { | |
| } | |
| if (!node.visited) { | |
| +console.log(node.id, '==>', destination_node.id, '--------', edge.name, edge.value, total_value) | |
| total_value = edge.value; | |
| total_value += this.walk(node, destination_node); | |
| } | |
| + | |
| + // if last iteration of loop, set total value to 0 fam | |
| + // if (i === l) { | |
| + // console.log('hi', total_value) | |
| + // total_value = 0; | |
| + // return total_value; | |
| + // } | |
| } | |
| return total_value; | |
| diff --git a/js/graph/node.js b/js/graph/node.js | |
| index 9c03707..520afdb 100644 | |
| --- a/js/graph/node.js | |
| +++ b/js/graph/node.js | |
| @@ -10,4 +10,4 @@ Node.prototype = { | |
| } | |
| }; | |
| -module.exports = Node; | |
| \ No newline at end of file | |
| +module.exports = Node; | |
| diff --git a/js/maps/solar_system.js b/js/maps/solar_system.js | |
| index ea5dd0b..7eaf0f1 100644 | |
| --- a/js/maps/solar_system.js | |
| +++ b/js/maps/solar_system.js | |
| @@ -17,6 +17,9 @@ var SolarSystem = function() { | |
| low_moon_orbit: new Node('Low Moon Orbit'), | |
| moon: new Node('Moon'), | |
| earth_transfer: new Node('Earth Transfer'), | |
| + venus_transfer: new Node('Venus Transfer'), | |
| + low_venus_orbit: new Node('Low Venus Orbit'), | |
| + venus: new Node('Venus'), | |
| mars_transfer: new Node('Mars Transfer'), | |
| low_mars_orbit: new Node('Low Mars Orbit'), | |
| mars: new Node('Mars'), | |
| @@ -36,6 +39,9 @@ var SolarSystem = function() { | |
| moon_transfer_low_moon_orbit: newEdge({ deltav: 680, name: 'moon_transfer-low_moon_orbit' }), | |
| low_moon_orbit_moon_landing: newEdge({ deltav: 1730, name: 'low_moon_orbit-moon_landing' }), | |
| low_earth_orbit_earth_transfer: newEdge({ deltav: 3210, name: 'low_earth_orbit-earth_transfer' }), | |
| + earth_transfer_venus_transfer: newEdge({ deltav: 640, name: 'earth_transfer-venus_transfer' }), | |
| + venus_transfer_low_venus_orbit: newEdge({ deltav: 2940, name: 'venus_transfer-low_venus_orbit' }), | |
| + low_venus_orbit_venus_landing: newEdge({ deltav: 2000, name: 'low_venus_orbit-venus_landing' }), | |
| earth_transfer_mars_transfer: newEdge({ deltav: 1060, name: 'earth_transfer-mars_transfer' }), | |
| mars_transfer_low_mars_orbit: newEdge({ deltav: 1440, name: 'mars_transfer-low_mars_orbit' }), | |
| low_mars_orbit_mars_landing: newEdge({ deltav: 2000, name: 'low_mars_orbit-mars_landing' }), | |
| @@ -56,18 +62,25 @@ SolarSystem.prototype = { | |
| }, | |
| buildGraph: function(graph, edges, nodes) { | |
| + // earth | |
| graph.addEdge(edges.low_earth_orbit, nodes.earth, nodes.low_earth_orbit); | |
| - graph.addEdge(edges.low_earth_orbit_geostationary_transfer, nodes.low_earth_orbit, nodes.geostationary_transfer); | |
| - graph.addEdge(edges.geostationary_transfer_geo_orbit, nodes.geostationary_transfer, nodes.geostationary_orbit); | |
| - | |
| graph.addEdge(edges.low_earth_orbit_moon_transfer, nodes.low_earth_orbit, nodes.moon_transfer); | |
| graph.addEdge(edges.moon_transfer_low_moon_orbit, nodes.moon_transfer, nodes.low_moon_orbit); | |
| graph.addEdge(edges.low_moon_orbit_moon_landing, nodes.low_moon_orbit, nodes.moon); | |
| + graph.addEdge(edges.low_earth_orbit_geostationary_transfer, nodes.low_earth_orbit, nodes.geostationary_transfer); | |
| + graph.addEdge(edges.geostationary_transfer_geo_orbit, nodes.geostationary_transfer, nodes.geostationary_orbit); | |
| + | |
| graph.addEdge(edges.low_earth_orbit_earth_transfer, nodes.low_earth_orbit, nodes.earth_transfer); | |
| - graph.addEdge(edges.earth_transfer_mars_transfer, nodes.earth_transfer, nodes.mars_transfer); | |
| + // venus | |
| + graph.addEdge(edges.earth_transfer_venus_transfer, nodes.earth_transfer, nodes.venus_transfer); | |
| + graph.addEdge(edges.venus_transfer_low_venus_orbit, nodes.venus_transfer, nodes.low_venus_orbit); | |
| + graph.addEdge(edges.low_venus_orbit_venus_landing, nodes.low_venus_orbit, nodes.venus); | |
| + | |
| + // mars | |
| + graph.addEdge(edges.earth_transfer_mars_transfer, nodes.earth_transfer, nodes.mars_transfer); | |
| graph.addEdge(edges.mars_transfer_low_mars_orbit, nodes.mars_transfer, nodes.low_mars_orbit); | |
| graph.addEdge(edges.low_mars_orbit_mars_landing, nodes.low_mars_orbit, nodes.mars); | |
| diff --git a/test/solar_system.js b/test/solar_system.js | |
| index 5cd1f48..3e8289a 100644 | |
| --- a/test/solar_system.js | |
| +++ b/test/solar_system.js | |
| @@ -42,6 +42,38 @@ describe("one-way trips from earth", function() { | |
| }); | |
| }); | |
| + describe("to venutian space", function() { | |
| + it("calculates the delta-v to venus transfer orbit", function() { | |
| + var total_value = graph.walk(nodes.earth, nodes.venus_transfer); | |
| + var expected_value = edges.low_earth_orbit.value + | |
| + edges.low_earth_orbit_earth_transfer.value + | |
| + edges.earth_transfer_venus_transfer.value; | |
| + | |
| + expect(total_value).to.equal(expected_value); | |
| + }); | |
| + | |
| + it("calculates the delta-v to low venus orbit", function() { | |
| + var total_value = graph.walk(nodes.earth, nodes.low_venus_orbit); | |
| + var expected_value = edges.low_earth_orbit.value + | |
| + edges.low_earth_orbit_earth_transfer.value + | |
| + edges.earth_transfer_venus_transfer.value + | |
| + edges.venus_transfer_low_venus_orbit.value; | |
| + | |
| + expect(total_value).to.equal(expected_value); | |
| + }); | |
| + | |
| + it("calculates the delta-v to a venus landing", function() { | |
| + var total_value = graph.walk(nodes.earth, nodes.venus); | |
| + var expected_value = edges.low_earth_orbit.value + | |
| + edges.low_earth_orbit_earth_transfer.value + | |
| + edges.earth_transfer_venus_transfer.value + | |
| + edges.venus_transfer_low_venus_orbit.value + | |
| + edges.low_venus_orbit_venus_landing.value; | |
| + | |
| + expect(total_value).to.equal(expected_value); | |
| + }); | |
| + }); | |
| + | |
| describe("to martian space", function() { | |
| it("calculates the delta-v to mars transfer orbit", function() { | |
| var total_value = graph.walk(nodes.earth, nodes.mars_transfer); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment