Files
grokking_algorithms/06_breadth-first_search/python/01_breadth-first_search.py
Matvey 70d4d231bf Fix/Python 06 bfs: case when entrypoint is target (#203)
* Simplify cognitive complexity

* Fix case when entrypoint is target

* Simplyfy check for case: entrypoint is target
2022-11-18 15:27:29 -06:00

35 lines
921 B
Python

from collections import deque
def person_is_seller(name):
return name[-1] == 'm'
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"] = []
def search(name):
search_queue = deque()
search_queue += [name]
# This is how you keep track of which people you've searched before.
searched = set()
while search_queue:
person = search_queue.popleft()
# Only search this person if you haven't already searched them.
if person in searched:
continue
if person_is_seller(person):
print(person + " is a mango seller!")
return True
search_queue += graph[person]
# Marks this person as searched
searched.add(person)
return False
search("you")