Advertisement
osipyonok

TPR lab2_2

Nov 17th, 2017
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.45 KB | None | 0 0
  1. rankings = [
  2.     [[1], [2, 3], [4], [5], [6, 7]],
  3.     [[1, 3], [4], [2], [5], [7], [6]],
  4.     [[1], [4], [2], [3], [6], [5], [7]],
  5.     [[1], [2, 4], [3], [5], [7], [6]],
  6.     [[2], [3], [4], [5], [1], [6], [7]],
  7.     [[1], [3], [2], [5], [6], [7], [4]],
  8.     [[1], [5], [3], [4], [2], [6], [7]]
  9. ]
  10.  
  11.  
  12. def get_pos(ranking, val):
  13.     for i in range(0, 7):
  14.         if val in ranking[i]:
  15.             return i
  16.  
  17.  
  18. def build_mat(ranking):
  19.     mat = [[0 for _ in range(7)] for _ in range(7)]
  20.     for i in range(0, 7):
  21.         for j in range(0, 7):
  22.             pos1 = get_pos(ranking, i + 1)
  23.             pos2 = get_pos(ranking, j + 1)
  24.             if pos1 <= pos2:
  25.                 mat[i][j] = 1
  26.     return mat
  27.  
  28.  
  29. mats = []
  30. for r in rankings:
  31.     mats.append(build_mat(r))
  32.  
  33.  
  34. dists = [[0 for _ in range(7)] for _ in range(7)]
  35.  
  36.  
  37. for i in range(0, 7):
  38.     for j in range(i + 1, 7):
  39.         mat1 = mats[i]
  40.         mat2 = mats[j]
  41.         cur = 0
  42.         for x in range(0, 7):
  43.             for y in range(0, 7):
  44.                 cur += abs(mat1[x][y] - mat2[x][y])
  45.         print('Вiдстань Кеменi мiж', i + 1, 'та', j + 1, '=', cur)
  46.         dists[i][j] = dists[j][i] = cur
  47.  
  48.  
  49. print('\nМедiана Кеменi')
  50. min_val = 1 << 64
  51. min_arg = -1
  52. for i in range(0, 7):
  53.     cur = 0
  54.     for j in range(0, 7):
  55.         cur += dists[i][j]
  56.     if min_val > cur:
  57.         min_val = cur
  58.         min_arg = i
  59. print('\t', min_arg + 1, rankings[min_arg])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement