Advertisement
GreenMap

Лабораторная работа 3 МАПКС граф

Oct 12th, 2020
1,655
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.00 KB | None | 0 0
  1. def rotate_matric(matric, m_size):
  2.     new_matric = []
  3.     for i in range(0, m_size):
  4.         l = []
  5.         for j in range(0, m_size):
  6.             l.append(matric[j][i])
  7.         new_matric.append(l)
  8.     return new_matric
  9. def opposite_finder(edge_1, edge_2, num):
  10.     if edge_1[num] == edge_2[num]:
  11.         return True
  12.     for i in range(0, len(edge_1)):
  13.         if edge_1[i] == edge_2[num] and edge_2[i] == edge_1[num]:
  14.             edge_1.pop(i)
  15.             edge_2.pop(i)
  16.             return True
  17.     return False
  18. def string_builder(edge_1, edge_2, is_opposite, m_size):
  19.     result = []
  20.     for i in range(0, m_size):
  21.         result.append(0)
  22.     result[edge_1] = 1
  23.     if is_opposite:
  24.         result[edge_2] = 1
  25.     else:
  26.         result[edge_2] = -1
  27.     return result
  28. def matric_printer(matric, size):
  29.     keys = list(matric.keys())
  30.     first_string = "\t"
  31.     for key in keys:
  32.         first_string += key + "\t"
  33.     print(first_string)
  34.     for n_string in range(0, size):
  35.         string = str(n_string + 1) + "\t"
  36.         for key in keys:
  37.             string += str(matric[key][n_string]) + "\t"
  38.         print(string)
  39. m_size = int(input("Размер матрицы: "))
  40. matric = []
  41. for i in range(0, m_size):
  42.     converted_string = []
  43.     for num in input("Введите " + str(i + 1) + " срочку матрицы: ").split(" "):
  44.         converted_string.append(int(num))
  45.     matric.append(converted_string)
  46. matric = rotate_matric(matric, m_size)
  47. edges = [[], []]
  48. for i_string in range(0, m_size):
  49.     for i_val in range(0, m_size):
  50.         if matric[i_string][i_val] == 1:
  51.             edges[0].append(i_string)
  52.             edges[1].append(i_val)
  53. edges_strings = {}
  54. edge = 0
  55. while len(edges[0]) > edge:
  56.     opposite_finder_result = opposite_finder(edges[0], edges[1], edge)
  57.     edges_strings[str(edges[0][edge] + 1) + "-" + str(edges[1][edge] + 1)] = string_builder(edges[0][edge], edges[1][edge], opposite_finder_result, m_size)
  58.     edge+=1
  59.  
  60. matric_printer(edges_strings, m_size)
  61.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement