Transfer in to JPNB
This commit is contained in:
55
P1/graph.py
55
P1/graph.py
@@ -1,12 +1,11 @@
|
||||
from prettytable import PrettyTable
|
||||
from pygame.event import set_keyboard_grab
|
||||
|
||||
from utils import *
|
||||
|
||||
|
||||
class Node:
|
||||
|
||||
def __init__(self, name, x=None, y=None, state="free"):
|
||||
def __init__(self, name, x=None, y=None):
|
||||
self.parent = None
|
||||
self.name = name
|
||||
self.edges = []
|
||||
@@ -42,7 +41,7 @@ class Graph:
|
||||
for node in node_list:
|
||||
edge_values = ['X'] * len(node_list)
|
||||
for edge in node.edges:
|
||||
edge_values[next((i for i, e in enumerate(node_list) if e.name == edge.end.name), -1)] = edge.g
|
||||
edge_values[next((i for i, e in enumerate(node_list) if e.name == edge.end.name), -1)] = edge.value
|
||||
t.add_row([node.name] + edge_values)
|
||||
print(t)
|
||||
|
||||
@@ -53,36 +52,42 @@ class Queue:
|
||||
self.items = []
|
||||
self.sort_by = sort_by
|
||||
|
||||
def empty(self):
|
||||
return len(self.items) == 0
|
||||
def clear(self):
|
||||
self.items.clear()
|
||||
|
||||
def is_empty(self):
|
||||
if len(self.items) > 0:
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
def pop(self):
|
||||
if not self.empty():
|
||||
if self.type == 'LIFO':
|
||||
''' LIFO
|
||||
queue = [node_0, node_1, ... , node_n]
|
||||
-> pop node_n
|
||||
'''
|
||||
return self.items.pop()
|
||||
else:
|
||||
''' FIFO & PRIO
|
||||
queue = [node_0, node_1, ... , node_n]
|
||||
-> pop node_0
|
||||
'''
|
||||
return self.items.pop(0)
|
||||
return None
|
||||
|
||||
def push(self, node):
|
||||
self.items.append(node)
|
||||
def push(self, element):
|
||||
self.items.append(element)
|
||||
'''
|
||||
queue = [node_0, node_1, ... , node_n] <- node_n+1
|
||||
queue = [element_0, element_1, ... , element_n] <- element_n+1
|
||||
'''
|
||||
if self.type == 'PRIO':
|
||||
'''
|
||||
Sorting so lowest cost/ value is at [0]
|
||||
queue = [node_0 < node_1 < ... < node_n < node_n+1]
|
||||
queue = [element_0 < element_1 < ... < element_n < element_n+1]
|
||||
'''
|
||||
if self.sort_by == '':
|
||||
self.items.sort(key=lambda item: item.value)
|
||||
elif self.sort_by == 'f':
|
||||
self.items.sort(key=lambda item: item.f)
|
||||
|
||||
def pop(self):
|
||||
if not self.is_empty():
|
||||
if self.type == 'LIFO':
|
||||
''' LIFO
|
||||
queue = [element_0, elemente_1, ... , element_n]
|
||||
-> pop element_n
|
||||
'''
|
||||
return self.items.pop()
|
||||
else:
|
||||
''' FIFO & PRIO
|
||||
queue = [element_0, element_1, ... , element_n]
|
||||
-> pop element_0
|
||||
'''
|
||||
return self.items.pop(0)
|
||||
return None
|
||||
Reference in New Issue
Block a user