teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

組み合わせ処理のコードを追記、その後出力値がいまだ不備がある

2018/04/14 06:34

投稿

python3_beginer
python3_beginer

スコア46

title CHANGED
File without changes
body CHANGED
@@ -123,4 +123,75 @@
123
123
  × 〇 〇 〇 -
124
124
 
125
125
 
126
+ ```
127
+
128
+ #追記質問
129
+
130
+ ゲーム結果の組み合わせの処理が抜けているとご指摘を受けました。
131
+ 組み合わせ処理を追記後、トーナメント表の結果の空欄部分に勝敗の結果を記載できた。
132
+ しかし、トーナメント表の同じ人間同士の結果にまで勝敗の結果が入ってしまった。
133
+ 本来は、同じ人間同士のため結果表は'-'の表示のままにしたい。
134
+
135
+ 重ね重ね申し訳ありません。原因がお分かりの方がいらっさいましたら教えて頂きたいです。
136
+
137
+ また、質問内容の記述が分かりづらい点がいくつかありまして申し訳ございませんでした。
138
+
139
+
140
+
141
+
142
+ ```ここに言語を入力
143
+ コード
144
+
145
+
146
+ import itertools
147
+
148
+ #プレイヤーの数
149
+ N = int(input())
150
+
151
+ #ゲームの結果表示のボード作成
152
+ data_1 = [
153
+ list('-'*N) for _ in range(N)
154
+ ]
155
+ print('\n'.join(map(' '.join, data_1)))
156
+
157
+ # ゲームの結果
158
+ data = [
159
+ list(map(int,input().split())) for _ in range(N)
160
+ ]
161
+
162
+ x,y = zip(*data)
163
+ print(x,y)
164
+
165
+ #ゲーム結果の組み合わせ
166
+ data_trans = list(itertools.product(x,y))
167
+ x,y = zip(*data_trans)
168
+ print(x,y)
169
+
170
+
171
+ #ゲームボードに、結果を代入する
172
+ for a,b in zip(x,y):
173
+ data_1[a-1][b-1] = 'W'
174
+ data_1[b-1][a-1] = 'L'
175
+ print('\n'.join(map(' '.join, data_1)))
176
+
177
+
178
+ 出力値
179
+
180
+ - 〇 〇 〇 〇
181
+ × × × 〇 〇
182
+ × 〇 × 〇 〇
183
+ × × × - 〇
184
+ × × × 〇 ×
185
+
186
+
187
+ 期待値
188
+ - 〇 〇 〇 〇
189
+ × - 〇 〇 ×
190
+ × × - 〇 〇
191
+ × × × - ×
192
+ × 〇 〇 〇 -
193
+
194
+
195
+
196
+
126
197
  ```

1

質問の内容をより具体的に訂正しました。

2018/04/14 06:34

投稿

python3_beginer
python3_beginer

スコア46

title CHANGED
File without changes
body CHANGED
@@ -56,15 +56,9 @@
56
56
  - - - - -
57
57
  - - - - -
58
58
 
59
- 次に入力例から取得した値を、上記のリストのindexに代入し、結果を表示
59
+ 次に入力例から取得した値を、上記のリストのindexに代入し、以下のような結果を表示したい
60
60
 
61
- 入力例1
62
- 3
63
- 1 3
64
- 2 1
65
- 2 3
66
61
 
67
-
68
62
  - 〇 〇 〇 〇
69
63
  × - 〇 〇 ×
70
64
  × × - 〇 〇
@@ -73,13 +67,12 @@
73
67
 
74
68
 
75
69
  ```
70
+
76
71
 
77
72
  問題)
78
73
 
79
- ナメント作成までは順調
74
+ 上記の方法でコドを作成するも期待値と出力値がずれてしった。
80
75
 
81
- 入力例から得た数字を、リストの項数に代入すると出力値がずれてしまった。
82
-
83
76
  正しく出力するためには何が必要なのか教えて頂きたいです。
84
77
 
85
78
 
@@ -120,31 +113,14 @@
120
113
  × 〇 - - -
121
114
 
122
115
 
123
- ```
124
116
 
125
- #追記
126
117
 
118
+ 期待値
127
- ゲームボードに、結果を代入する処理コードについて
119
+ - 〇 〇 〇 〇
120
+ × - 〇 〇 ×
121
+ × × - 〇 〇
122
+ × × × - ×
123
+ × 〇 〇 〇 -
128
124
 
129
- そのまま、記入例から得た数字をトーナメント表のindexに代入すると以下のようなエラーがでてしまう。
130
- そのため、上記のコードのように項数をひとつさげた。
131
125
 
132
- ```ここに言語を入力
133
- コード
134
-
135
- #ゲームボードに、結果を代入する
136
- for a,b in zip(x,y):
137
- data_1[a][b] = '〇'
138
- data_1[b][a] = '×'
139
- print('\n'.join(map(' '.join, data_1)))
140
-
141
-
142
-
143
- Traceback (most recent call last):
144
- File "Main.py", line 22, in <module>
145
- data_1[a][b] = '〇'
146
- IndexError: list index out of range
147
-
148
- ```
126
+ ```
149
-
150
- エラーが出てしまう。そのため以下のようなコードで対応