This paste expires on 2023-04-16 19:06:50.532759. Repaste, or download this paste. . Pasted through v1-api.

import random
# make random results consistent between runs
random.seed(42)
def generate_players(n_players, min_rank, max_rank):
    return [(f"Player{N}", random.randint(min_rank, max_rank)) for N in range(n_players)]
def sort_players(player_list):
    # the `key` here means we will sort using the rank value
    return sorted(player_list, key=lambda pair: pair[1])
def match_players(player_list):
    players = player_list.copy()
    matches = []
    while len(players) >= 2:
        left_player = players.pop()
        right_player = players.pop()
        pair = (left_player, right_player)
        matches.append(pair)
    if players:
        left_player = players.pop()
        pair = (left_player, None)
        matches.append(pair)
    return matches
if __name__ == "__main__":
    print("generating players")
    unsorted_players = generate_players(25, min_rank=1000, max_rank=2000)
    print("unsorted players:")
    print(unsorted_players)
    print("---\n")
    print("sorting players")
    sorted_players = sort_players(unsorted_players)
    print("sorted players:")
    print(sorted_players)
    print("---\n")
    print("creating match pairs")
    matches = match_players(sorted_players)
    for left_player, right_player in matches:
        if right_player is None:
            print(f"Player {left_player!r} is unmatched")
        else:
            left_rank = left_player[1]
            right_rank = right_player[1]
            rank_diff = abs(left_rank - right_rank)
            print(f"Player {left_player!r} plays player {right_player!r} (rank difference is {rank_diff})")
Filename: theWhisper_.py. Size: 2kb. View raw, , hex, or download this file.
$ python3 theWhisper_.py
generating players
unsorted players:
[('Player0', 1654), ('Player1', 1114), ('Player2', 1025), ('Player3', 1759), ('Player4', 1281), ('Player5', 1250), ('Player6', 1228), ('Player7', 1142), ('Player8', 1754), ('Player9', 1104), ('Player10', 1692), ('Player11', 1758), ('Player12', 1913), ('Player13', 1558), ('Player14', 1089), ('Player15', 1604), ('Player16', 1432), ('Player17', 1032), ('Player18', 1030), ('Player19', 1095), ('Player20', 1223), ('Player21', 1238), ('Player22', 1517), ('Player23', 1616), ('Player24', 1027)]
---
sorting players
sorted players:
[('Player2', 1025), ('Player24', 1027), ('Player18', 1030), ('Player17', 1032), ('Player14', 1089), ('Player19', 1095), ('Player9', 1104), ('Player1', 1114), ('Player7', 1142), ('Player20', 1223), ('Player6', 1228), ('Player21', 1238), ('Player5', 1250), ('Player4', 1281), ('Player16', 1432), ('Player22', 1517), ('Player13', 1558), ('Player15', 1604), ('Player23', 1616), ('Player0', 1654), ('Player10', 1692), ('Player8', 1754), ('Player11', 1758), ('Player3', 1759), ('Player12', 1913)]
---
creating match pairs
Player ('Player12', 1913) plays player ('Player3', 1759) (rank difference is 154)
Player ('Player11', 1758) plays player ('Player8', 1754) (rank difference is 4)
Player ('Player10', 1692) plays player ('Player0', 1654) (rank difference is 38)
Player ('Player23', 1616) plays player ('Player15', 1604) (rank difference is 12)
Player ('Player13', 1558) plays player ('Player22', 1517) (rank difference is 41)
Player ('Player16', 1432) plays player ('Player4', 1281) (rank difference is 151)
Player ('Player5', 1250) plays player ('Player21', 1238) (rank difference is 12)
Player ('Player6', 1228) plays player ('Player20', 1223) (rank difference is 5)
Player ('Player7', 1142) plays player ('Player1', 1114) (rank difference is 28)
Player ('Player9', 1104) plays player ('Player19', 1095) (rank difference is 9)
Player ('Player14', 1089) plays player ('Player17', 1032) (rank difference is 57)
Player ('Player18', 1030) plays player ('Player24', 1027) (rank difference is 3)
Player ('Player2', 1025) is unmatched
Filename: out.txt. Size: 2kb. View raw, , hex, or download this file.