総当たり戦アルゴリズムをPythonで書いてみる(2)

前回、総当たり戦でのすべてのカードを書き出すコードを書いてみたが、一部、defを使った関数で書き換えてみる。

print("*** Round Robin ***")

members = int(input("number of member :"))
print(members)

n = members
w = 1
x = [i for i in range(1, n, 2)]
y = [i for i in range(2, n+1, 2)]

def first_card():
   print("Week {}".format(w))
   for i in range(len(x)):
       print("{}-{}".format(x[i], y[i]))

def change_card():
   x.append(y[len(x)-1])
   y.insert(0, x[1])
   x.pop(1)
   y.pop()


first_card()

for w in range(2, n):
   change_card()
   first_card()

12チームによる総当たり戦は、以下のようになった。

*** Round Robin ***
number of member :12
12
Week 1
1-2
3-4
5-6
7-8
9-10
11-12
Week 2
1-3
5-2
7-4
9-6
11-8
12-10
Week 3
1-5
7-3
9-2
11-4
12-6
10-8
Week 4
1-7
9-5
11-3
12-2
10-4
8-6
Week 5
1-9
11-7
12-5
10-3
8-2
6-4
Week 6
1-11
12-9
10-7
8-5
6-3
4-2
Week 7
1-12
10-11
8-9
6-7
4-5
2-3
Week 8
1-10
8-12
6-11
4-9
2-7
3-5
Week 9
1-8
6-10
4-12
2-11
3-9
5-7
Week 10
1-6
4-8
2-10
3-12
5-11
7-9
Week 11
1-4
2-6
3-8
5-10
7-12
9-11



この記事が気に入ったらサポートをしてみませんか?