connected nodes
by thebabydino
JavaScript
function Node(value, connections) {
this.value = value;
this.connections = connections;
this.isConnected = function(nodeValue, visited) {
if(this.value == nodeValue) return true;
if(!wasVisited(visited, this.value)) visited.push(this.value);
if(nodeValue in visited || !getNode(nodeValue)) return false;
var len = this.connections.length;
for(var i = 0; i < len; i++) {
if(wasVisited(visited, this.connections[i])) continue;
if(this.connections[i] == nodeValue || getNode(this.connections[i]).isConnected(nodeValue, visited)) return true;
}
return false;
}
}
var wasVisited = function(visited, val) {
for(var i = 0; i < visited.length; i++)
if(val == visited[i]) return true;
return false;
}
// nodes
var nodes = [];
for(var i = 0; i < 12; i++) nodes[i] = new Node(i, []);
var connectNodes = function(A, B) {
var nodeA = getNode(A);
var nodeB = getNode(B);
nodeA.connections.push(B);
nodeB.connections.push(A);
}
var connectMultipleNodes = function(A, nodeValList) {
for(var i = 0; i < nodeValList.length; i++)
connectNodes(A, nodeValList[i]);
}
var getNode = function(nodeValue) {
var arrLen = nodes.length;
for(var i = 0; i < arrLen; i++)
if(nodes[i].value == nodeValue) return nodes[i];
return false;
}
// connect nodes
connectNodes(0, 1);
connectMultipleNodes(2, [1,4,5,7]);
connectNodes(8, 9);
// console.log(nodes);
console.log(getNode(2).isConnected(4, []));
console.log(getNode(1).isConnected(4, []));
console.log(getNode(0).isConnected(7, []));
console.log(getNode(0).isConnected(9, []));