Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- rankings = [
- [[1], [2, 3], [4], [5], [6, 7]],
- [[1, 3], [4], [2], [5], [7], [6]],
- [[1], [4], [2], [3], [6], [5], [7]],
- [[1], [2, 4], [3], [5], [7], [6]],
- [[2], [3], [4], [5], [1], [6], [7]],
- [[1], [3], [2], [5], [6], [7], [4]],
- [[1], [5], [3], [4], [2], [6], [7]]
- ]
- def get_pos(ranking, val):
- for i in range(0, 7):
- if val in ranking[i]:
- return i
- def build_mat(ranking):
- mat = [[0 for _ in range(7)] for _ in range(7)]
- for i in range(0, 7):
- for j in range(0, 7):
- pos1 = get_pos(ranking, i + 1)
- pos2 = get_pos(ranking, j + 1)
- if pos1 <= pos2:
- mat[i][j] = 1
- return mat
- mats = []
- for r in rankings:
- mats.append(build_mat(r))
- dists = [[0 for _ in range(7)] for _ in range(7)]
- for i in range(0, 7):
- for j in range(i + 1, 7):
- mat1 = mats[i]
- mat2 = mats[j]
- cur = 0
- for x in range(0, 7):
- for y in range(0, 7):
- cur += abs(mat1[x][y] - mat2[x][y])
- print('Вiдстань Кеменi мiж', i + 1, 'та', j + 1, '=', cur)
- dists[i][j] = dists[j][i] = cur
- print('\nМедiана Кеменi')
- min_val = 1 << 64
- min_arg = -1
- for i in range(0, 7):
- cur = 0
- for j in range(0, 7):
- cur += dists[i][j]
- if min_val > cur:
- min_val = cur
- min_arg = i
- print('\t', min_arg + 1, rankings[min_arg])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement