LoginSignup
0
0

More than 1 year has passed since last update.

もし北京オリンピックカーリング女子が、総当たり戦ではなく、敗戦即敗退のトーナメント方式だったら...

Last updated at Posted at 2022-02-28

はじめに

まず、この記事を書く前に、北京オリンピック銀メダルに輝いた、カーリング女子、日本代表のロコ・ソラーレに敬意を表しまして、改めておめでとうございます。と申し上げます。
大会開催期間中、2022年2月10日から20日まで、決勝トーナメント進出圏内で、一進一退の攻防で手に汗握る熱戦を、毎日固唾を飲んで観戦しておりました。
無事にカーリング女子、日本代表のロコ・ソラーレが、決勝トーナメントに進出し、見事北京オリンピックで銀メダルを獲得したので、前回の、もしカーリング女子北京オリンピック最終予選が、敗戦即敗退のトーナメント方式だったら... に引き続き、今回も北京オリンピックカーリング女子を題材に、敗戦即敗退のトーナメント方式を試していきたいと思います。
まずは、出場全10チームの総当たり対戦成績表を下記に示します。

北京オリンピックカーリング女子の総当たり対戦成績表

スイス スウェーデン イギリス 日本 カナダ アメリカ 中国 韓国 デンマーク ROC
スイス ×
スウェーデン × ×
イギリス × × × ×
日本 × × × ×
カナダ × × × ×
アメリカ × × × × ×
中国 × × × × ×
韓国 × × × × ×
デンマーク × × × × × × ×
ROC × × × × × × × ×

決勝トーナメントの準決勝で、日本はスイスに勝利していますが、今回は総当たり戦の成績のみで、トーナメントを調査してみます。

10チームで不戦勝のあるトーナメント表を作成する

今回は出場チームは10チームです。前回参加チーム9チームでの不戦勝を含んだトーナメント表について調査してみましたが、今回は不戦勝が2つ存在するので9チームに比べて更にトーナメント表の組合せが増えそうです。
今回は、準々決勝に進むための1回戦2試合4チーム、準々決勝から出場する6チームのトーナメント表を作成します。
上半分の準決勝のトーナメントを「Uの山」、下半分の準決勝のトーナメントを「Vの山」、上から1つ目の準々決勝のグループを「Wのグループ」、上から2つ目の準々決勝のグループを「Xのグループ」、上から3つ目の準々決勝のグループを「Yのグループ」、一番下の準々決勝のグループを「Zのグループ」、とします。

                 ┏━ A
               ┏━┫
               ┃ ┗━ B
         ┏━ W ━┫
         ┃     ┃ ┏━ C
         ┃     ┗━┫
   ┏━ U ━┫       ┗━ D
   ┃     ┃
   ┃     ┃     ┏━━━ E
   ┃     ┗━ X ━┫
   ┃           ┗━━━ F
R ━┫
   ┃           ┏━━━ G
   ┃     ┏━ Y ━┫
   ┃     ┃     ┗━━━ H
   ┗━ V ━┫
         ┃     ┏━━━ I
         ┗━ Z ━┫
               ┗━━━ J

                 ┏━ A
               ┏━┫
         ┏━ W ━┫ ┗━ B
         ┃     ┃
         ┃     ┗━━━ C
   ┏━ U ━┫
   ┃     ┃       ┏━ D
   ┃     ┃     ┏━┫
   ┃     ┗━ X ━┫ ┗━ E
   ┃           ┃
S ━┫           ┗━━━ F
   ┃
   ┃           ┏━━━ G
   ┃     ┏━ Y ━┫
   ┃     ┃     ┗━━━ H
   ┗━ V ━┫
         ┃     ┏━━━ I
         ┗━ Z ━┫
               ┗━━━ J

                 ┏━ A
               ┏━┫
         ┏━ W ━┫ ┗━ B
         ┃     ┃
         ┃     ┗━━━ C
   ┏━ U ━┫
   ┃     ┃     ┏━━━ D
   ┃     ┗━ X ━┫
   ┃           ┗━━━ E
   ┃
T ━┫             ┏━ F
   ┃           ┏━┫
   ┃     ┏━ Y ━┫ ┗━ G
   ┃     ┃     ┃
   ┃     ┃     ┗━━━ H
   ┗━ V ━┫
         ┃     ┏━━━ I
         ┗━ Z ━┫
               ┗━━━ J

上から、Wのグループに1回戦が2試合あるトーナメント表をR、WのグループとXのグループに1回戦が1試合ずつあるトーナメント表をS、WのグループとYのグループに1回戦が1試合ずつあるトーナメント表をTとします。全部で3つの組合せがありそうです。

10チームのトーナメント表は全部で何通りあるか?

野球のような先攻・後攻の区別のない、前回9チームのトーナメント表は全部で11340通りになることがわかりました。今回10チームになった場合、全部で何通りになるか、前回同様スクリプトを作成して試してみましょう。

免責事項

その前に、このスクリプトの実行は自己責任でお願いします。本スクリプトを実行することにより生じるいかなる問題に関しましても、筆者は一切責任を負いません。予めご了承ください。

10チームのトーナメントの組合せのスクリプトをPythonで作成する

10チームのトーナメントの組合せを全て洗い出すスクリプトを下記に掲載します。Brute force的な片っ端から探索しているスクリプトでツッコミどころ満載ですが、ご愛嬌ということで、目を瞑ってください。

# -*- coding: utf-8 -*-

import itertools

# チーム名の登録
TEAMS = ('スイス', 'スウェーデン', 'イギリス', '日本', 'カナダ', 'アメリカ', '中国', '韓国', 'デンマーク', 'ROC')
# チームの総数
ALL = len(TEAMS)

# 総当たり対戦成績表
table = {'01': '1', '02': '0', '03': '0', '04': '0', '05': '0', '06': '0', '07': '0', '08': '0', '09': '0',
        '10': '1', '12': '2', '13': '1', '14': '1', '15': '1', '16': '6', '17': '1', '18': '1', '19': '1',
        '20': '0', '21': '2', '23': '2', '24': '4', '25': '2', '26': '6', '27': '7', '28': '2', '29': '2',
        '30': '0', '31': '1', '32': '2', '34': '3', '35': '3', '36': '3', '37': '7', '38': '3', '39': '3',
        '40': '0', '41': '1', '42': '4', '43': '3', '45': '4', '46': '6', '47': '4', '48': '4', '49': '4',
        '50': '0', '51': '1', '52': '2', '53': '3', '54': '4', '56': '5', '57': '5', '58': '5', '59': '5',
        '60': '0', '61': '6', '62': '6', '63': '3', '64': '6', '65': '5', '67': '6', '68': '8', '69': '9',
        '70': '0', '71': '1', '72': '7', '73': '7', '74': '4', '75': '5', '76': '6', '78': '7', '79': '7',
        '80': '0', '81': '1', '82': '2', '83': '3', '84': '4', '85': '5', '86': '8', '87': '7', '89': '8',
        '90': '0', '91': '1', '92': '2', '93': '3', '94': '4', '95': '5', '96': '9', '97': '7', '98': '8'}

# 10チームの順列をタプルとして生成する
PERMUTATION = tuple(itertools.permutations([str(n) for n in range(ALL)], ALL))

# トーナメントの組合せをカウントする変数
r_combination = 0
s_combination = 0
t_combination = 0

# 全チームの優勝回数を格納するリスト
wins = [0] * ALL

# 結果をテキストファイル'results.txt'に出力する
with open('results.txt', 'w') as fw:
    # popitem() & delを使用して、高速に処理するため、10チームの順列を降順に並べ替え、辞書に登録する
    permutation = {}
    for seq in reversed(PERMUTATION):
        permutation[int(''.join(seq))] = ''.join(seq)

    # 全ての順列が無くなるまで探索する
    while permutation:
        _, seq = permutation.popitem()
        # 先攻・後攻は区別しないので、先攻↔︎後攻が入れ替わった組合せを除外するする。
        # 除外する組合せは全部で127通り
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]

        # トーナメント表Rの組合せ数をカウントする
        r_combination += 1
        # 準々決勝に進出する2チームを決める
        quaterfinals = table[f'{seq[0]}{seq[1]}']
        quaterfinals += table[f'{seq[2]}{seq[3]}']
        # 準決勝に進出する4チームをリストに格納する
        semifinals = table[f'{quaterfinals[0]}{quaterfinals[1]}']
        semifinals += table[f'{seq[4]}{seq[5]}']
        semifinals += table[f'{seq[6]}{seq[7]}']
        semifinals += table[f'{seq[8]}{seq[9]}']
        # 決勝に進出する2チームをリストに格納する
        finals = table[f'{semifinals[0]}{semifinals[1]}']
        finals += table[f'{semifinals[2]}{semifinals[3]}']
        # 優勝チームを決定する
        win = int(table[f'{finals[0]}{finals[1]}'])
        # 優勝チームの優勝回数を +1 増やす
        wins[win] += 1
        # 優勝チームとその時のトーナメント表を出力する
        print(f'case {r_combination + s_combination + t_combination} 優勝: {TEAMS[win]}')
        fw.write(f'case {r_combination + s_combination + t_combination} 優勝: {TEAMS[win]} [')
        for i, team in enumerate(seq):
            if i < ALL - 1:
                fw.write(f'{TEAMS[int(team)]}, ')
            else:
                fw.write(f'{TEAMS[int(team)]}]\n')

    # トーナメント表S用に辞書を作成する
    permutation = {}
    for seq in reversed(PERMUTATION):
        permutation[int(''.join(seq))] = ''.join(seq)

    # トーナメント表S用に、全ての順列を探索する
    while permutation:
        _, seq = permutation.popitem()
        # 除外する組合せは全部で63通り
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
        del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
        del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]

        # トーナメント表Sの組合せ数をカウントする
        s_combination += 1
        # 準々決勝に進出する2チームを決める
        quaterfinals = table[f'{seq[0]}{seq[1]}']
        quaterfinals += table[f'{seq[3]}{seq[4]}']
        # 準決勝に進出する4チームをリストに格納する
        semifinals = table[f'{quaterfinals[0]}{seq[2]}']
        semifinals += table[f'{quaterfinals[1]}{seq[5]}']
        semifinals += table[f'{seq[6]}{seq[7]}']
        semifinals += table[f'{seq[8]}{seq[9]}']
        # 決勝に進出する2チームをリストに格納する
        finals = table[f'{semifinals[0]}{semifinals[1]}']
        finals += table[f'{semifinals[2]}{semifinals[3]}']
        # 優勝チームを決定する
        win = int(table[f'{finals[0]}{finals[1]}'])
        # 優勝チームの優勝回数を +1 増やす
        wins[win] += 1
        # 優勝チームとその時のトーナメント表を出力する
        print(f'case {r_combination + s_combination + t_combination} 優勝: {TEAMS[win]}')
        fw.write(f'case {r_combination + s_combination + t_combination} 優勝: {TEAMS[win]} [')
        for i, team in enumerate(seq):
            if i < ALL - 1:
                fw.write(f'{TEAMS[int(team)]}, ')
            else:
                fw.write(f'{TEAMS[int(team)]}]\n')

    # トーナメント表T用に辞書を作成する
    permutation = {}
    for seq in reversed(PERMUTATION):
        permutation[int(''.join(seq))] = ''.join(seq)

    # トーナメント表T用に、全ての順列を探索する
    while permutation:
        _, seq = permutation.popitem()
        # 除外する組合せは全部で31通り
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[6]}{seq[5]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[6]}{seq[5]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[6]}{seq[5]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[6]}{seq[5]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[6]}{seq[5]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[6]}{seq[5]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[6]}{seq[5]}{seq[7]}{seq[8]}{seq[9]}')]
        del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[6]}{seq[5]}{seq[7]}{seq[9]}{seq[8]}')]
        del permutation[int(f'{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}')]
        del permutation[int(f'{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}')]
        del permutation[int(f'{seq[6]}{seq[5]}{seq[7]}{seq[8]}{seq[9]}{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}')]
        del permutation[int(f'{seq[6]}{seq[5]}{seq[7]}{seq[9]}{seq[8]}{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}')]
        del permutation[int(f'{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}')]
        del permutation[int(f'{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}')]
        del permutation[int(f'{seq[6]}{seq[5]}{seq[7]}{seq[8]}{seq[9]}{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}')]
        del permutation[int(f'{seq[6]}{seq[5]}{seq[7]}{seq[9]}{seq[8]}{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}')]
        del permutation[int(f'{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}')]
        del permutation[int(f'{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}')]
        del permutation[int(f'{seq[6]}{seq[5]}{seq[7]}{seq[8]}{seq[9]}{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}')]
        del permutation[int(f'{seq[6]}{seq[5]}{seq[7]}{seq[9]}{seq[8]}{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}')]
        del permutation[int(f'{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}')]
        del permutation[int(f'{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}')]
        del permutation[int(f'{seq[6]}{seq[5]}{seq[7]}{seq[8]}{seq[9]}{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}')]
        del permutation[int(f'{seq[6]}{seq[5]}{seq[7]}{seq[9]}{seq[8]}{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}')]

        # トーナメント表Tの組合せ数をカウントする
        t_combination += 1
        # 準々決勝に進出する2チームを決める
        quaterfinals = table[f'{seq[0]}{seq[1]}']
        quaterfinals += table[f'{seq[5]}{seq[6]}']
        # 準決勝に進出する4チームをリストに格納する
        semifinals = table[f'{quaterfinals[0]}{seq[2]}']
        semifinals += table[f'{seq[3]}{seq[4]}']
        semifinals += table[f'{quaterfinals[1]}{seq[7]}']
        semifinals += table[f'{seq[8]}{seq[9]}']
        # 決勝に進出する2チームをリストに格納する
        finals = table[f'{semifinals[0]}{semifinals[1]}']
        finals += table[f'{semifinals[2]}{semifinals[3]}']
        # 優勝チームを決定する
        win = int(table[f'{finals[0]}{finals[1]}'])
        # 優勝チームの優勝回数を +1 増やす
        wins[win] += 1
        # 優勝チームとその時のトーナメント表を出力する
        print(f'case {r_combination + s_combination + t_combination} 優勝: {TEAMS[win]}')
        fw.write(f'case {r_combination + s_combination + t_combination} 優勝: {TEAMS[win]} [')
        for i, team in enumerate(seq):
            if i < ALL - 1:
                fw.write(f'{TEAMS[int(team)]}, ')
            else:
                fw.write(f'{TEAMS[int(team)]}]\n')
    
    # 確認用、トーナメント表Rの組合せの総数を表示する
    print(f'トーナメント表Rの組合せ: {r_combination}')
    fw.write(f'トーナメント表Rの組合せ: {r_combination}\n')
    
    # 確認用、トーナメント表Sの組合せの総数を表示する
    print(f'トーナメント表Sの組合せ: {s_combination}')
    fw.write(f'トーナメント表Sの組合せ: {s_combination}\n')
    
    # 確認用、トーナメント表Tの組合せの総数を表示する
    print(f'トーナメント表Tの組合せ: {t_combination}')
    fw.write(f'トーナメント表Tの組合せ: {t_combination}\n')
    
    # 全10チームが優勝した回数を表示する
    for i, team in enumerate(TEAMS):
        print(f'{team}: {wins[i]}')
        fw.write(f'{team}: {wins[i]}\n')

スクリプトの説明

前回でも使用した、itertoolsです。全10チームのトーナメントの順列を作成するために使用します。

import itertools

北京オリンピックに出場したカーリング女子全10チームを登録しています。

# チーム名の登録
TEAMS = ('スイス', 'スウェーデン', 'イギリス', '日本', 'カナダ', 'アメリカ', '中国', '韓国', 'デンマーク', 'ROC')
# チームの総数
ALL = len(TEAMS)

総当たり対戦成績表になります。{'0': 'スイス', '1': 'スウェーデン', ... '9': 'ROC'}というルールで登録しています。
総当たり対戦成績表の見方は、例えば、{'01': '1'}の場合、スイスとスウェーデンが対戦して、スウェーデンが勝利する。という意味になります。
他にも、{'38': '3'}であれば、日本とデンマークが対戦して、日本が勝利する。といった感じです。

# 総当たり対戦成績表
table = {'01': '1', '02': '0', '03': '0', '04': '0', '05': '0', '06': '0', '07': '0', '08': '0', '09': '0',
        '10': '1', '12': '2', '13': '1', '14': '1', '15': '1', '16': '6', '17': '1', '18': '1', '19': '1',
        '20': '0', '21': '2', '23': '2', '24': '4', '25': '2', '26': '6', '27': '7', '28': '2', '29': '2',
        '30': '0', '31': '1', '32': '2', '34': '3', '35': '3', '36': '3', '37': '7', '38': '3', '39': '3',
        '40': '0', '41': '1', '42': '4', '43': '3', '45': '4', '46': '6', '47': '4', '48': '4', '49': '4',
        '50': '0', '51': '1', '52': '2', '53': '3', '54': '4', '56': '5', '57': '5', '58': '5', '59': '5',
        '60': '0', '61': '6', '62': '6', '63': '3', '64': '6', '65': '5', '67': '6', '68': '8', '69': '9',
        '70': '0', '71': '1', '72': '7', '73': '7', '74': '4', '75': '5', '76': '6', '78': '7', '79': '7',
        '80': '0', '81': '1', '82': '2', '83': '3', '84': '4', '85': '5', '86': '8', '87': '7', '89': '8',
        '90': '0', '91': '1', '92': '2', '93': '3', '94': '4', '95': '5', '96': '9', '97': '7', '98': '8'}

[0, 1, ... 9]のレンジを、['0', '1', ... '9']のリストに変換して、そのリストの全ての順列を、itertools.permutations()を使って生成しています。生成された全ての順列をタプルに変換し、PERMUTATIONに格納しています。
r_combinationは、トーナメント表R、s_combinationは、トーナメント表S、t_combinationは、トーナメント表Tの組合せを格納するリストです。
winsは、全チームの優勝回数を格納するリストです。優勝回数の結果表示に使用しています。

# 10チームの順列をタプルとして生成する
PERMUTATION = tuple(itertools.permutations([str(n) for n in range(ALL)], ALL))

# トーナメントの組合せをカウントする変数
r_combination = 0
s_combination = 0
t_combination = 0

# 全チームの優勝回数を格納するリスト
wins = [0] * ALL

結果をテキストファイル'results.txt'として出力しています。

# 結果をテキストファイル'results.txt'に出力する
with open('results.txt', 'w') as fw:

popitem() & delを使用して、高速に処理するため、10チームの順列を降順に並べ替え、辞書に登録しています。

# popitem() & delを使用して、高速に処理するため、10チームの順列を降順に並べ替え、辞書に登録する
permutation = {}
for seq in reversed(PERMUTATION):
    permutation[int(''.join(seq))] = ''.join(seq)

全ての順列が無くなるまで探索しています。keyは必要無いので、保存していません。

# 全ての順列が無くなるまで探索する
while permutation:
    _, seq = permutation.popitem()

ここが肝となりますが、全順列を探索している最中に、以前探索した組合せと先攻↔︎後攻が入れ替わった組合せは同一と見做し、その組合せをdelを使用して削除しています。先攻↔︎後攻が入れ替わった組合せは、トーナメント表Rの場合、全部で127通りあります。
今回困った点は、前回9チームの時は、既に試したトーナメントの組合せを配列に登録して、同じ組合せが出現したら、スキップするという方法を取っていたのですが、その方法で10チームのトーナメントを試すと、丸一日スクリプトを走らせても終わりませんでした。
今回改良した点は、配列を辞書型に変更して、試したトーナメントと同じ組合せを、キーの値で削除するという方法を取ることにより、大幅なスピード改善に繋がりました。

# 先攻・後攻は区別しないので、先攻↔︎後攻が入れ替わった組合せを除外するする。
# 除外する組合せは全部で127通り
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[3]}{seq[2]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[0]}{seq[1]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[2]}{seq[3]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[3]}{seq[2]}{seq[1]}{seq[0]}{seq[5]}{seq[4]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]

例えば、トーナメント表Rの1回戦、第1試合の先攻↔︎後攻が入れ替わった組合せは、同一トーナメントと見做します。

                 ┏━ A ↔︎ B
               ┏━┫
               ┃ ┗━ B ↔︎ A
         ┏━ W ━┫
         ┃     ┃ ┏━ C
         ┃     ┗━┫
   ┏━ U ━┫       ┗━ D
   ┃     ┃
   ┃     ┃     ┏━━━ E
   ┃     ┗━ X ━┫
   ┃           ┗━━━ F
R ━┫
   ┃           ┏━━━ G
   ┃     ┏━ Y ━┫
   ┃     ┃     ┗━━━ H
   ┗━ V ━┫
         ┃     ┏━━━ I
         ┗━ Z ━┫
               ┗━━━ J

1回戦、2試合、準々決勝、3試合の先攻↔︎後攻が全て入れ替わった組合せも、同一トーナメントと見做します。

                 ┏━ A ↔︎ B
               ┏━┫
               ┃ ┗━ B ↔︎ A
         ┏━ W ━┫
         ┃     ┃ ┏━ C ↔︎ D
         ┃     ┗━┫
   ┏━ U ━┫       ┗━ D ↔︎ C
   ┃     ┃
   ┃     ┃     ┏━━━ E ↔︎ F
   ┃     ┗━ X ━┫
   ┃           ┗━━━ F ↔︎ E
R ━┫
   ┃           ┏━━━ G ↔︎ H
   ┃     ┏━ Y ━┫
   ┃     ┃     ┗━━━ H ↔︎ G
   ┗━ V ━┫
         ┃     ┏━━━ I ↔︎ J
         ┗━ Z ━┫
               ┗━━━ J ↔︎ I

Wのグループの準々決勝の先攻↔︎後攻が入れ替わった組合せも、同一トーナメントと見做します。

                 ┏━ A ↔︎ C
               ┏━┫
               ┃ ┗━ B ↔︎ D
         ┏━ W ━┫
         ┃     ┃ ┏━ C ↔︎ A
         ┃     ┗━┫
   ┏━ U ━┫       ┗━ D ↔︎ B
   ┃     ┃
   ┃     ┃     ┏━━━ E
   ┃     ┗━ X ━┫
   ┃           ┗━━━ F
R ━┫
   ┃           ┏━━━ G
   ┃     ┏━ Y ━┫
   ┃     ┃     ┗━━━ H
   ┗━ V ━┫
         ┃     ┏━━━ I
         ┗━ Z ━┫
               ┗━━━ J

Vの山の準決勝の先攻↔︎後攻が入れ替わった組合せも、同一トーナメントと見做します。

                 ┏━ A
               ┏━┫
               ┃ ┗━ B
         ┏━ W ━┫
         ┃     ┃ ┏━ C
         ┃     ┗━┫
   ┏━ U ━┫       ┗━ D
   ┃     ┃
   ┃     ┃     ┏━━━ E
   ┃     ┗━ X ━┫
   ┃           ┗━━━ F
R ━┫
   ┃           ┏━━━ G ↔︎ I
   ┃     ┏━ Y ━┫
   ┃     ┃     ┗━━━ H ↔︎ J
   ┗━ V ━┫
         ┃     ┏━━━ I ↔︎ G
         ┗━ Z ━┫
               ┗━━━ J ↔︎ H

しかし、Wのグループの1回戦の1試合とXのグループの準決勝の先攻↔︎後攻が入れ替わった組合せは、同一トーナメントと見做しません。なぜなら、このトーナメントでは優勝チームが変わってくるからです。

                 ┏━ A ↔︎ E
               ┏━┫
               ┃ ┗━ B ↔︎ F
         ┏━ W ━┫
         ┃     ┃ ┏━ C
         ┃     ┗━┫
   ┏━ U ━┫       ┗━ D
   ┃     ┃
   ┃     ┃     ┏━━━ E ↔︎ A
   ┃     ┗━ X ━┫
   ┃           ┗━━━ F ↔︎ B
R ━┫
   ┃           ┏━━━ G
   ┃     ┏━ Y ━┫
   ┃     ┃     ┗━━━ H
   ┗━ V ━┫
         ┃     ┏━━━ I
         ┗━ Z ━┫
               ┗━━━ J

トーナメント表Rの組合せr_combinationをカウントしています。

# トーナメント表Rの組合せ数をカウントする
r_combination += 1

1回戦2試合、準々決勝に進出する2チームを決定します。

# 準々決勝に進出する2チームを決める
quaterfinals = table[f'{seq[0]}{seq[1]}']
quaterfinals += table[f'{seq[2]}{seq[3]}']

1回戦を勝ち上がってきた2チームと、準々決勝から出場する6チームで、準決勝に進出する4チームを決定します。

# 準決勝に進出する4チームをリストに格納する
semifinals = table[f'{quaterfinals[0]}{quaterfinals[1]}']
semifinals += table[f'{seq[4]}{seq[5]}']
semifinals += table[f'{seq[6]}{seq[7]}']
semifinals += table[f'{seq[8]}{seq[9]}']

準決勝に進出した4チームから、決勝に進出する2チームを決定します。

# 決勝に進出する2チームをリストに格納する
finals = table[f'{semifinals[0]}{semifinals[1]}']
finals += table[f'{semifinals[2]}{semifinals[3]}']

決勝に進出した2チームから、優勝チームを決定します。そして、優勝回数を後で確認するため、優勝チームの優勝回数を +1 増やしています。

# 優勝チームを決定する
win = int(table[f'{finals[0]}{finals[1]}'])
# 優勝チームの優勝回数を +1 増やす
wins[win] += 1

優勝チームとその時のトーナメント表を、'results.txt'に出力しています。

# 優勝チームとその時のトーナメント表を出力する
print(f'case {r_combination + s_combination + t_combination} 優勝: {TEAMS[win]}')
fw.write(f'case {r_combination + s_combination + t_combination} 優勝: {TEAMS[win]} [')
for i, team in enumerate(seq):
    if i < ALL - 1:
        fw.write(f'{TEAMS[int(team)]}, ')
    else:
        fw.write(f'{TEAMS[int(team)]}]\n')

トーナメント表Rと同様に、トーナメント表S用の辞書を作成しています。

# トーナメント表S用に辞書を作成する
permutation = {}
for seq in reversed(PERMUTATION):
    permutation[int(''.join(seq))] = ''.join(seq)

トーナメント表Rと同様、トーナメント表Sの全ての順列が無くなるまで探索しています。

# トーナメント表S用に、全ての順列を探索する
while permutation:
    _, seq = permutation.popitem()

トーナメント表Rと同様に、全順列から同じ組合せを削除しています。先攻↔︎後攻が入れ替わった組合せは、トーナメント表Sの場合、全部で63通りあります。

# 除外する組合せは全部で63通り
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[7]}{seq[6]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[7]}{seq[6]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[0]}{seq[1]}{seq[2]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[3]}{seq[4]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[8]}{seq[9]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[9]}{seq[8]}{seq[6]}{seq[7]}')]
del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[8]}{seq[9]}{seq[7]}{seq[6]}')]
del permutation[int(f'{seq[4]}{seq[3]}{seq[5]}{seq[1]}{seq[0]}{seq[2]}{seq[9]}{seq[8]}{seq[7]}{seq[6]}')]

例えば、トーナメント表Sの1回戦、第1試合の先攻↔︎後攻が入れ替わった組合せは、同一トーナメントと見做します。

                 ┏━ A ↔︎ B
               ┏━┫
         ┏━ W ━┫ ┗━ B ↔︎ A
         ┃     ┃
         ┃     ┗━━━ C
   ┏━ U ━┫
   ┃     ┃       ┏━ D
   ┃     ┃     ┏━┫
   ┃     ┗━ X ━┫ ┗━ E
   ┃           ┃
S ━┫           ┗━━━ F
   ┃
   ┃           ┏━━━ G
   ┃     ┏━ Y ━┫
   ┃     ┃     ┗━━━ H
   ┗━ V ━┫
         ┃     ┏━━━ I
         ┗━ Z ━┫
               ┗━━━ J

1回戦、2試合、準々決勝、2試合の先攻↔︎後攻が全て入れ替わった組合せも、同一トーナメントと見做します。

                 ┏━ A ↔︎ B
               ┏━┫
         ┏━ W ━┫ ┗━ B ↔︎ A
         ┃     ┃
         ┃     ┗━━━ C
   ┏━ U ━┫
   ┃     ┃       ┏━ D ↔︎ E
   ┃     ┃     ┏━┫
   ┃     ┗━ X ━┫ ┗━ E ↔︎ D
   ┃           ┃
S ━┫           ┗━━━ F
   ┃
   ┃           ┏━━━ G ↔︎ H
   ┃     ┏━ Y ━┫
   ┃     ┃     ┗━━━ H ↔︎ G
   ┗━ V ━┫
         ┃     ┏━━━ I ↔︎ J
         ┗━ Z ━┫
               ┗━━━ J ↔︎ I

Uの山の準決勝の先攻↔︎後攻が入れ替わった組合せも、同一トーナメントと見做します。

                 ┏━ A ↔︎ D
               ┏━┫
         ┏━ W ━┫ ┗━ B ↔︎ E
         ┃     ┃
         ┃     ┗━━━ C ↔︎ F
   ┏━ U ━┫
   ┃     ┃       ┏━ D ↔︎ A
   ┃     ┃     ┏━┫
   ┃     ┗━ X ━┫ ┗━ E ↔︎ B
   ┃           ┃
S ━┫           ┗━━━ F ↔︎ C
   ┃
   ┃           ┏━━━ G
   ┃     ┏━ Y ━┫
   ┃     ┃     ┗━━━ H
   ┗━ V ━┫
         ┃     ┏━━━ I
         ┗━ Z ━┫
               ┗━━━ J

Vの山の準決勝の先攻↔︎後攻が入れ替わった組合せも、同一トーナメントと見做します。

                 ┏━ A
               ┏━┫
         ┏━ W ━┫ ┗━ B
         ┃     ┃
         ┃     ┗━━━ C
   ┏━ U ━┫
   ┃     ┃       ┏━ D
   ┃     ┃     ┏━┫
   ┃     ┗━ X ━┫ ┗━ E
   ┃           ┃
S ━┫           ┗━━━ F
   ┃
   ┃           ┏━━━ G ↔︎ I
   ┃     ┏━ Y ━┫
   ┃     ┃     ┗━━━ H ↔︎ J
   ┗━ V ━┫
         ┃     ┏━━━ I ↔︎ G
         ┗━ Z ━┫
               ┗━━━ J ↔︎ H

しかし、Wのグループの1回戦の第1試合とXのグループの1回戦の第2試合の先攻↔︎後攻が入れ替わった組合せは、同一トーナメントと見做しません。なぜなら、このトーナメントでは優勝チームが変わってくるからです。

                 ┏━ A ↔︎ D
               ┏━┫
         ┏━ W ━┫ ┗━ B ↔︎ E
         ┃     ┃
         ┃     ┗━━━ C
   ┏━ U ━┫
   ┃     ┃       ┏━ D ↔︎ A
   ┃     ┃     ┏━┫
   ┃     ┗━ X ━┫ ┗━ E ↔︎ B
   ┃           ┃
S ━┫           ┗━━━ F
   ┃
   ┃           ┏━━━ G
   ┃     ┏━ Y ━┫
   ┃     ┃     ┗━━━ H
   ┗━ V ━┫
         ┃     ┏━━━ I
         ┗━ Z ━┫
               ┗━━━ J

トーナメント表Rの組合せs_combinationをカウントしています。

# トーナメント表Sの組合せ数をカウントする
s_combination += 1

1回戦2試合、準々決勝に進出する2チームを決定します。

# 準々決勝に進出する2チームを決める
quaterfinals = table[f'{seq[0]}{seq[1]}']
quaterfinals += table[f'{seq[3]}{seq[4]}']

1回戦を勝ち上がってきた2チームと、準々決勝から出場する6チームで、準決勝に進出する4チームを決定します。

# 準決勝に進出する4チームをリストに格納する
semifinals = table[f'{quaterfinals[0]}{seq[2]}']
semifinals += table[f'{quaterfinals[1]}{seq[5]}']
semifinals += table[f'{seq[6]}{seq[7]}']
semifinals += table[f'{seq[8]}{seq[9]}']

準決勝からはトーナメント表Rと同じなので、説明を省略します。

優勝チームとその時のトーナメント表を、'results.txt'に出力しています。

# 優勝チームとその時のトーナメント表を出力する
print(f'case {r_combination + s_combination + t_combination} 優勝: {TEAMS[win]}')
fw.write(f'case {r_combination + s_combination + t_combination} 優勝: {TEAMS[win]} [')
for i, team in enumerate(seq):
    if i < ALL - 1:
        fw.write(f'{TEAMS[int(team)]}, ')
    else:
        fw.write(f'{TEAMS[int(team)]}]\n')

トーナメント表R、Sと同様に、トーナメント表T用の辞書を作成しています。

# トーナメント表T用に辞書を作成する
permutation = {}
for seq in reversed(PERMUTATION):
    permutation[int(''.join(seq))] = ''.join(seq)

トーナメント表R、Sと同様、トーナメント表Tの全ての順列が無くなるまで探索しています。

# トーナメント表S用に、全ての順列を探索する
while permutation:
    _, seq = permutation.popitem()

トーナメント表R、Sと同様に、全順列から同じ組合せを削除しています。先攻↔︎後攻が入れ替わった組合せは、トーナメント表Tの場合、全部で31通りあります。

# 除外する組合せは全部で31通り
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[6]}{seq[5]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}{seq[6]}{seq[5]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[6]}{seq[5]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}{seq[6]}{seq[5]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[6]}{seq[5]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}{seq[6]}{seq[5]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[6]}{seq[5]}{seq[7]}{seq[8]}{seq[9]}')]
del permutation[int(f'{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}{seq[6]}{seq[5]}{seq[7]}{seq[9]}{seq[8]}')]
del permutation[int(f'{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}')]
del permutation[int(f'{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}')]
del permutation[int(f'{seq[6]}{seq[5]}{seq[7]}{seq[8]}{seq[9]}{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}')]
del permutation[int(f'{seq[6]}{seq[5]}{seq[7]}{seq[9]}{seq[8]}{seq[0]}{seq[1]}{seq[2]}{seq[3]}{seq[4]}')]
del permutation[int(f'{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}')]
del permutation[int(f'{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}')]
del permutation[int(f'{seq[6]}{seq[5]}{seq[7]}{seq[8]}{seq[9]}{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}')]
del permutation[int(f'{seq[6]}{seq[5]}{seq[7]}{seq[9]}{seq[8]}{seq[0]}{seq[1]}{seq[2]}{seq[4]}{seq[3]}')]
del permutation[int(f'{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}')]
del permutation[int(f'{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}')]
del permutation[int(f'{seq[6]}{seq[5]}{seq[7]}{seq[8]}{seq[9]}{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}')]
del permutation[int(f'{seq[6]}{seq[5]}{seq[7]}{seq[9]}{seq[8]}{seq[1]}{seq[0]}{seq[2]}{seq[3]}{seq[4]}')]
del permutation[int(f'{seq[5]}{seq[6]}{seq[7]}{seq[8]}{seq[9]}{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}')]
del permutation[int(f'{seq[5]}{seq[6]}{seq[7]}{seq[9]}{seq[8]}{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}')]
del permutation[int(f'{seq[6]}{seq[5]}{seq[7]}{seq[8]}{seq[9]}{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}')]
del permutation[int(f'{seq[6]}{seq[5]}{seq[7]}{seq[9]}{seq[8]}{seq[1]}{seq[0]}{seq[2]}{seq[4]}{seq[3]}')]

例えば、トーナメント表Tの1回戦、第1試合の先攻↔︎後攻が入れ替わった組合せは、同一トーナメントと見做します。

                 ┏━ A ↔︎ B
               ┏━┫
         ┏━ W ━┫ ┗━ B ↔︎ A
         ┃     ┃
         ┃     ┗━━━ C
   ┏━ U ━┫
   ┃     ┃     ┏━━━ D
   ┃     ┗━ X ━┫
   ┃           ┗━━━ E
   ┃
T ━┫             ┏━ F
   ┃           ┏━┫
   ┃     ┏━ Y ━┫ ┗━ G
   ┃     ┃     ┃
   ┃     ┃     ┗━━━ H
   ┗━ V ━┫
         ┃     ┏━━━ I
         ┗━ Z ━┫
               ┗━━━ J

1回戦、2試合、準々決勝、2試合の先攻↔︎後攻が全て入れ替わった組合せも、同一トーナメントと見做します。

                 ┏━ A ↔︎ B
               ┏━┫
         ┏━ W ━┫ ┗━ B ↔︎ A
         ┃     ┃
         ┃     ┗━━━ C
   ┏━ U ━┫
   ┃     ┃     ┏━━━ D ↔︎ E
   ┃     ┗━ X ━┫
   ┃           ┗━━━ E ↔︎ D
   ┃
T ━┫             ┏━ F ↔︎ G
   ┃           ┏━┫
   ┃     ┏━ Y ━┫ ┗━ G ↔︎ F
   ┃     ┃     ┃
   ┃     ┃     ┗━━━ H
   ┗━ V ━┫
         ┃     ┏━━━ I ↔︎ J
         ┗━ Z ━┫
               ┗━━━ J ↔︎ I

トーナメントTの決勝戦、Uの山とVの山の先攻↔︎後攻が入れ替わった組合せも、同一トーナメントと見做します。

                 ┏━ A ↔︎ F
               ┏━┫
         ┏━ W ━┫ ┗━ B ↔︎ G
         ┃     ┃
         ┃     ┗━━━ C ↔︎ H
   ┏━ U ━┫
   ┃     ┃     ┏━━━ D ↔︎ I
   ┃     ┗━ X ━┫
   ┃           ┗━━━ E ↔︎ J
   ┃
T ━┫             ┏━ F ↔︎ A
   ┃           ┏━┫
   ┃     ┏━ Y ━┫ ┗━ G ↔︎ B
   ┃     ┃     ┃
   ┃     ┃     ┗━━━ H ↔︎ C
   ┗━ V ━┫
         ┃     ┏━━━ I ↔︎ D
         ┗━ Z ━┫
               ┗━━━ J ↔︎ E

しかし、Wのグループの1回戦の1試合とXのグループの準決勝の先攻↔︎後攻が入れ替わった組合せは、同一トーナメントと見做しません。なぜなら、このトーナメントでは優勝チームが変わってくるからです。

                 ┏━ A ↔︎ D
               ┏━┫
         ┏━ W ━┫ ┗━ B ↔︎ E
         ┃     ┃
         ┃     ┗━━━ C
   ┏━ U ━┫
   ┃     ┃     ┏━━━ D ↔︎ A
   ┃     ┗━ X ━┫
   ┃           ┗━━━ E ↔︎ B
   ┃
T ━┫             ┏━ F
   ┃           ┏━┫
   ┃     ┏━ Y ━┫ ┗━ G
   ┃     ┃     ┃
   ┃     ┃     ┗━━━ H
   ┗━ V ━┫
         ┃     ┏━━━ I
         ┗━ Z ━┫
               ┗━━━ J

今まで格納した組合せt_combinationに無かった組合せが出現したら、t_combinationのリストに追加します。

# トーナメント表Tの組合せ数をカウントする
t_combination += 1

1回戦2試合、準々決勝に進出する2チームを決定します。

# 準々決勝に進出する2チームを決める
quaterfinals = table[f'{seq[0]}{seq[1]}']
quaterfinals += table[f'{seq[5]}{seq[6]}']

1回戦を勝ち上がってきた2チームと、準々決勝から出場する6チームで、準決勝に進出する4チームを決定します。

# 準決勝に進出する4チームをリストに格納する
semifinals = table[f'{quaterfinals[0]}{seq[2]}']
semifinals += table[f'{seq[3]}{seq[4]}']
semifinals += table[f'{quaterfinals[1]}{seq[7]}']
semifinals += table[f'{seq[8]}{seq[9]}']

準決勝からはトーナメント表R、Sと同じなので、説明を省略します。

優勝チームとその時のトーナメント表を、'results.txt'に出力しています。

# 優勝チームとその時のトーナメント表を出力する
print(f'case {r_combination + s_combination + t_combination} 優勝: {TEAMS[win]}')
fw.write(f'case {r_combination + s_combination + t_combination} 優勝: {TEAMS[win]} [')
for i, team in enumerate(seq):
    if i < ALL - 1:
        fw.write(f'{TEAMS[int(team)]}, ')
    else:
        fw.write(f'{TEAMS[int(team)]}]\n')

確認用です。r_combinationは、10チームのトーナメント表Rの組合せの総数を出力しています。
s_combinationは、10チームのトーナメント表Sの組合せの総数を出力しています。
t_combinationは、10チームのトーナメント表Tの組合せの総数を出力しています。

# 確認用、トーナメント表Rの組合せの総数を表示する
print(f'トーナメント表Rの組合せ: {r_combination}')
fw.write(f'トーナメント表Rの組合せ: {r_combination}\n')

# 確認用、トーナメント表Sの組合せの総数を表示する
print(f'トーナメント表Sの組合せ: {s_combination}')
fw.write(f'トーナメント表Sの組合せ: {s_combination}\n')

# 確認用、トーナメント表Tの組合せの総数を表示する
print(f'トーナメント表Tの組合せ: {t_combination}')
fw.write(f'トーナメント表Tの組合せ: {t_combination}\n')

最後に全10チームの優勝回数を出力しています。

# 全10チームが優勝した回数を表示する
for i, team in enumerate(TEAMS):
    print(f'{team}: {wins[i]}')
    fw.write(f'{team}: {wins[i]}\n')

動作確認環境

• MacOS 12.2.1
• Python 3.8.9

スクリプトの実行結果

私の環境では、このスクリプトは約30秒で走り終わりました。環境によって、もう少し時間がかかるかもしれません。
実行結果は、下記の通りになりました。トーナメント表Rの組合せは、28350通り、トーナメント表Sの組合せは、56700通り、トーナメント表Tの組合せは、113400通りでした。

トーナメント表Rの組合せ: 28350
トーナメント表Sの組合せ: 56700
トーナメント表Tの組合せ: 113400
スイス: 78147
スウェーデン: 91108
イギリス: 12307
日本: 1639
カナダ: 1660
アメリカ: 357
中国: 12604
韓国: 628
デンマーク: 0
ROC: 0

10チームのトーナメントの組合せ総数は、28350+56700+113400=198450通りとなりました。9チームのトーナメントの組合せの総数は11340通りなので、単純に割り算すると、198450÷11340=17.5倍になります。もはや、10チームのトーナメントの組合せ総数を計算で導き出すのは困難になってきました。

10チームのトーナメント戦の考察

10チームの優勝回数を考察すると、以下のようなことが言えます。

  • 総当たり対戦成績の結果、8勝1敗のスイスの優勝回数が、78147回に対し、7勝2敗のスウェーデンの優勝回数が、91108回で、スイスの優勝回数より12961回も上回っている。
  • 5勝4敗で並んでいる、イギリスの優勝回数は12307回に対し、日本の優勝回数は1639回、カナダの優勝回数は1660回である。
  • 4勝5敗で並んでいる、アメリカの優勝回数は357回、韓国の優勝回数は628回だけなのに対し、中国の優勝回数は12604回も優勝している。
  • 2勝しかしていないデンマーク、1勝しかしていないROCは優勝できない。

8勝1敗のスイスが、7勝2敗のスウェーデンより優勝回数が、少ない理由について、調査が必要である。
仮説を立てると、他の8チームより、勝ち星の差が大きく、2強、6普通、2弱状態なのが、大きな理由かもしれない。2強チームのトーナメントにおいては、2強チームの直接対決が重要になってきそうだ。何故なら、2強チームが、決勝に進出する可能性が高く、決勝に進出すれば、必ず直接対決で、勝利したチームが優勝する。
5勝4敗で同じ勝ち星の、イギリスが、優勝回数で日本、カナダを大きく引き離している理由は、優勝候補のスウェーデンに勝利しているからである。
4勝5敗の中国が、イギリスの優勝回数を上回っているのも、優勝候補のスウェーデンと直接対決でイギリスに勝利しているのが大きな要因と言えそうだ。

8勝1敗のスイスの優勝確率は、78147÷198450=39.38%の確率で優勝する。
7勝2敗のスウェーデンの優勝確率は、91108÷198450=45.91%の確率で優勝する。
2強チームの優勝確率の合計は85.29%で、2強チームで8.5割以上を占めている。
5勝4敗のイギリスの優勝確率は、12307÷198450=6.20%、日本の優勝確率は、1639÷198450=0.83%、カナダの優勝確率は1660÷198450=0.84%で、日本とカナダの優勝確率は1%にも満たない。
4勝5敗のアメリカの優勝確率は、357÷198450=0.18%、韓国の優勝確率は、628÷198450=0.32%と1%にも満たないのに対し、中国の優勝確率は12604÷198450=6.35%と、イギリスの優勝確率より若干上回っている。

スクリプトの実行結果を優勝回数でソートしてみます。

スウェーデン: 91108 (45.91%)
スイス: 78147 (39.38%)
中国: 12604 (6.35%)
イギリス: 12307 (6.20%)
カナダ: 1660 (0.84%)
日本: 1639 (0.83%)
韓国: 628 (0.32%)
アメリカ: 357 (0.18%)
デンマーク: 0 (0.00%)
ROC: 0 (0.00%)

7勝2敗のスウェーデンが、優勝回数トップとなっているのは、先ほども申し上げましたが、驚くべきは、4勝5敗の中国が、優勝回数で3位となっていることです。ハッキリ言って、このスクリプトを動かす前は、このような結果を全く予想していませんでした。

上記の考察結果から、敗戦即敗退のトーナメント方式で、優勝する秘訣は

  • トーナメントで勝ち上がる秘訣は、苦手チームとは対戦する前に、苦手チームが別のチームと対戦して、敗退してもらうことが重要となってきそうだ。今回の2強チームのトーナメント表では、総当たり戦の勝ち星の低いスウェーデンが、直接対決でスイスに勝利しているので、結果優勝回数は、スウェーデンの方がスイスを上回っている。
  • 苦手チームに敗退してもらうために、苦手チームの苦手チームを、倒してはいけない。今回のスイスの優勝回数が伸び悩んでいるのは、スイスの苦手チームスウェーデンを、スウェーデンの苦手チームであるイギリス、中国をスウェーデンと対戦させる前に、自らの手で倒してしまうと、結果として苦手チームであるスウェーデンと対戦することになってしまい、優勝を逃している結果となる。
  • 少ない勝利数で優勝するためには、優勝候補チームに勝つことが重要である。なぜなら、優勝候補チームは準決勝、決勝まで勝ち進む確率が高く、下位チームより対戦する確率が高くなるからである。

もう少し掘り下げて、優勝した時のトーナメント表から優勝できる条件を分析する

まず、スイスを見てみよう。スイスにとっての天敵は、スウェーデンである。優勝するためには、初戦でスウェーデン戦を回避しつつ、準決勝、決勝までに、スウェーデンが敗退しているのが条件である。

スイスが優勝するトーナメント表の例

                 ┏━ 中国
               ┏━┫
         ┏━ W ━┫ ┗━ ROC
         ┃     ┃
         ┃     ┗━━━ アメリカ
   ┏━ U ━┫
   ┃     ┃     ┏━━━ スウェーデン
   ┃     ┗━ X ━┫
   ┃           ┗━━━ イギリス
   ┃
  ━┫             ┏━ 韓国
   ┃           ┏━┫
   ┃     ┏━ Y ━┫ ┗━ デンマーク
   ┃     ┃     ┃
   ┃     ┃     ┗━━━ カナダ
   ┗━ V ━┫
         ┃     ┏━━━ スイス
         ┗━ Z ━┫
               ┗━━━ 日本

次に、スウェーデンが優勝するためには、スウェーデンにとっての天敵は、イギリスと中国である。優勝するためには、初戦でイギリスと中国戦を回避しつつ、準決勝、決勝までに、イギリスと中国が敗退しているのが条件である。

スウェーデンが優勝するトーナメント表の例

                 ┏━ 中国
               ┏━┫
         ┏━ W ━┫ ┗━ ROC
         ┃     ┃
         ┃     ┗━━━ アメリカ
   ┏━ U ━┫
   ┃     ┃     ┏━━━ スウェーデン
   ┃     ┗━ X ━┫
   ┃           ┗━━━ 日本
   ┃
  ━┫             ┏━ 韓国
   ┃           ┏━┫
   ┃     ┏━ Y ━┫ ┗━ デンマーク
   ┃     ┃     ┃
   ┃     ┃     ┗━━━ スイス
   ┗━ V ━┫
         ┃     ┏━━━ イギリス
         ┗━ Z ━┫
               ┗━━━ カナダ

イギリスが優勝するためには、イギリスがUの山の場合、スイスとスウェーデンがVの山で対戦し、初戦で中国と対戦せず、準決勝までに中国が敗退し、決勝でスウェーデンと対戦するのが条件である。

イギリスが優勝するトーナメント表の例

                 ┏━ 中国
               ┏━┫
         ┏━ W ━┫ ┗━ ROC
         ┃     ┃
         ┃     ┗━━━ アメリカ
   ┏━ U ━┫
   ┃     ┃     ┏━━━ イギリス
   ┃     ┗━ X ━┫
   ┃           ┗━━━ 日本
   ┃
  ━┫             ┏━ 韓国
   ┃           ┏━┫
   ┃     ┏━ Y ━┫ ┗━ デンマーク
   ┃     ┃     ┃
   ┃     ┃     ┗━━━ スイス
   ┗━ V ━┫
         ┃     ┏━━━ スウェーデン
         ┗━ Z ━┫
               ┗━━━ カナダ

日本が優勝するためには、日本がVの山の場合、中国と韓国とイギリスとスイスとスウェーデンがUの山で対戦し、中国が1回戦で韓国に勝利し、準々決勝でイギリスに勝利し、準決勝でスウェーデンに勝利し、決勝で日本と中国が対戦するのが条件である。

日本が優勝するトーナメント表の例

                 ┏━ 中国
               ┏━┫
         ┏━ W ━┫ ┗━ 韓国
         ┃     ┃
         ┃     ┗━━━ イギリス
   ┏━ U ━┫
   ┃     ┃     ┏━━━ スイス
   ┃     ┗━ X ━┫
   ┃           ┗━━━ スウェーデン
   ┃
  ━┫             ┏━ デンマーク
   ┃           ┏━┫
   ┃     ┏━ Y ━┫ ┗━ ROC
   ┃     ┃     ┃
   ┃     ┃     ┗━━━ アメリカ
   ┗━ V ━┫
         ┃     ┏━━━ 日本
         ┗━ Z ━┫
               ┗━━━ カナダ

カナダが優勝するためには、カナダがVの山の場合、スイスとスウェーデンとイギリスがUの山で対戦し、Vの山の日本が準々決勝で敗退し、決勝でイギリスと対戦するのが条件である。

カナダが優勝するトーナメント表の例

                 ┏━ 中国
               ┏━┫
         ┏━ W ━┫ ┗━ ROC
         ┃     ┃
         ┃     ┗━━━ イギリス
   ┏━ U ━┫
   ┃     ┃     ┏━━━ スイス
   ┃     ┗━ X ━┫
   ┃           ┗━━━ スウェーデン
   ┃
  ━┫             ┏━ 韓国
   ┃           ┏━┫
   ┃     ┏━ Y ━┫ ┗━ デンマーク
   ┃     ┃     ┃
   ┃     ┃     ┗━━━ 日本
   ┗━ V ━┫
         ┃     ┏━━━ カナダ
         ┗━ Z ━┫
               ┗━━━ アメリカ

アメリカが優勝するためには、アメリカがVの山の場合、カナダと中国とイギリスとスイスとスウェーデンがUの山で対戦し、中国が1回戦でカナダに勝利し、準々決勝でイギリスに勝利し、準決勝でスウェーデンに勝利し、Vの山の日本が準々決勝で敗退し、決勝で中国と対戦するのが条件である。

アメリカが優勝するトーナメント表の例

                 ┏━ カナダ
               ┏━┫
         ┏━ W ━┫ ┗━ 中国
         ┃     ┃
         ┃     ┗━━━ イギリス
   ┏━ U ━┫
   ┃     ┃     ┏━━━ スイス
   ┃     ┗━ X ━┫
   ┃           ┗━━━ スウェーデン
   ┃
  ━┫             ┏━ デンマーク
   ┃           ┏━┫
   ┃     ┏━ Y ━┫ ┗━ ROC
   ┃     ┃     ┃
   ┃     ┃     ┗━━━ アメリカ
   ┗━ V ━┫
         ┃     ┏━━━ 日本
         ┗━ Z ━┫
               ┗━━━ 韓国

中国が優勝するためには、中国がUの山の場合、日本とスウェーデンとスイスがVの山で対戦し、デンマークとROCとの初戦の対戦を回避しつつ、デンマークとROCが準決勝までに敗退し、中国がUの山でイギリスとカナダに勝利し、決勝でスウェーデンと対戦するのが条件である。

中国が優勝するトーナメント表の例

                 ┏━ カナダ
               ┏━┫
         ┏━ W ━┫ ┗━ 韓国
         ┃     ┃
         ┃     ┗━━━ アメリカ
   ┏━ U ━┫
   ┃     ┃     ┏━━━ イギリス
   ┃     ┗━ X ━┫
   ┃           ┗━━━ 中国
   ┃
  ━┫             ┏━ デンマーク
   ┃           ┏━┫
   ┃     ┏━ Y ━┫ ┗━ ROC
   ┃     ┃     ┃
   ┃     ┃     ┗━━━ スイス
   ┗━ V ━┫
         ┃     ┏━━━ スウェーデン
         ┗━ Z ━┫
               ┗━━━ 日本

最後に、韓国が優勝するためには、韓国がUの山の場合、スイスとスウェーデンとイギリスがVの山で対戦し、Uの山のカナダが準々決勝で敗退し、Vの山のイギリスが準決勝でスウェーデンに勝利し、決勝でイギリスと対戦するのが条件である。

韓国が優勝するトーナメント表の例

                 ┏━ カナダ
               ┏━┫
         ┏━ W ━┫ ┗━ デンマーク
         ┃     ┃
         ┃     ┗━━━ 日本
   ┏━ U ━┫
   ┃     ┃     ┏━━━ 韓国
   ┃     ┗━ X ━┫
   ┃           ┗━━━ ROC
   ┃
  ━┫             ┏━ アメリカ
   ┃           ┏━┫
   ┃     ┏━ Y ━┫ ┗━ 中国
   ┃     ┃     ┃
   ┃     ┃     ┗━━━ イギリス
   ┗━ V ━┫
         ┃     ┏━━━ スイス
         ┗━ Z ━┫
               ┗━━━ スウェーデン

最後に

前回、カーリング女子・最終予選の総当たり対戦成績表から、トーナメント方式に置き換えた場合の、優勝するチームをPythonスクリプトで作成してみました。今回、2022年北京オリンピック・カーリング女子の出場チームが10チームになったことで、9チームの時のスクリプトを修正して10チームに対応してみましたが、1チーム増えるだけで、組合せがかなり増える結果となりました。もはやここまで来ると、スクリプト無しに計算だけで全ての組合せを計算するのは、私には不可能な領域に達しています。

また、当初、9チームの時のスクリプトをそのまま使用していたのですが、今まで出現したトーナメントの組合せを配列で持たせ、新たな組合せが出現したら、配列に追加するという方法を取っていたのですが、それを10チームのトーナメントで試すと、丸一日スクリプトを動かしても、スクリプトが最後まで走り切ることができませんでした。今回の工夫した点は、配列から辞書型に変更し、試したトーナメントと同じ組合せを辞書のキーの値で削除するという方法に変更すると、30秒であっという間にスクリプトが全て走り終わりました。

総当たり戦で、8勝1敗と好成績を収めたスイスが、意外にも7勝2敗のスウェーデンにトーナメントの優勝確率で、45.91-39.38=6.53%と水を開けられているのに驚きました。今回も、実際にスクリプトを動かしてみて、初めて気付かされることがたくさんありました。
最後まで、この記事を読んでいただき、ありがとうございました。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0