How to use set_description method in Slash

Best Python code snippet using slash

__init__.py

Source:__init__.py Github

copy

Full Screen

...7def dfs(visualizer, start_vertex):8 graph = visualizer.model9 visited = [False for _ in graph.vertices]10 def _dfs(v):11 visualizer.set_description('Переходим в вершину {}'.format(v))12 visualizer.set_vertex_border_color(v, colors.BLUE)13 visualizer.next_step()14 visited[v] = True15 for edge in graph.ribs:16 u = graph.get_second_directed_vertex(edge, v)17 if u is not None:18 visualizer.set_description(19 'Рассматриваем ребро ({}, {})'.format(v, u)20 )21 visualizer.set_edge_color(edge.first_vertex.index, edge.second_vertex.index, colors.RED)22 visualizer.next_step()23 if not visited[u]:24 visualizer.set_edge_color(edge.first_vertex.index, edge.second_vertex.index, colors.GREEN_NEON)25 visualizer.set_vertex_border_color(v, colors.GREY)26 _dfs(u)27 if visualizer.description:28 text = visualizer.description.get_text()29 else:30 text = ''31 text += '\nВозвращаемся в вершину {}'.format(v)32 visualizer.set_description(text)33 visualizer.set_vertex_border_color(v, colors.BLUE)34 visualizer.next_step()35 else:36 visualizer.set_description('Вершина {} была помечена ранее'.format(u))37 visualizer.set_edge_color(edge.first_vertex.index, edge.second_vertex.index, colors.GREEN_NEON)38 visualizer.next_step()39 visualizer.set_description('Обход из вершины {} закончился, помечаем вершину как пройденную.'.format(v))40 visualizer.set_vertex_border_color(v, colors.RED)41 _dfs(start_vertex)42 visualizer.set_description('Обход завершен.')43 visualizer.next_step()44 visualizer.show()45def bfs(visualizer, start_vertex):46 graph = visualizer.model47 visited = [False for _ in graph.vertices]48 def _bfs(start):49 visited[start] = True50 q = Queue()51 q.put(start)52 while not q.empty():53 v = q.get()54 visualizer.set_description('Переходим в вершину {}'.format(v))55 visualizer.set_vertex_border_color(v, colors.BLUE)56 visualizer.next_step()57 for edge in graph.ribs:58 u = graph.get_second_directed_vertex(edge, v)59 if u is not None:60 visualizer.set_description(61 'Рассматриваем ребро ({}, {})'.format(v, u)62 )63 visualizer.set_edge_color(edge.first_vertex.index, edge.second_vertex.index, colors.RED)64 visualizer.next_step()65 if not visited[u]:66 visualizer.set_description(67 'Вершина {} не посещалась ранее.\n Добавляем вершину в очередь'.format(u)68 )69 visited[u] = True70 q.put(u)71 visualizer.set_edge_color(edge.first_vertex.index, edge.second_vertex.index, colors.GREEN_NEON)72 visualizer.set_vertex_border_color(u, colors.GREY)73 visualizer.next_step()74 else:75 visualizer.set_description('Вершина {} была помечена ранее'.format(u))76 visualizer.set_edge_color(edge.first_vertex.index, edge.second_vertex.index, colors.GREEN_NEON)77 visualizer.next_step()78 visualizer.set_vertex_border_color(v, colors.RED)79 visualizer.set_description('Обход из вершины {} закончился, помечаем вершину как пройденную.'.format(v))80 visualizer.next_step()81 _bfs(start_vertex)82 visualizer.set_description('Обход завершен.')83 visualizer.next_step()84 visualizer.show()85def components(visualizer):86 graph = visualizer.model87 visited = [False for _ in graph.vertices]88 def _bfs(start, vertex_color, edge_color):89 visited[start] = True90 q = Queue()91 q.put(start)92 while not q.empty():93 v = q.get()94 visualizer.set_description('Переходим в вершину {}.'.format(v))95 visualizer.set_vertex_border_color(v, colors.BLUE)96 visualizer.next_step()97 for edge in graph.ribs:98 u = graph.get_second_directed_vertex(edge, v)99 if u is not None:100 visualizer.set_description(101 'Рассматриваем ребро ({}, {}).'.format(v, u)102 )103 visualizer.set_edge_color(edge.first_vertex.index, edge.second_vertex.index, colors.RED)104 visualizer.next_step()105 if not visited[u]:106 visualizer.set_description(107 'Вершина {} не посещалась ранее.\n'108 'Добавляем вершину в очередь'.format(u)109 )110 visited[u] = True111 q.put(u)112 visualizer.set_edge_color(edge.first_vertex.index, edge.second_vertex.index, edge_color)113 visualizer.set_vertex_border_color(u, colors.GREY)114 visualizer.next_step()115 else:116 visualizer.set_description('Вершина {} была помечена ранее'.format(u))117 visualizer.set_edge_color(edge.first_vertex.index, edge.second_vertex.index, edge_color)118 visualizer.next_step()119 visualizer.set_vertex_border_color(v, vertex_color)120 visualizer.set_description('Обход из вершины {} закончился, помечаем вершину как пройденную.'.format(v))121 visualizer.next_step()122 comp = 0123 for i in range(len(visited)):124 visualizer.set_description('Проверяем вершину {}'.format(i))125 visualizer.set_vertex_area_color(i, colors.GREEN_LIGHT)126 visualizer.next_step()127 if not visited[i]:128 visualizer.set_vertex_area_color(i, colors.WHITE)129 visualizer.set_description(130 'Переходим к компоненте, содержащей вершину {}.\n'131 'Для поиска всех вершин компоненты применим bfs.'.format(i)132 )133 visualizer.next_step()134 col = random.choices(colors.COLORS_LIST, k=2)135 _bfs(i, col[0], col[1])136 visualizer.set_description('Компонента, содержащая вершину {} найдена'.format(i))137 visualizer.next_step()138 comp += 1139 else:140 visualizer.set_description('Компонента связности, содержащая вершину {} была найдена ранее'.format(i))141 visualizer.set_vertex_area_color(i, colors.WHITE)142 visualizer.next_step()143 visualizer.set_description('Все компоненты найдены.')144 visualizer.next_step()145 visualizer.show()146def dijkstra(visualizer, start_vertex, finish_vertex=None):147 heap = []148 graph = visualizer.model149 for vertex in graph.vertices:150 if vertex.index != start_vertex:151 vertex.data['dist'] = MAX_DIST152 vertex.set_label('{}\n{}; -1'.format(vertex.index, 'inf'))153 else:154 vertex.data['dist'] = 0155 vertex.data['parent'] = -1156 vertex.set_label('{}\n{}; -1'.format(vertex.index, '0'))157 heapq.heappush(heap, (graph.vertices[start_vertex].data['dist'], start_vertex))158 visualizer.set_description(159 'Инициируем граф.\n'160 'Добавляем всем вершинам кроме стартовой расстояние inf.\n'161 'Добавляем стартовую вершину в кучу.'162 )163 visualizer.next_step()164 while heap:165 dist, v = heapq.heappop(heap)166 if graph.vertices[v].data['dist'] != dist:167 continue168 visualizer.set_description('Переходим в вершину {}.'.format(v))169 visualizer.set_vertex_border_color(v, colors.BLUE)170 visualizer.next_step()171 for edge in graph.ribs:172 u = graph.get_second_directed_vertex(edge, v)173 weight = edge.weight or 1174 if u is not None:175 visualizer.set_description(176 'Рассматриваем ребро ({}, {})'.format(v, u)177 )178 visualizer.set_edge_color(edge.first_vertex.index, edge.second_vertex.index, colors.RED)179 visualizer.next_step()180 d = graph.vertices[u].data['dist']181 if dist + weight < d:182 visualizer.set_description(183 'Найден более оптимальный путь в вершину {}.\n'184 'Устанавливаем расстояние до вершины {}'.format(u, dist + weight)185 )186 visualizer.set_vertex_label(u, '{}\n{}'.format(u, dist + weight))187 if finish_vertex:188 ver = graph.vertices[u]189 visualizer.set_vertex_label(u, '{}; {}'.format(ver.label, v))190 graph.vertices[u].data['dist'] = dist + weight191 graph.vertices[u].data['parent'] = v192 heapq.heappush(heap, (dist + weight, u))193 else:194 visualizer.set_description('Ранее был найден более оптимальный путь в вершину {}'.format(u))195 visualizer.set_edge_color(edge.first_vertex.index, edge.second_vertex.index, colors.DEFAULT)196 visualizer.next_step()197 visualizer.set_vertex_border_color(v, colors.RED)198 visualizer.set_description('Обход из вершины {} окончен.'.format(v))199 visualizer.set_description('Все кратчайшие расстояния найдены')200 visualizer.next_step()201 if finish_vertex:202 v = graph.vertices[finish_vertex]203 if not v.data.get('parent'):204 visualizer.set_description(u'Пути из вершины {} в вершину {} не существует'.format(start_vertex, finish_vertex))205 else:206 description = 'Длина кратчайшего маршрута из вершины {} в вершину {} составляет {}.\n'.format(207 start_vertex, finish_vertex, v.data['dist']208 )209 description += 'Путь: '210 ride = [str(v.index)]211 visualizer.set_vertex_border_color(v.index, colors.ORANGE)212 while v.data['parent'] != -1:213 visualizer.set_edge_color(v.data['parent'], v.index, colors.ORANGE)214 v = graph.vertices[v.data['parent']]215 ride.append(str(v.index))216 visualizer.set_vertex_border_color(v.index, colors.ORANGE)217 description += ' -> '.join(reversed(ride))218 description += '.'219 visualizer.set_description(description)220 visualizer.next_step()221 visualizer.show()222def kruskal(visualizer):223 graph = visualizer.model224 p = [i for i in range(len(graph.vertices))]225 def find_parent(v):226 if p[v] != v:227 p[v] = find_parent(p[v])228 return p[v]229 def unite(v, u):230 v = find_parent(v)231 u = find_parent(u)232 if random.randint(0, 1):233 v, u = u, v234 p[u] = v235 sorted_ribs = sorted([[edge.weight or 1, edge.first_vertex.index, edge.second_vertex.index] for edge in graph.ribs])236 for edge in graph.ribs:237 visualizer.set_edge_color(edge.first_vertex.index, edge.second_vertex.index, colors.GREY_LIGHT)238 visualizer.set_description(239 'Инициируем граф.\n'240 'Добавим каждую вершину в свое множество.'241 )242 visualizer.next_step()243 weight = 0244 for edge in sorted_ribs:245 e = graph.find_rib(edge[1], edge[2])246 v, u = edge[1], edge[2]247 visualizer.set_description('Рассмотрим ребро ({}, {})'.format(edge[1], edge[2]))248 visualizer.set_edge_color(edge[1], edge[2], colors.RED)249 visualizer.next_step()250 if find_parent(v) != find_parent(u):251 visualizer.set_description(252 'Вершины {} и {} находятся в разных множествах.\n'253 'Добавим ребро ({}, {}) в итоговый остов.'.format(edge[1], edge[2], edge[1], edge[2])254 )255 visualizer.set_edge_color(v, u, colors.DEFAULT)256 unite(v, u)257 weight += edge[0]258 else:259 visualizer.set_description(260 'Вершины {} и {} уже находятся в одном множестве.'.format(edge[1], edge[2])261 )262 visualizer.set_edge_color(v, u, colors.GREY_LIGHT)263 visualizer.next_step()264 visualizer.set_description(265 'Алгоритм завершился.'266 'Вес минимального остовного дерева {}.'.format(weight)267 )268 visualizer.next_step()269 visualizer.show()270def prim(visualizer):271 graph = visualizer.model272 n = len(graph.vertices)273 visited = [False for _ in range(n)]274 min_len = [MAX_DIST for _ in range(n)]275 parent = [-1 for _ in range(n)]276 min_len[0] = 0277 answer = 0278 for edge in graph.ribs:279 visualizer.set_edge_color(edge.first_vertex.index, edge.second_vertex.index, colors.GREY_LIGHT)280 for vertex in graph.vertices:281 visualizer.set_vertex_border_color(vertex.index, colors.GREY_LIGHT)282 if vertex.index != 0:283 vertex.set_label('{}\n{}; {}'.format(vertex.index, 'inf', -1))284 else:285 vertex.set_label('0\n0; -1')286 visualizer.set_description('Начнем визуализацию алгоритма Прима')287 visualizer.next_step()288 for _ in range(n):289 v = -1290 visualizer.set_description('Найдем непомеченную вершину с определенной минимальной длиной')291 visualizer.next_step()292 for i in range(n):293 visualizer.set_description('Рассмотрим вершину {}'.format(i))294 visualizer.set_vertex_border_color(i, colors.RED)295 visualizer.next_step()296 if not visited[i]:297 if (v == -1 or min_len[i] < min_len[v]):298 if v == -1:299 visualizer.set_description('На этой итерации раньше не выбиралась вершина для добавления, '300 'выберем вершину {}'.format(i))301 else:302 visualizer.set_description('Вершина {} оптимальнее вершины {}, пометим её'.format(v, i))303 visualizer.set_vertex_border_color(v, colors.GREY_LIGHT)304 visualizer.set_vertex_border_color(i, colors.GREEN)305 v = i306 elif min_len[i] == MAX_DIST:307 visualizer.set_description('Вершина {} не связана с вершинами, помеченными ранее'.format(i))308 visualizer.set_vertex_border_color(i, colors.GREY_LIGHT)309 else:310 visualizer.set_description('Увы, вершина {} не оптимальна на этой итерации'.format(i))311 visualizer.set_vertex_border_color(i, colors.GREY_LIGHT)312 else:313 visualizer.set_description('Вершина {} уже помечена'.format(i))314 visualizer.set_vertex_border_color(i, colors.DEFAULT)315 visualizer.next_step()316 visited[v] = True317 answer += min_len[v]318 text = 'Добавим вершину {} в итоговое минимальное остовное дерево'.format(v)319 visualizer.set_vertex_border_color(v, colors.DEFAULT)320 if parent[v] != -1:321 text += '\nДобавим ребро ({}, {}) в итоговое минимальное остовное дерево'.format(v, parent[v])322 visualizer.set_edge_color(parent[v], v, colors.DEFAULT)323 visualizer.set_description(text)324 visualizer.next_step()325 visualizer.set_description('Обновим минимальные длины и родителей для непосещенных вершин')326 visualizer.next_step()327 for u in range(n):328 edge = graph.find_rib(v, u)329 if edge:330 visualizer.set_description('Рассмотрим ребро ({}, {})'.format(v, u))331 visualizer.next_step()332 if visited[u]:333 visualizer.set_description('Вершина {} уже помечена'.format(u))334 visualizer.next_step()335 elif (edge.weight or 1) < min_len[u]:336 visualizer.set_description('Оптимизируем минимальное расстояние для вершины {}'.format(u))337 vertex = graph.vertices[u]338 min_len[u] = edge.weight or 1339 parent[u] = v340 vertex.set_label('{}\n{}; {}'.format(u, min_len[u], parent[u]))341 visualizer.next_step()342 else:343 visualizer.set_description('Вершина уже имеет более оптимального предка')344 visualizer.next_step()345 visualizer.set_description(346 'Алгоритм завершился.'347 'Вес минимального остовного дерева {}.'.format(answer)348 )349 visualizer.next_step()350 visualizer.show()351def dinic(visualizer, s, t):352 graph = visualizer.model353 new_ribs = []354 def add_edge(edge):355 edge.first_vertex.data['ribs'].append(len(new_ribs))356 new_ribs.append(Edge(edge.first_vertex, edge.second_vertex, is_directed=True, max_flow=edge.max_flow))357 edge.second_vertex.data['ribs'].append(len(new_ribs))358 new_ribs.append(Edge(edge.second_vertex, edge.first_vertex, is_directed=True, max_flow=0))359 visualizer.set_description('Начнем алгоритм Диница')360 visualizer.next_step()361 visualizer.set_description('Построим остаточную сеть для графа')362 n = len(graph.ribs)363 for vertex in graph.vertices:364 vertex.data['ribs'] = []365 vertex.data['pointer'] = 0366 for i in range(n):367 add_edge(graph.ribs[i])368 graph.ribs = new_ribs369 visualizer.next_step()370 def _fetch_pointer():371 for vertex in graph.vertices:372 vertex.data['pointer'] = 0373 def _bfs(d):374 q = Queue()375 q.put(s)376 n = len(graph.vertices)377 d[s] = 0378 for vertex in graph.vertices:379 vertex.set_label('{}\n{}'.format(vertex.index, d[vertex.index]))380 visualizer.set_description('Установим расстояние 0 для стока, занесем сток в очередь')381 visualizer.next_step()382 while not q.empty():383 v = q.get()384 visualizer.set_description('Рассмотрим вершину {}'.format(v))385 visualizer.set_vertex_border_color(v, colors.RED)386 visualizer.next_step()387 for u in range(n):388 edge = graph.find_rib(v, u)389 if edge:390 visualizer.set_description('Рассмотрим ребро ({}, {})'.format(v, u))391 visualizer.set_edge_color(v, u, colors.RED)392 visualizer.next_step()393 if edge.current_flow == edge.max_flow:394 visualizer.set_description('Поток ребра ({}, {}) уже максимален'.format(v, u))395 visualizer.next_step()396 elif d[u] != -1:397 visualizer.set_description('Для вершины {} уже найдено кратчайшее расстояние'.format(u))398 visualizer.next_step()399 else:400 visualizer.set_description('Устанавливаем расстояние к вершине {}\nДобавляем её в очередь'.format(u))401 q.put(u)402 d[u] = d[v] + 1403 graph.vertices[u].set_label('{}\n{}'.format(u, d[u]))404 visualizer.set_vertex_border_color(u, colors.GREY)405 visualizer.next_step()406 visualizer.set_edge_color(v, u, colors.DEFAULT)407 visualizer.set_description('Обход для вершины {} закончен'.format(v))408 visualizer.set_vertex_border_color(v, colors.DEFAULT)409 visualizer.next_step()410 return d[t] != -1411 def _dfs(v, flow, d):412 visualizer.set_description('Переходим в вершину {}'.format(v))413 visualizer.set_vertex_border_color(v, colors.RED)414 visualizer.next_step()415 if not flow:416 visualizer.set_description('Увеличивающий поток из данной вершины не найден')417 visualizer.set_vertex_border_color(v, colors.DEFAULT)418 visualizer.next_step()419 return 0420 if v == t:421 visualizer.set_description('Найден увеличивающий поток величины {}'.format(flow))422 visualizer.set_vertex_border_color(v, colors.DEFAULT)423 visualizer.next_step()424 return flow425 vertex = graph.vertices[v]426 while vertex.data['pointer'] < len(vertex.data['ribs']):427 id = vertex.data['ribs'][vertex.data['pointer']]428 u = graph.ribs[id].second_vertex.index429 vertex.data['pointer'] += 1430 if d[u] != d[v] + 1:431 continue432 visualizer.set_description('Рассмотрим ребро ({}, {})'.format(v, u))433 visualizer.set_edge_color(v, u, colors.RED)434 visualizer.next_step()435 pushed = _dfs(u, min(flow, graph.ribs[id].max_flow - graph.ribs[id].current_flow), d)436 visualizer.set_edge_color(v, u, colors.DEFAULT)437 visualizer.set_description('Возвращаемся в вершину {}'.format(v))438 visualizer.next_step()439 if pushed:440 visualizer.set_description('Прибавим ребру ({v}, {u}) поток величины {flow}\n'441 'Соответственно, отнимем поток этой же величины у ребре ({u}, {v})'.format(v=v, u=u, flow=pushed)442 )443 visualizer.set_vertex_border_color(v, colors.DEFAULT)444 graph.ribs[id].current_flow += pushed445 graph.ribs[id ^ 1].current_flow -= pushed446 visualizer.next_step()447 return pushed448 visualizer.set_vertex_border_color(v, colors.DEFAULT)449 visualizer.set_description('Обход для вершины {} завершен, увеличивающий поток не найден'.format(v))450 visualizer.next_step()451 def _dinic():452 flow = 0453 d = [-1 for _ in range(len(graph.vertices))]454 visualizer.set_description('Построим слоистую сеть для остаточной сети')455 visualizer.next_step()456 while _bfs(d):457 visualizer.set_description('Слоистая сеть найдена, перейдем к поиску блокирующего потока')458 for edge in graph.ribs:459 if d[edge.second_vertex.index] != d[edge.first_vertex.index] + 1:460 visualizer.set_edge_color(edge.first_vertex.index, edge.second_vertex.index, colors.GREY)461 visualizer.next_step()462 _fetch_pointer()463 pushed = 1464 while pushed:465 pushed = _dfs(s, MAX_DIST, d)466 if pushed:467 flow += pushed468 visualizer.set_description('Итерация завершена, текущий поток {}'.format(flow))469 for edge in graph.ribs:470 visualizer.set_edge_color(edge.first_vertex.index, edge.second_vertex.index, colors.DEFAULT)471 visualizer.next_step()472 d = [-1 for _ in range(len(graph.vertices))]473 visualizer.set_description('Для данной сети не существует слоистой сети')474 visualizer.next_step()475 return flow476 flow = _dinic()477 new_ribs = []478 for i in range(0, len(graph.ribs), 2):479 new_ribs.append(graph.ribs[i])480 graph.ribs = new_ribs481 for edge in graph.ribs:482 if edge.current_flow > 0:483 edge.set_color(colors.BLUE)484 edge.first_vertex.set_color(colors.BLUE)485 edge.second_vertex.set_color(colors.BLUE)486 else:487 edge.set_color(colors.DEFAULT)488 visualizer.set_description('Алгоритм завершен. Величина максимального потока - {}'.format(flow))489 visualizer.next_step()490 visualizer.show()491def min_cost_max_flow(visualizer, s, t, k=None):492 graph = visualizer.model493 new_ribs = []494 def add_edge(edge):495 edge.first_vertex.data['ribs'].append(len(new_ribs))496 ind = len(new_ribs)497 new_ribs.append(Edge(498 edge.first_vertex, edge.second_vertex, weight=edge.weight, is_directed=True, max_flow=edge.max_flow499 ))500 new_ribs[-1].data['index'] = ind + 1501 edge.second_vertex.data['ribs'].append(len(new_ribs))502 new_ribs.append(Edge(503 edge.second_vertex, edge.first_vertex, weight=-edge.weight, is_directed=True, max_flow=0504 ))505 new_ribs[-1].data['index'] = ind506 if k:507 text = 'Начнем поиск потока величины {} минимальной стоимости'.format(k)508 else:509 text = 'Начнем поиск максимального потока минимальной стоимости'510 visualizer.set_description(text)511 visualizer.next_step()512 visualizer.set_description('Построим граф с обратными ребрами')513 n = len(graph.ribs)514 for vertex in graph.vertices:515 vertex.data['ribs'] = []516 vertex.data['pointer'] = 0517 for i in range(n):518 add_edge(graph.ribs[i])519 graph.ribs = new_ribs520 visualizer.next_step()521 def _min_cost_max_flow():522 flow = 0523 cost = 0524 while True:525 visualizer.set_description('Построим остаточную сеть')526 for edge in graph.ribs:527 if edge.current_flow == edge.max_flow:528 visualizer.set_edge_color(edge.first_vertex.index, edge.second_vertex.index, colors.GREY)529 else:530 visualizer.set_edge_color(edge.first_vertex.index, edge.second_vertex.index, colors.DEFAULT)531 visualizer.next_step()532 dist = [MAX_DIST for _ in range(len(graph.vertices))]533 dist[s] = 0534 heap = []535 heapq.heappush(heap, (dist[s], s))536 parent = [-1 for _ in range(len(graph.vertices))]537 visualizer.set_description('Найдем кратчайшее расстояния из стока в исток')538 visualizer.next_step()539 while heap:540 d, v = heapq.heappop(heap)541 if d != dist[v]:542 continue543 visualizer.set_description('Рассмотрим вершину {}'.format(v))544 visualizer.set_vertex_border_color(v, colors.RED)545 visualizer.next_step()546 for edge in graph.ribs:547 if edge.first_vertex.index == v:548 u = edge.second_vertex.index549 if edge.current_flow < edge.max_flow:550 visualizer.set_description('Рассмотрим ребро ({}, {})'.format(v, u))551 visualizer.set_edge_color(v, u, colors.RED)552 visualizer.next_step()553 if dist[v] + edge.weight < dist[u]:554 visualizer.set_description(555 'Обновляем кратчайшее расстояние, а так же родителя для вершины {}'.format(u)556 )557 visualizer.set_vertex_border_color(u, colors.TURQUOISE)558 dist[u] = dist[v] + edge.weight559 parent[u] = v560 ver = graph.vertices[u]561 ver.set_label('{}\n{}; {}'.format(ver.index, dist[u], parent[u]))562 heapq.heappush(heap, (dist[u], u))563 visualizer.next_step()564 else:565 visualizer.set_description('Для вершины {} уже найдено более оптимальное расстояние'.format(u))566 visualizer.next_step()567 visualizer.set_edge_color(v, u, colors.DEFAULT)568 visualizer.set_description('Обход из вершины {} завершен'.format(v))569 visualizer.set_vertex_border_color(v, colors.DEFAULT)570 visualizer.next_step()571 if parent[t] == -1:572 visualizer.set_description('Путь из истока в сток не найден')573 visualizer.next_step()574 return flow, cost575 addflow = k - flow if k else MAX_DIST576 cur_v = t577 while cur_v != s:578 visualizer.set_vertex_border_color(cur_v, colors.BLUE)579 visualizer.set_edge_color(parent[cur_v], cur_v, colors.BLUE)580 edge = graph.find_rib(parent[cur_v], cur_v)581 addflow = min(addflow, edge.max_flow - edge.current_flow)582 cur_v = parent[cur_v]583 visualizer.set_vertex_border_color(cur_v, colors.BLUE)584 visualizer.set_description('Найден путь из истока в сток, прибавим поток величины {} для его ребер'.format(addflow))585 visualizer.next_step()586 cur_v = t587 while cur_v != s:588 edge = graph.find_rib(parent[cur_v], cur_v)589 edge.current_flow += addflow590 graph.ribs[edge.data['index']].current_flow -= addflow591 cost += addflow * edge.weight592 cur_v = parent[cur_v]593 flow += addflow594 cur_v = t595 while cur_v != s:596 visualizer.set_vertex_border_color(cur_v, colors.DEFAULT)597 visualizer.set_edge_color(parent[cur_v], cur_v, colors.DEFAULT)598 cur_v = parent[cur_v]599 visualizer.set_vertex_border_color(cur_v, colors.DEFAULT)600 if k and flow == k:601 visualizer.set_description('Поток величины {} найден'.format(k))602 visualizer.next_step()603 return flow, cost604 visualizer.set_description('Итерация завершена, текущий поток - {}, стоимость - {}'.format(flow, cost))605 visualizer.next_step()606 flow, cost = _min_cost_max_flow()607 new_ribs = []608 for i in range(0, len(graph.ribs), 2):609 new_ribs.append(graph.ribs[i])610 graph.ribs = new_ribs611 for edge in graph.ribs:612 if edge.current_flow > 0:613 edge.set_color(colors.BLUE)614 edge.first_vertex.set_color(colors.BLUE)615 edge.second_vertex.set_color(colors.BLUE)616 else:617 edge.set_color(colors.DEFAULT)618 for vertex in graph.vertices:619 vertex.set_label(vertex.index)620 visualizer.set_description('Алгоритм завершен. Найден поток величины {} стоимости {}'.format(flow, cost))621 visualizer.next_step()622 visualizer.show()623ALGORITHMS = {624 'dfs': dfs,625 'bfs': bfs,626 'components': components,627 'dijkstra': dijkstra,628 'kruskal': kruskal,629 'prim': prim,630 'dinic': dinic,631 'min_cost_max_flow': min_cost_max_flow...

Full Screen

Full Screen

main.py

Source:main.py Github

copy

Full Screen

2from Items import Item3from time import sleep4# Kitchen5kitchen = Room("kitchen")6kitchen.set_description("""7The Kitchen8-----------------------------9A small bright room, there is a cooker beside the door, 10and a sink under one window, opposite the door a second window overlooks the garden.11Everything is bright and light, the linoleum is yellow, the cupboards are cream,12the trims are blue""")13# Things in the Kitchen14# White Goods, sort of15kettle = Item("kettle")16kettle.set_description("A cream coloured electric kettle, useful for boiling water")17cooker = Item("cooker")18cooker.set_description("A white gas cooker with 4 rings on the hob and a grill at the top. Good for cooking on.")19# Cutlery, plates etc20mug = Item("mug")21mug.set_description("A mug for drinking out of, it commemorates the death of Princess Diana")22plate = Item("plate")23plate.set_description("A white ceramic plate with a blue rim, slightly chipped")24knife = Item("Knife")25knife.set_description("A table knife, good for spreading, less good for stabbing")26fork = Item("fork")27fork.set_description("An ordinary fork, for eating with, or in a pinch for whisking")28tea_spoon = Item("tea spoon")29tea_spoon.set_description("A spoon for small jobs, like fishing tea bags out of a mug")30spoon = Item("spoon")31spoon.set_description("A regular desert spoon, the sort you might eat cereal with.")32# Pen and Paper33newspaper = Item("newspaper")34newspaper.set_description("""35A newspaper, headlines on the front, sports on the back, mostly news in the middle,36the crossword is near the end""")37biro = Item("biro")38biro.set_description("A useful pen for making notes, or doing the crossword with. Mightier than a sword?")39# Fridge and Contents40fridge = Item("fridge")41fridge.set_description("""42A cold storage for the kind of things you keep in a kitchen. Milk, some orange juice, some cheese, 43half a jar of strawberry jam of unknown origin, some mustard that might possible predate decimal currency.""")44milk = Item("milk")45milk.set_description("A bottle of milk, half full. Or half empty, depending on how you think")46jam = Item("jam")47jam.set_description("Half a jar of strawberry jam, provenance unknown")48mustard = Item("mustard")49mustard.set_description("""50The remains of some very old mustard, a very lurid shade of yellow. 51Smells firey, like it might take your nose hairs""")52cheese = Item("cheese")53cheese.set_description("Some regular yellow cheese, a small bit. The kind mice are supposed to like. A good snack.")54# Furniture55kitchen_table = Item("kitchen table")56kitchen_table.set_description("A small wooden table with painted white legs and top")57kitchen_chair = Item("kitchen chair")58kitchen_chair.set_description(" A painted white chair with a yellow seat cushion. One of a pair.")59kitchen_window = Item("kitchen window")60kitchen_window.set_description("A window, you can see the garden out of it.")61# Bedroom62bedroom = Room("bedroom")63bedroom.set_description("""64The Bedroom 65----------------------------66The walls are blue, there is a table with a lamp on it on either side of67the bed on the east wall. On one side, there is a small stack of books and an alarm clock. 68The furniture is pine, the curtains are darker blue and match the carpet.69There is a pine chest of drawers against the west wall.70""")71# Things in the Bedroom72# Furniture73bed = Item("bed")74bed.set_description("An orange pine frame double bed, the coverlet and pillows are blue")75side_table_books = Item("side table with books on")76side_table_books.set_description("A side table with a small stack of books on")77side_table_empty = Item("side table without books on")78side_table_empty.set_description("A side table with nothing on it, no one uses this side of the bed regularly")79chest_of_drawers = Item("chest of drawers")80chest_of_drawers.set_description("A chest of five drawers, orange pine. For storing clothes in. A hairbrush is on top.")81curtains = Item("curtains")82curtains.set_description("Dark blue curtains to keep the daylight out")83bedroom_window = Item("bedroom window")84bedroom_window.set_description("A window, you can see the garden out of it.")85# Small Objects86alarm_clock = Item("alarm clock")87alarm_clock.set_description("""88A small battery powered alarmclock, silver, with what looks like glow in the dark paint on the hands.""")89table_lamp = Item("lamp")90table_lamp.set_description("A side lamp for reading by in bed")91top_book = Item("top book")92top_book.set_description("The top book in the stack, its not written in a recognisable language")93second_book = Item("second book")94second_book.set_description("""95A copy of Charles Dickens Great Expectations, there's a bookmark two thirds of the way through""")96bottom_book = Item("bottom_book")97bottom_book.set_description("A copy of War and Peace, but it doesn't look like it's ever been opened.")98hairbrush = Item("hairbrush")99hairbrush.set_description("A black plastic hairbrush with white spikes. For brushing hair.")100# Clothes101pyjamas = Item("pyjamas")102pyjamas.set_description("Pyjamas, for sleeping in.")103underwear = Item("underwear")104underwear.set_description("""105It's what you wear under your clothes. You could go without it, but that sort of thing tends to be frowned upon.""")106shirt = Item("shirt")107shirt.set_description("A clean shirt to wear, it's pale blue, that's nice")108trousers = Item("trousers")109trousers.set_description("Clean trousers to wear, they're dark green")110jumper = Item("jumper")111jumper.set_description("A nice navy blue jumper that someone knitted, it smells very faintly of lemons.")112# Hall113hall = Room("hall")114hall.set_description("""115The Hall116------------------------------117There is not much natural light in here. Some comes through the glass panels118in the front door. There is a coat stand on the east wall, there is a key hook 119on the west wall. At the southern end you can see the kitchen. A door on the east wall leads to the bedroom,120a door on the west wall leads to the bathroom.121""")122# Things in the Hall123coat_stand_dict = {"look": """124A wooden stand for hanging coats on, maybe hats and scarves too. You can put umbrellas in the base125""", "use" : " You hang your jacket on the coat stand"}126coat_stand = Item("coat stand", coat_stand_dict)127# coat_stand.set_description({"look": """128# A wooden stand for hanging coats on, maybe hats and scarves too. You can put umbrellas in the base129# """, "use" : " You hang your jacket on the coat stand"})130key_hook = Item("key hook")131key_hook.set_description("Hooks for hanging keys on, there's a spare set here for the front door.")132door_mat = Item("door mat")133door_mat.set_description("A scratchy brown mat for getting the dirt off your shoes when you come in")134# Bathroom135bathroom = Room("bathroom")136bathroom.set_description("""137The Bathroom138--------------------------139This room is white. There is a toilet and a sink and a bathtub with a shower. 140The shower curtain is also white, and is slightly mouldy at the base. The glass 141in the window is frosted. There is a mirrored cabinet above the sink. There is142a towel on the radiator.143""")144# Things in the Bathroom145# Fixtures and Fittings146bathtub = Item("bathtub")147bathtub.set_description("A regular white ceramic bathtub, the sort with silver handles in the sides to help you stand")148shower_curtain = Item("shower curtain")149shower_curtain.set_description("A white shower curtain to keep the water inside the tub, slightly mouldy.")150sink = Item("sink")151sink.set_description("A white ceramic sink for washing your hands and brushing your teeth, that sort of thing.")152toilet = Item("toilet")153toilet.set_description("A toilet, white with a plastic seat. Could probably use a scrub.")154mirrored_cabinet = Item("mirrored cabinet")155mirrored_cabinet.set_description("A mirrored cabinet for storing things in, look into it and see your reflection")156bathroom_window = Item("bathroom window")157bathroom_window.set_description("A frosted window, you can't see out of it.")158# In the Cabinet159tooth_mug = Item("tooth mug")160tooth_mug.set_description("""161A slightly chipped tooth mug, white ceramic with a blue rim, looks like it matches the kitchen plate""")162toothbrush = Item("toothbrush")163toothbrush.set_description("A nice green toothbrush, to brush yur teeth with")164toothpaste = Item("toothpaste")165toothpaste.set_description("Mint flavoured toothpaste, the kind with coloured stripes in")166floss = Item("floss")167floss.set_description("A tub of floss, for flossing your teeth")168hair_gel = Item("hair gel")169hair_gel.set_description("A tub of hair gel, slightly sticky, for styling")170deodorant = Item("deodorant")171deodorant.set_description("A stick of roll on deodorant, for making yourself smell less")172# Garden173garden = Room("garden")174garden.set_description("""175The Garden176-----------------------177A smallish, squarish sort of a garden on the southern side of the house but only accessible from the front. 178There is a tree at the end,179the lawn looks to be in need of mowing. There are beds of flowers up both sides which buzz lazily180with bees and other insects. There is a small set of bistro furniture just beside the house.181On the wall behind the tree, a cat snoozes in the sun.182""")183# Garden Items184# Furniture etc185garden_table = Item("garden table")186garden_table.set_description("A metal table in the garden, dark grey, slightly rusty in places, warm from the sun.")187garden_chair = Item("garden chair")188garden_chair.set_description("A metal chair in the garden, one of two, matches the table.")189cat = Item("cat")190cat.set_description("A small black cat, snoozing")191# Plants192tree = Item("tree")193tree.set_description("""194A deciduous tree with lots of bright green foliage, tall and somewhat wizened, 195it appears to be a fruit tree, maybe an apple tree?""")196left_flowers = Item("left hand flower bed")197left_flowers.set_description("""198The left hand flowerbed, a vibrant range of flowers, buzzing with life. Primulas and pansies, some tulips,199there a peach coloured rose brush right at the end""")200right_flowers = Item("right hand flower bed")201right_flowers.set_description("""202The right hand flowerbed, a vibrant range of flowers, buzzing with life. Marigolds and nasturtiums, irises, anemones,203a lobelia explodes onto the grass.""")204# Linking Rooms205hall.link_room(garden, "north")206hall.link_room(kitchen, "south")207hall.link_room(bathroom, "west")208hall.link_room(bedroom, "east")209kitchen.link_room(hall, "north")210bedroom.link_room(hall, "west")211bathroom.link_room(hall, "east")212garden.link_room(hall, "south")213# Linking Items to Rooms214# Kitchen Links215kitchen_table.link_item(kitchen, "use")...

Full Screen

Full Screen

myVirus.py

Source:myVirus.py Github

copy

Full Screen

...8 command = ['ping', '-c', '1', host]9 return subprocess.call(command) == 010def progressBar():11 pb = tqdm(total = 100)12 pb.set_description(' Initializing virus......')13 time.sleep(2)14 pb.update(10)15 pb.set_description(' Accessing NSA servers...')16 time.sleep(1)17 pb.update(10)18 pb.set_description(' Accessing NSA servers...')19 time.sleep(1)20 pb.update(10)21 pb.set_description(' Access Granted. ')22 time.sleep(3)23 pb.update(10)24 pb.set_description(' Uploading Virus.......')25 time.sleep(1)26 pb.update(10)27 pb.set_description(' Uploading Virus.......')28 time.sleep(1)29 pb.update(10)30 pb.set_description(' Uploading Virus.......')31 time.sleep(1)32 pb.update(10)33 pb.set_description(' Uploading Virus.......')34 time.sleep(1)35 pb.update(10)36 pb.set_description(' Uploading Virus......')37 time.sleep(1)38 pb.update(10)39 pb.set_description(' Uploading Virus......')40 time.sleep(1)41 pb.update(10)42 pb.set_description(' Virus Uploaded!')43 pb.close()44def progressBar2():45 pb = tqdm(total = 5) 46 pb.set_description(' 5...')47 time.sleep(2)48 pb.update(1)49 pb.set_description(' 4...')50 time.sleep(2)51 pb.update(1)52 pb.set_description(' 3...')53 time.sleep(2)54 pb.update(1)55 pb.set_description(' 2...')56 time.sleep(2)57 pb.update(1)58 pb.set_description(' 1...')59 time.sleep(2)60 pb.update(1)...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Slash automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful