From c488cfa1a9f0727f41ed19a4de33503d0093efcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Kn=C3=BCttel?= Date: Sat, 2 Feb 2019 16:45:15 +0100 Subject: [PATCH] add module that provides answers to the questions --- exam/ex01/connectivity.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 exam/ex01/connectivity.py diff --git a/exam/ex01/connectivity.py b/exam/ex01/connectivity.py new file mode 100644 index 0000000..c7af3fe --- /dev/null +++ b/exam/ex01/connectivity.py @@ -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)) +