commit eb3d1bbf66fea2c0503eff05415f677f6d040a95
parent 33414ff629f29f02711fe23b5223e5ac55d5e3d0
Author: Andrew Laack <andrew@laack.co>
Date: Wed, 9 Sep 2026 20:34:00 -0500
Updated code to run forever and to output a nice background image.
Diffstat:
1 file changed, 67 insertions(+), 66 deletions(-)
diff --git a/visualizations/prim.py b/visualizations/prim.py
@@ -6,7 +6,7 @@ import math
pygame.init()
-display = pygame.display.set_mode((600,500))
+display = pygame.display.set_mode((5120,1440))
VERTICES = 100
EDGES = 200
@@ -43,80 +43,81 @@ class Edge():
return self.dist < otr.dist
-graph = {}
+while True:
+ graph = {}
-for i in range(0,VERTICES):
- x = random.random() * 597.5
- y = random.random() * 497.5
- graph[Vertex(x,y)] = []
+ for i in range(0,VERTICES):
+ x = random.random() * 5120
+ y = random.random() * 1440
+ graph[Vertex(x,y)] = []
-edge_list = []
-for i in range(0,EDGES):
- k1 = None
- k2 = None
- while k1 == k2:
- k1 = random.choice(list(graph.keys()))
- k2 = random.choice(list(graph.keys()))
+ edge_list = []
+ for i in range(0,EDGES):
+ k1 = None
+ k2 = None
+ while k1 == k2:
+ k1 = random.choice(list(graph.keys()))
+ k2 = random.choice(list(graph.keys()))
- edge = Edge(k1,k2)
- graph[k1].append(edge)
- graph[k2].append(edge)
- edge_list.append(edge)
+ edge = Edge(k1,k2)
+ graph[k1].append(edge)
+ graph[k2].append(edge)
+ edge_list.append(edge)
-edge_heap = []
-visited_vertices = set()
+ edge_heap = []
+ visited_vertices = set()
-mst = []
+ mst = []
-while True:
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- pygame.quit()
- quit()
-
- display.fill(black)
-
- for vertex in graph:
- vertex.draw_vertex(display)
-
- for edge in edge_list:
- edge.draw_edge(display, light_grey)
-
- for edge in mst:
- edge.draw_edge(display, white)
-
-
- if len(edge_heap) == 0:
- start = random.choice(list(graph.keys()))
- visited_vertices.add(start)
- edges = graph[start]
- for edge in edges:
- heapq.heappush(edge_heap, edge)
- else:
- item = None
- while True:
- if len(edge_heap) > 0:
- item = heapq.heappop(edge_heap)
- v1_visited = item.v1 in visited_vertices
- v2_visited = item.v2 in visited_vertices
- if v1_visited != v2_visited:
- break
- else:
- item = None
- break
+ while True:
+ for event in pygame.event.get():
+ if event.type == pygame.QUIT:
+ pygame.quit()
+ quit()
- if item != None:
- new_vertex = item.v2 if item.v1 in visited_vertices else item.v1
- visited_vertices.add(new_vertex)
- new_vertex.visited = True
- mst.append(item)
- edges = graph[new_vertex]
- for edge in edges:
- heapq.heappush(edge_heap, edge)
- time.sleep(.1)
+ display.fill(black)
+
+ for vertex in graph:
+ vertex.draw_vertex(display)
+ for edge in edge_list:
+ edge.draw_edge(display, light_grey)
+ for edge in mst:
+ edge.draw_edge(display, white)
- pygame.display.update()
+
+ if len(edge_heap) == 0:
+ start = random.choice(list(graph.keys()))
+ visited_vertices.add(start)
+ edges = graph[start]
+ for edge in edges:
+ heapq.heappush(edge_heap, edge)
+ else:
+ item = None
+ while True:
+ if len(edge_heap) > 0:
+ item = heapq.heappop(edge_heap)
+ v1_visited = item.v1 in visited_vertices
+ v2_visited = item.v2 in visited_vertices
+ if v1_visited != v2_visited:
+ break
+ else:
+ item = None
+ break
+
+ if item != None:
+ new_vertex = item.v2 if item.v1 in visited_vertices else item.v1
+ visited_vertices.add(new_vertex)
+ new_vertex.visited = True
+ mst.append(item)
+ edges = graph[new_vertex]
+ for edge in edges:
+ heapq.heappush(edge_heap, edge)
+ else:
+ pygame.image.save(display, "out.jpg")
+ break
+ time.sleep(.1)
+ pygame.display.update()