回答編集履歴

3

修正の修正

2018/04/15 23:04

投稿

LouiS0616
LouiS0616

スコア35658

test CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
  first_winner = sorted(
42
42
 
43
- [get_winner(first_record, *player_pair) for player_pair in cards], key=int
43
+ [get_winner(first_record, *players) for players in cards], key=int
44
44
 
45
45
  )
46
46
 
@@ -110,7 +110,7 @@
110
110
 
111
111
  record = read_record(players)
112
112
 
113
- players = [get_winner(record, *players) for players in cards]
113
+ players = [get_winner(record, *player_pair) for player_pair in cards]
114
114
 
115
115
 
116
116
 

2

コード修正

2018/04/15 23:04

投稿

LouiS0616
LouiS0616

スコア35658

test CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
  first_winner = sorted(
42
42
 
43
- [get_winner(first_record, *players) for players in cards], key=int
43
+ [get_winner(first_record, *player_pair) for player_pair in cards], key=int
44
44
 
45
45
  )
46
46
 

1

追記

2018/04/15 23:02

投稿

LouiS0616
LouiS0616

スコア35658

test CHANGED
@@ -59,3 +59,71 @@
59
59
 
60
60
 
61
61
  [Wandbox](https://wandbox.org/permlink/hsolmIdzUMe1i1sx)
62
+
63
+
64
+
65
+ 要件によっては
66
+
67
+ ---
68
+
69
+ 単に一位を出力すればいいならもうちょっとスマートになるんですがね。
70
+
71
+ ```Python
72
+
73
+ def get_winner(record, player1, player2):
74
+
75
+ if record[player1] < record[player2]:
76
+
77
+ return player1
78
+
79
+
80
+
81
+ return player2
82
+
83
+
84
+
85
+
86
+
87
+ def read_record(player_names):
88
+
89
+ return {
90
+
91
+ p: int(r) for p, r in zip(player_names, input().split())
92
+
93
+ }
94
+
95
+
96
+
97
+
98
+
99
+ cards = [
100
+
101
+ input().split() for _ in range(2)
102
+
103
+ ]
104
+
105
+
106
+
107
+ players = list('1234')
108
+
109
+ while len(players) != 1:
110
+
111
+ record = read_record(players)
112
+
113
+ players = [get_winner(record, *players) for players in cards]
114
+
115
+
116
+
117
+ cards = list(
118
+
119
+ zip(*[iter(players)]*2)
120
+
121
+ )
122
+
123
+ players = sorted(players, key=int)
124
+
125
+
126
+
127
+ print(*players)
128
+
129
+ ```