質問編集履歴

1

プログラムの追加

2020/06/05 07:34

投稿

Lycoris
Lycoris

スコア1

test CHANGED
File without changes
test CHANGED
@@ -1 +1,223 @@
1
1
  8人トーナメントでの全ての組み合わせを出力したいのですが、いいアイデアが思いつきません。順列から徐々に減らしていこうとも思いましたが、非効率だなと思いました。総数は315であることはわかっています。pythonかc言語で回答してくださると嬉しいです。よろしくお願いします。
2
+
3
+ 追記
4
+
5
+ ```python
6
+
7
+ import itertools
8
+
9
+ i=0
10
+
11
+ list2=[]
12
+
13
+ list3=[]
14
+
15
+ list4=[]
16
+
17
+ list5=[]
18
+
19
+ list6=[]
20
+
21
+ l = [1,2,3,4]
22
+
23
+ list1=list(itertools.permutations(l,4))
24
+
25
+ #print(list1)
26
+
27
+ print()
28
+
29
+
30
+
31
+ for i in range(24):
32
+
33
+ list2+=[[list1[i][:2],list1[i][2:4]]]
34
+
35
+ #print(list2)
36
+
37
+ print()
38
+
39
+
40
+
41
+ for k in range(24):
42
+
43
+ for l in range(2):
44
+
45
+ list3+=sorted(list2[k][l])
46
+
47
+ #print(list3)
48
+
49
+ print()
50
+
51
+
52
+
53
+ for n in range(0,24*4-3,4):
54
+
55
+ list4+=[((list3[n],list3[n+1]),(list3[n+2],list3[n+3]))]
56
+
57
+ #print(list4)
58
+
59
+ print()
60
+
61
+
62
+
63
+ for m in range(24):
64
+
65
+ list5+=sorted(list4[m])
66
+
67
+ #print(list5)
68
+
69
+ print()
70
+
71
+
72
+
73
+ for o in range(0,45,2):
74
+
75
+ list6+=[(list5[o],list5[o+1])]
76
+
77
+ #print(list6)
78
+
79
+ set(list6)
80
+
81
+ ```
82
+
83
+ ```python
84
+
85
+ import itertools
86
+
87
+ list2=[]
88
+
89
+ list3=[]
90
+
91
+ list4=[]
92
+
93
+ list5=[]
94
+
95
+ list6=[]
96
+
97
+ list7=[]
98
+
99
+ list8=[]
100
+
101
+ list9=[]
102
+
103
+ list10=[]
104
+
105
+ list11=[]
106
+
107
+ list12=[]
108
+
109
+ a = [1,2,3,4,5,6,7,8]
110
+
111
+ list1=list(itertools.permutations(a,8))
112
+
113
+ #print(list1)
114
+
115
+ print()
116
+
117
+
118
+
119
+ for i in range(40320):
120
+
121
+ list2+=[[list1[i][:4],list1[i][4:8]]]
122
+
123
+ #print(list2)
124
+
125
+ print()
126
+
127
+
128
+
129
+ for k in range(40320):
130
+
131
+ for l in range(2):
132
+
133
+ list3+=[[list2[k][l][:2],list2[k][l][2:4]]]
134
+
135
+ #print(list3)
136
+
137
+
138
+
139
+ for s in range(80640):
140
+
141
+ for t in range(2):
142
+
143
+ list4+=sorted(list3[s][t])
144
+
145
+ #print(list4)
146
+
147
+
148
+
149
+ for x in range(0,40320*8-7,8):
150
+
151
+ list5+=[([(list4[x],list4[x+1]),(list4[x+2],list4[x+3])],[(list4[x+4],list4[x+5]),(list4[x+6],list4[x+7])])]
152
+
153
+ #print(list5)
154
+
155
+
156
+
157
+ for p in range(40320):
158
+
159
+ for q in range(2):
160
+
161
+ list6+=sorted(list5[p][q])
162
+
163
+ #print(list6)
164
+
165
+
166
+
167
+ for g in range(0,40320*4-3,4):
168
+
169
+ list7+=[(list6[g],list6[g+1]),(list6[g+2],list6[g+3])]
170
+
171
+ #print(list7)
172
+
173
+
174
+
175
+ for s in range(40320*2):
176
+
177
+ for t in range(2):
178
+
179
+ for u in range(2):
180
+
181
+ list8+=[list7[s][t][u]]
182
+
183
+ #print(list8)
184
+
185
+
186
+
187
+ for y in range(0,40320*8-7,8):
188
+
189
+ list9+=[((list8[y],list8[y+1],list8[y+2],list8[y+3]),(list8[y+4],list8[y+5],list8[y+6],list8[y+7]))]
190
+
191
+ #print(list9)
192
+
193
+
194
+
195
+ for h in range(40320):
196
+
197
+ list10+=sorted(list9[h])
198
+
199
+ #print(list10)
200
+
201
+
202
+
203
+ for s in range(40320*2):
204
+
205
+ for t in range(4):
206
+
207
+ list11+=[list10[s][t]]
208
+
209
+ #print(list11)
210
+
211
+
212
+
213
+ for z in range(0,40320*8-7,8):
214
+
215
+ list12+=[((list11[z],list11[z+1]),(list11[z+2],list11[z+3]),(list11[z+4],list11[z+5]),(list11[z+6],list11[z+7]))]
216
+
217
+ #print(list12)
218
+
219
+ set(list12)
220
+
221
+ ```
222
+
223
+ 一応プログラムとしては4人の場合を考えて、無理やり8人に変えたのを製作しています。しかし、あまりにも無理やりで汚すぎたので、投稿してみました。