Untitled

 avatar
unknown
plain_text
a year ago
3.1 kB
8
Indexable
def league_scheduler(N):
    required_match_count = int( (N * (N-1)) / 2 )
    max_days = required_match_count
    league_schedule_tracker = [""] * max_days
    day_match_count_tracker = [0] * max_days
    
    team_match_tracker = [[0 for x in range(N)] for x in range(N)] 
    day_team_match_tracker = [[0 for x in range(N)] for x in range(max_days)] 
    
    
    print(f"Team  Count: {N}")
    # print(f"max_days: {max_days}")
    print(f"required_match_count: {required_match_count}")
    
    required_day_count = 0
    current_match_count = 0
    for day in range(max_days):
        for i in range(N):
            for j in range(N):
                # Cant play against self
                if i == j:
                    team_match_tracker[i][j] = 1
                    continue
    
                # Already played against each other
                if team_match_tracker[i][j] == 1:
                    continue
                
                # Already played today
                if day_team_match_tracker[day][i] == 1 or day_team_match_tracker[day][j] == 1:
                    continue
        
                # Mark played against each other
                team_match_tracker[i][j] = 1
                team_match_tracker[j][i] = 1
    
                # Mark team played of this day
                day_team_match_tracker[day][i] = 1
                day_team_match_tracker[day][j] = 1
    
                current_match_count += 1
                
                league_schedule_tracker[day] += f"T{i+1} v T{j+1} | "
                day_match_count_tracker[day] += 1
                
                if current_match_count == required_match_count:
                    required_day_count = day + 1
                    break
    
                # print(f"current_day: {day}")
                # print(f"current_match_count: {current_match_count}")
                continue
    
            if current_match_count == required_match_count:
                required_day_count = day + 1
                break
        if current_match_count == required_match_count:
            required_day_count = day + 1
            break
    
    print(f"required_day_count: {required_day_count}")
    print(f"day_match_count_tracker: {day_match_count_tracker[:required_day_count]}")
    
    # print(f"team_match_tracker: {json.dumps(team_match_tracker, indent=2)}")
    # print(f"day_team_match_tracker: {json.dumps(day_team_match_tracker, indent=2)}")
    
    x = 0
    for i in range(required_day_count):
        x += day_match_count_tracker[i]
        # print(day_match_count_tracker[i])
    print(f"Average matches per day = {x/required_day_count}")
    
    # for i in range(required_day_count):
    #     print()
    #     print(f"DAY {i+1} Match schedule:")
    #     print(f"day_match_count = {day_match_count_tracker[i]}")
    #     for item in league_schedule_tracker[i].split("|"):
    #         if item.strip():
    #             print(f" -> {item.strip()}")

# N = number of teams
for i in range(2, 10):
    league_scheduler(i*2)
    print()
Editor is loading...
Leave a Comment