Files
grokking_algorithms/06_breadth-first_search/javascript/01_breadth-first_search.js
Max Beatty 5b675cc2e8 Complete "longest common ..." examples (#100)
* no else return

* fix var ref

* fix importing/requiring dependencies

* complete longest common examples
2019-03-28 14:52:55 -07:00

38 lines
1020 B
JavaScript

function person_is_seller(name) {
return name[name.length - 1] === "m";
}
const graph = {};
graph["you"] = ["alice", "bob", "claire"];
graph["bob"] = ["anuj", "peggy"];
graph["alice"] = ["peggy"];
graph["claire"] = ["thom", "jonny"];
graph["anuj"] = [];
graph["peggy"] = [];
graph["thom"] = [];
graph["jonny"] = [];
function search(name) {
let search_queue = [];
search_queue = search_queue.concat(graph[name]);
// This array is how you keep track of which people you've searched before.
const searched = [];
while (search_queue.length) {
let person = search_queue.shift();
// Only search this person if you haven't already searched them
if (searched.indexOf(person) === -1) {
if (person_is_seller(person)) {
console.log(person + " is a mango seller!");
return true;
}
search_queue = search_queue.concat(graph[person]);
// Marks this person as searched
searched.push(person);
}
}
return false;
}
search("you"); // thom is a mango seller!