Как рассчитать количество совпадений в заданные дни

У нас 16 команд и 2 площадки. Обе 2 площадки доступны в течение 60 минут в понедельник и 120 минут во вторник. Это означает, что возможны 2 матча в понедельник и 4 матча во вторник. Если одна команда не может снова сыграть матч в тот же день, сколько матчей может быть возможно в понедельник и вторник соответственно.

Намекать:-

  1. Количество матчей для N команд = (N-1)+(N-2)+(N-3)+(N-4).....+(N-N) пример для 16 команд (16-1 )+(16-2)+(16-3)....+(16-16)= 120 совпадений

Как найти формулу для N команд и N площадок? Я спрашиваю об оптимальном решении, чтобы я мог найти минимальное количество дней для завершения всех матчей.


person Satanand Tiwari    schedule 04.03.2021    source источник
comment
Как это связано с программированием?   -  person MBo    schedule 04.03.2021
comment
Я должен написать алгоритм для этого. Мне нужно написать код для приложения приспособления для матча. Имеет ли это смысл? @MBo   -  person Satanand Tiwari    schedule 04.03.2021
comment
Вероятно, вам придется ввести некоторые ограничения. Существует множество решений. Скажем, 120 матчей во вторник и 0 в понедельник, или 60 и 60 и т. д.   -  person Yuri Ginsburg    schedule 04.03.2021
comment
@YuriGinsburg Вы правы. Я спрашиваю об оптимальном решении, чтобы я мог найти минимальное количество дней для завершения всех матчей. Я добавляю это к вопросу. Спасибо   -  person Satanand Tiwari    schedule 04.03.2021


Ответы (2)


from itertools import combinations 
  
# Get all combinations of 16 teams and length 2
# Formula for combination is Nc2 = ((N)*(N-1))/2)

total_no_match = combinations([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16], 2)
total_no_match = list(total_no_match)
total_no_match = [str(total_no_match) for total_no_match in total_no_match]
print("Total number of matches:", len(total_no_match))

# On Monday 2 Matches and on Tuesday 4 Matches can be played. So total no of matches played in a week = 6

m = 2
t = 4

# Total no weeks required to complete 120 match:

total_week = (len(total_no_match))/(m+t)
total_week = int(total_week)
print("Total week required to complete {} match:".format(len(total_no_match)), total_week)

# No of matches on Monday:
total_match_on_monday = total_week*m
print("Total number of Match on Monday:", total_match_on_monday)

# No of matches on Monday:
total_match_on_tuesday = total_week*t
print("Total number of Match on Tuesday:", total_match_on_tuesday)

Выход:

Общее количество матчей: 120

Всего неделя, необходимая для завершения 120 матчей: 20

Общее количество матчей в понедельник: 40

Общее количество матчей во вторник: 80

person Ekanshu    schedule 04.03.2021

Мы можем просто использовать формулу N×(N-1)/2 (турнир Робин Раунд) для расчета общего количества матчей, что в данном случае дает нам ответ 120.

Как уже упоминалось, в неделю возможно 6 матчей, поэтому на 120 матчей потребуется 20.

2 в понедельник и 4 во вторник, что означает 40 по понедельникам и остальные 80 по вторникам в течение 20 недель.

person Aayushi Garg    schedule 04.03.2021