add module that provides answers to the questions

gol
Daniel Knüttel 2019-02-02 16:45:15 +01:00
parent 2098a38486
commit c488cfa1a9
1 changed files with 26 additions and 0 deletions

View File

@ -0,0 +1,26 @@
from collections import deque
def can_reach(title, connection):
cursor = connection.cursor()
cursor.execute("SELECT COUNT(destination) FROM links WHERE destination=?", (title, ))
count = cursor.fetchone()[0]
return count > 0
def shortest_path(center, title, connection):
if(not can_reach(title, connection)):
return []
cursor = connection.cursor()
current_title = title
path = deque()
while(current_title != center):
path.append(current_title)
cursor.execute('''SELECT links.source
FROM links
LEFT JOIN dijkstra_helper ON links.destination=dijkstra_helper.name
WHERE links.destination=:title
ORDER BY dijkstra_helper.value ASC
LIMIT 1''', {"title": current_title})
current_title = cursor.fetchone()[0]
return list(reversed(path))