From 076e8d208d84803922af0746a3207e16972c552c Mon Sep 17 00:00:00 2001
From: Jacob Theisen <jacobth@stud.ntnu.no>
Date: Tue, 23 Nov 2021 11:08:37 +0100
Subject: [PATCH] !!

---
 ov9/test_files/set_test.py | 45 +++++++++++++++++++-------------------
 1 file changed, 22 insertions(+), 23 deletions(-)

diff --git a/ov9/test_files/set_test.py b/ov9/test_files/set_test.py
index 7a0fbb4..ddf24fd 100644
--- a/ov9/test_files/set_test.py
+++ b/ov9/test_files/set_test.py
@@ -21,9 +21,9 @@ class edges (object):
         self.speed = speed 
 
 class results(object):
-    def __init__(self, node, time, visited, prev):
+    def __init__(self, node, total_time, visited, prev):
         self.node = node
-        self.time = time
+        self.total_time = total_time
         self.visited = visited
         self.prev = prev
 
@@ -36,10 +36,10 @@ node_file = node_file.split()
 num_of_nodes = int(node_file[0])
 node_file.pop(0)
 
-node_arr = set()
+node_arr = []
 for i in range(0, len(node_file), 3):
     #nodenr breddegrad lengdegrad
-    node_arr.add(nodes(int(node_file[i]), float(node_file[i+1]), float(node_file[i+2])))
+    node_arr.append(nodes(int(node_file[i]), float(node_file[i+1]), float(node_file[i+2])))
 
 #prep edges
 with open('./kanter.txt','r') as file:
@@ -49,10 +49,10 @@ edge_file = edge_file.split()
 num_of_edges = int(edge_file[0])
 edge_file.pop(0)
 
-edge_arr = set()
+edge_arr = []
 for i in range(0, len(edge_file), 5):
     #franode tilnode kjøretid lengde fartsgrense
-    edge_arr.add(edges(int(edge_file[i]), int(edge_file[i+1]), int(edge_file[i+2]), int(edge_file[i+3]), int(edge_file[i+4])))
+    edge_arr.append(edges(int(edge_file[i]), int(edge_file[i+1]), int(edge_file[i+2]), int(edge_file[i+3]), int(edge_file[i+4])))
 
 #prep intresting 
 with open('./interessepkt.txt','r') as file:
@@ -62,18 +62,18 @@ intresting_file = intresting_file.split('\n')
 num_of_intresting = int(intresting_file[0])
 intresting_file.pop(0)
 
-intresting_arr = set()
+intresting_arr = []
 for i in range(len(intresting_file)):
     #nodenr kode "Navn på stedet"
     tmp_values = intresting_file[i].split()
-    intresting_arr.add(int_points(int(tmp_values[0]), int(tmp_values[1]), ' '.join(tmp_values[2:])))
+    intresting_arr.append(int_points(int(tmp_values[0]), int(tmp_values[1]), ' '.join(tmp_values[2:])))
 
 
 max_num = max(edge_arr,key=lambda item:item.time)
-res_arr = set()
+res_arr = []
 def init_table():
     for i in range(num_of_nodes):
-        res_arr.add(results(i, max_num.time+1, False, None))
+        res_arr.append(results(i, max_num.time+1, False, None, ))
 
 # def rec_func(node, counter, global_fra, end_switch):
 #     if not end_switch:
@@ -93,14 +93,13 @@ def init_table():
 #             return rec_func(node, counter, global_fra, end_switch)
 
 
-def rec_func2(node, counter, global_fra):
+def rec_func2(node, global_fra):
     path=[]
     while node.node != global_fra:
-        counter +=node.time
         path.append(node.node)
         node = [a for a in res_arr if a.node == node.prev][0]
     path.append(node.node)
-    return counter,path
+    return path
 
 
 
@@ -123,13 +122,14 @@ def update_que(que):
     que = [a.node for a in tmp_arr if a in tmp_arr]
     return que
 
+
+
 end_que = []
 queue = [] 
 we_soon_to_be_done = False
 def dijkstras(slutt, fra, start):
     global we_soon_to_be_done
     global queue
-
     if we_soon_to_be_done:
         end_que.pop(0)
     current_node = [b for b in res_arr if b.node == fra][0]
@@ -137,8 +137,8 @@ def dijkstras(slutt, fra, start):
         if tmp_edge.fra == fra:
             current_neighbour = [a for a in res_arr if a.node == tmp_edge.til][0]
             if current_neighbour.visited == False and current_neighbour.node not in queue:
-                current_neighbour.time = tmp_edge.time
-                current_neighbour.prev = fra 
+                current_neighbour.time = current_node.time + tmp_edge.time
+                current_neighbour.prev = current_node.node
                 if tmp_edge.til == slutt:
                     current_node.visited = True
                     we_soon_to_be_done = True
@@ -150,16 +150,15 @@ def dijkstras(slutt, fra, start):
                         queue.append(tmp_edge.til)
 
             elif current_neighbour.node != start:
-                if calculate_shortest_path(current_node, tmp_edge.time, current_neighbour, start):
-                    current_neighbour.time = tmp_edge.time
-                    current_neighbour.prev = tmp_edge.fra
+                    if current_node.time + tmp_edge.time < current_neighbour.time:
+                        current_neighbour.time = tmp_edge.time + current_node.time
+                        current_neighbour.prev = current_node.node
     if we_soon_to_be_done and not len(end_que): 
         #not finished
         end_node = [b for b in res_arr if b.node == slutt][0]
-        total_time = 0
-        total_time,travel_arr = rec_func2(end_node, total_time, start)
+        travel_arr = rec_func2(end_node, start)
         travel_arr = reversed(travel_arr)
-        print(f'total time: {total_time}\nshortest path: {"->".join(str(v) for v in travel_arr)}')
+        print(f'total time: {end_node.time}\nshortest path: {"->".join(str(v) for v in travel_arr)}')
         exit()
     else:
         if we_soon_to_be_done:
@@ -179,7 +178,7 @@ def init_things():
         if sys.argv[1] == '-d':
             #node_id
             start = 20
-            slutt = 30
+            slutt = 4000
             init_table()
             queue.append(start)
             start_node = [a for a in res_arr if a.node == start][0]
-- 
GitLab