Я пытаюсь создать функцию, в которой список из диапазона от 1 до X помещается в список, состоящий из пар 2, затем перетасовываю пары X-1 раз, так что X-1 раз список пары i, j в 1, .., X, где i, j никогда не совпадают.
Пара является игроками в игре с дилеммой Заключенных с идеальным незнакомцем Поэтому я хочу, чтобы каждый игрок играл в X-1
игры, то есть играл один раз против всех остальных игроков.
Игроки хранятся в виде [1,2,3,...X]
в списке. И пары хранятся в списке списков [[1,2],[2,3],...]
.
Пока мне удалось создать первый раунд, и теперь я хочу изменить список игроков, чтобы в следующем раунде были разные пары. И я хочу сделать это X-1 раз, но (как я уже сказал), что не должно быть повторяющихся пар.
players = list(range(1, int(input()+1)))
rounds = list(range(1, len(players)))
for round in rounds:
pairs = []
for idx, i in enumerate(players):
a = players[idx]
b = players[idx-1]
if b > len(players):
continue
else:
pairs.append([b,a])
for idx, x in enumerate(pairs):
c = pairs[idx]
d = pairs[idx-1]
if c[0] == d[1]:
pairs.remove(c)
print(pairs)
Так что теперь мне нужно что-то изменить, чтобы затем перебрать цикл for с количеством раундов ...
Я попробовал это в цикле:
players.append(players[1])
players.remove(players[1])
мой вывод в настоящее время выглядит так:
8
[[1, 2], [3, 4], [5, 6], [7, 8]]
[[1, 3], [4, 5], [6, 7], [8, 2]]
[[1, 4], [5, 6], [7, 8], [2, 3]]
[[1, 5], [6, 7], [8, 2], [3, 4]]
[[1, 6], [7, 8], [2, 3], [4, 5]]
[[1, 7], [8, 2], [3, 4], [5, 6]]
[[1, 8], [2, 3], [4, 5], [6, 7]]
Любые идеи высоко ценятся и заранее спасибо ..