From 484f758d72f45b6ea84da479dae4b7a19fba96b7 Mon Sep 17 00:00:00 2001 From: Jacob Theisen <jacobth@stud.ntnu.no> Date: Sat, 20 Nov 2021 15:02:42 +0100 Subject: [PATCH] prep --- ov8/test_env/HM_compressed_text | Bin 10019 -> 15686 bytes ov9/README.md | 1 + ov9/program1.py | 53 ++++++++++++++++++++++++++++++-- 3 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 ov9/README.md diff --git a/ov8/test_env/HM_compressed_text b/ov8/test_env/HM_compressed_text index 7da038842dbd4f35d086b57517e82a179150618e..55f35ec554422ef52d920b6941fd3b8028838b90 100644 GIT binary patch literal 15686 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 literal 10019 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 AssI20 diff --git a/ov9/README.md b/ov9/README.md new file mode 100644 index 0000000..68b6e7e --- /dev/null +++ b/ov9/README.md @@ -0,0 +1 @@ +#python3 program1.py -a/-n \ No newline at end of file diff --git a/ov9/program1.py b/ov9/program1.py index 102505c..be39017 100644 --- a/ov9/program1.py +++ b/ov9/program1.py @@ -1,4 +1,5 @@ - +from math import inf +import sys class int_points (object): def __init__(self, id, type, name): @@ -20,6 +21,14 @@ class edges (object): self.lenght = lenght self.speed = speed +class results(object): + def __init__(self, node, dist, visited): + self.node = node + self.dist = dist + self.visited = visited + + +#prep nodes with open('./test_files/noder.txt','r') as file: node_file = file.read() @@ -32,7 +41,7 @@ for i in range(0, len(node_file), 3): #nodenr breddegrad lengdegrad node_arr.append(nodes(node_file[i], node_file[i+1], node_file[i+2])) - +#prep edges with open('./test_files/kanter.txt','r') as file: edge_file = file.read() @@ -45,7 +54,7 @@ for i in range(0, len(edge_file), 5): #franode tilnode kjøretid lengde fartsgrense edge_arr.append(edges(edge_file[i], edge_file[i+1], edge_file[i+2], edge_file[i+3], edge_file[i+4])) - +#prep intresting with open('./test_files/interessepkt.txt','r') as file: intresting_file = file.read() @@ -59,5 +68,43 @@ for i in range(len(intresting_file)): tmp_values = intresting_file[i].split() intresting_arr.append(int_points(tmp_values[0], tmp_values[1], ' '.join(tmp_values[2:]))) +res_arr = [] +def init_table(): + for i in range(len(node_file)): + res_arr.append(results(i, inf, None)) + + + + +queue = [] +def dijkstras(fra, til): + if fra == til: + print('were here') + for i in edge_arr: + if fra == i.fra: + a = [a for a in queue if a.visited == None and a.node == i.til] + if a: + queue.append(i.til) + + + + + + +def init_things(): + if len(sys.argv) > 1: + if sys.argv[1] == '-d': + #node_id + fra = 0 + til = 1 + init_table() + dijkstras(fra, til) + elif sys.argv[1] == '-a': + print('A* not yet implemented') + else: + print('Unknown argument') + else: + print('Missing argument') +init_things() \ No newline at end of file -- GitLab