Skip to content

Instantly share code, notes, and snippets.

@hoorayimhelping
Created September 14, 2015 20:39
Show Gist options
  • Save hoorayimhelping/133fcaf0009167b68314 to your computer and use it in GitHub Desktop.
Save hoorayimhelping/133fcaf0009167b68314 to your computer and use it in GitHub Desktop.
diff --git a/js/data/solar_system.js b/js/data/solar_system.js
index 91a18a6..ba9eb16 100644
--- a/js/data/solar_system.js
+++ b/js/data/solar_system.js
@@ -1,53 +1,48 @@
var Node = require('../src/node');
var Edge = require('../src/edge');
-var newNode = function(id) {
- var node = new Node();
- node.id = id;
-
- return node;
-};
-
var newEdge = function(options) {
return new Edge(options.deltav, options.name);
};
// values taken from http://i.imgur.com/SqdzxzF.png
-var nodes = {
- earth: newNode('Earth'),
- leo: newNode('Low Earth Orbit'),
- geo_transfer: newNode('Geostationary Transfer'),
- geostationary: newNode('Geostationary Orbit'),
- moon_transfer: newNode('Moon Transfer'),
- low_moon_orbit: newNode('Low Moon Orbit'),
- earth_transfer: newNode('Earth Transfer'),
- mars_transfer: newNode('Mars Transfer'),
- deimos_transfer: newNode('Deimos Transfer'),
- low_deimos_orbit: newNode('Low Deimos Orbit'),
- deimos: newNode('Deimos')
-};
+var SolarSystem = function() {
+ this.nodes = {
+ earth: new Node('Earth'),
+ leo: new Node('Low Earth Orbit'),
+ geo_transfer: new Node('Geostationary Transfer'),
+ geostationary: new Node('Geostationary Orbit'),
+ moon_transfer: new Node('Moon Transfer'),
+ low_moon_orbit: new Node('Low Moon Orbit'),
+ earth_transfer: new Node('Earth Transfer'),
+ mars_transfer: new Node('Mars Transfer'),
+ deimos_transfer: new Node('Deimos Transfer'),
+ low_deimos_orbit: new Node('Low Deimos Orbit'),
+ deimos: new Node('Deimos')
+ };
-var edges = {
- low_earth_orbit: newEdge({ deltav: 9400, name: 'low_earth_orbit' }),
- leo_geo_transfer: newEdge({ deltav: 2440, name: 'leo-geo_transfer' }),
- geo_transfer_geo_orbit: newEdge({ deltav: 1470, name: 'geostationary_transfer-geostationary_orbit' }),
- leo_moon_transfer: newEdge({ deltav: 3260, name: 'leo-moon_transfer' }),
- moon_transfer_lmo: newEdge({ deltav: 680, name: 'moon_transfer-low_moon_orbit' }),
- leo_earth_transfer: newEdge({ deltav: 3210, name: 'leo-earth_transfer' }),
- earth_transfer_mars_transfer: newEdge({ deltav: 1060, name: 'earth_transfer-mars_transfer' }),
- mars_transfer_deimos_transfer: newEdge({ deltav: 340, name: 'mars_transfer_deimos_transfer' }),
- deimos_transfer_low_deimos_orbit: newEdge({ deltav: 652, name: 'deimos_transfer_low_deimos_orbit' }),
- low_deimos_orbit_deimos: newEdge({ deltav: 4, name: 'low_deimos_orbit_deimos' })
+ this.edges = {
+ low_earth_orbit: newEdge({ deltav: 9400, name: 'low_earth_orbit' }),
+ leo_geo_transfer: newEdge({ deltav: 2440, name: 'leo-geo_transfer' }),
+ geo_transfer_geo_orbit: newEdge({ deltav: 1470, name: 'geostationary_transfer-geostationary_orbit' }),
+ leo_moon_transfer: newEdge({ deltav: 3260, name: 'leo-moon_transfer' }),
+ moon_transfer_lmo: newEdge({ deltav: 680, name: 'moon_transfer-low_moon_orbit' }),
+ leo_earth_transfer: newEdge({ deltav: 3210, name: 'leo-earth_transfer' }),
+ earth_transfer_mars_transfer: newEdge({ deltav: 1060, name: 'earth_transfer-mars_transfer' }),
+ mars_transfer_deimos_transfer: newEdge({ deltav: 340, name: 'mars_transfer_deimos_transfer' }),
+ deimos_transfer_low_deimos_orbit: newEdge({ deltav: 652, name: 'deimos_transfer_low_deimos_orbit' }),
+ low_deimos_orbit_deimos: newEdge({ deltav: 4, name: 'low_deimos_orbit_deimos' })
+ };
};
-var reset = function() {
- return {
- nodes,
- edges
+
+SolarSystem.prototype = {
+ resetNodes: function() {
+ for (var node in this.nodes) {
+ this.nodes[node].visited = false;
+ }
}
};
// es6 !!
-module.exports = {
- nodes, edges, reset
-};
\ No newline at end of file
+module.exports = new SolarSystem();
\ No newline at end of file
diff --git a/js/src/node.js b/js/src/node.js
index 9964b57..9c03707 100644
--- a/js/src/node.js
+++ b/js/src/node.js
@@ -1,7 +1,5 @@
-var Node = function(options) {
- this.props = options || {};
-
- this.id = new Date().getTime();
+var Node = function(id) {
+ this.id = id;
this.edges = [];
this.visited = false;
};
diff --git a/js/test/graph.js b/js/test/graph.js
index 5b3e2e1..6675cb2 100644
--- a/js/test/graph.js
+++ b/js/test/graph.js
@@ -54,6 +54,7 @@ describe("walking the graph", function(t) {
describe("walking the solar system delta v graph from earth to mars transfer orbit", function(t) {
t.plan(1);
+ solar_system.resetNodes();
var total_value = graph.walk(nodes.earth, nodes.mars_transfer);
var expected_value = edges.low_earth_orbit.value +
edges.leo_earth_transfer.value +
@@ -63,14 +64,13 @@ describe("walking the graph", function(t) {
total_value,
expected_value
);
-
- graph.resetNodes();
t.end();
});
describe("walking the solar system delta v graph from earth to deimos", function(t) {
t.plan(1);
+ solar_system.resetNodes();
var total_value = graph.walk(nodes.earth, nodes.deimos);
var expected_value = edges.low_earth_orbit.value +
@@ -84,8 +84,6 @@ describe("walking the graph", function(t) {
total_value,
expected_value
);
-
- graph.resetNodes();
t.end();
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment