目標)
あるゲームのトーナメント表をつくたい
参加者全員の総当たりゲーム
引き分けは無し、必ず勝ちか負けかの判定がでる
参加人数は未定でN人とする
N=3のとき
参加者数: 3 (参加者 1 ~ 3)
結果報告:
参加者 1 と 3 が試合を行い、参加者 1 の勝利
参加者 1 と 2 が試合を行い、参加者 2 の勝利
参加者 2 と 3 が試合を行い、参加者 2 の勝利
コード トーナメント表結果の参考例 1 2 3 1 - L W 2 W - W 3 L L - 上記のように、勝者なら〇,敗者なら×を記入する形式 ''' 入力例1 3 1 3 2 1 2 3 出力例1 - × 〇 〇 - 〇 × × - '''
解き方)
コード まず、以下のようなトーナメント表をリストを利用して作成する - - - - - - - - - - - - - - - - - - - - - - - - - 次に入力例から取得した値を、上記のリストのindexに代入し、以下のような結果を表示したい - 〇 〇 〇 〇 × - 〇 〇 × × × - 〇 〇 × × × - × × 〇 〇 〇 -
問題)
上記の方法でコードを作成するも期待値と出力値がずれてしまった。
正しく出力するためには何が必要なのか教えて頂きたいです。
コード #プレイヤーの数 N = int(input()) #ゲームの結果表示のボード作成 data_1 = [ list('-'*N) for _ in range(N) ] print('\n'.join(map(' '.join, data_1))) # ゲームの結果 data = [ list(map(int,input().split())) for _ in range(N) ] x,y = zip(*data) print(x,y) #ゲームボードに、結果を代入する for a,b in zip(x,y): data_1[a-1][b-1] = 'W' data_1[b-1][a-1] = 'L' print('\n'.join(map(' '.join, data_1))) 出力値 - - - 〇 〇 - - 〇 - × - × - 〇 - × - × - - × 〇 - - - 期待値 - 〇 〇 〇 〇 × - 〇 〇 × × × - 〇 〇 × × × - × × 〇 〇 〇 -
#追記質問
ゲーム結果の組み合わせの処理が抜けているとご指摘を受けました。
組み合わせ処理を追記後、トーナメント表の結果の空欄部分に勝敗の結果を記載できた。
しかし、トーナメント表の同じ人間同士の結果にまで勝敗の結果が入ってしまった。
本来は、同じ人間同士のため結果表は'-'の表示のままにしたい。
重ね重ね申し訳ありません。原因がお分かりの方がいらっさいましたら教えて頂きたいです。
また、質問内容の記述が分かりづらい点がいくつかありまして申し訳ございませんでした。
コード import itertools #プレイヤーの数 N = int(input()) #ゲームの結果表示のボード作成 data_1 = [ list('-'*N) for _ in range(N) ] print('\n'.join(map(' '.join, data_1))) # ゲームの結果 data = [ list(map(int,input().split())) for _ in range(N) ] x,y = zip(*data) print(x,y) #ゲーム結果の組み合わせ data_trans = list(itertools.product(x,y)) x,y = zip(*data_trans) print(x,y) #ゲームボードに、結果を代入する for a,b in zip(x,y): data_1[a-1][b-1] = 'W' data_1[b-1][a-1] = 'L' print('\n'.join(map(' '.join, data_1))) 出力値 - 〇 〇 〇 〇 × × × 〇 〇 × 〇 × 〇 〇 × × × - 〇 × × × 〇 × 期待値 - 〇 〇 〇 〇 × - 〇 〇 × × × - 〇 〇 × × × - × × 〇 〇 〇 -
回答1件
あなたの回答
tips
プレビュー