回答編集履歴

1

追記0

2022/04/19 10:49

投稿

BeatStar
BeatStar

スコア4962

test CHANGED
@@ -110,3 +110,50 @@
110
110
 
111
111
  となっています。
112
112
 
113
+ -----
114
+
115
+ [追記0]
116
+
117
+ さらに(3)以降も冗長です。仕様を確認してください。
118
+ ``弱 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < 10 < 11 < 12 < 13 < 1 強``となっています。
119
+
120
+ この場合、「**規則性を見付ける**」ことや「**言い換え**」て考えてみるのも手です。
121
+
122
+ 強い手や弱い手の並びを見ると、常に 2から13まではそのまま昇順になっている。ただし、なぜか1だけが例外で「13」より強い。
123
+ でも基本的には「整数の昇順」なので13の次は14です。この1が2よりは弱い…のように特殊条件があれば別ですが今回に限っては単純に``2~13 < 1`` なので
124
+ 1を14と置き換えてもよさそうです。
125
+
126
+ そうすれば、``弱 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < 10 < 11 < 12 < 13 < 14 強``と単純に2から14まで昇順で並んでいるだけです。
127
+ 整数の場合 ``A > B`` とかで調べればいいですね。
128
+
129
+ で、今回は「Aが強ければ"Alice"と表示し、Bが強ければ"Bob"と表示し…」とあるので、``A < B``のパターンと``A > B``のパターンと分離しなければならない木がしますが、候補は「Aが強い」「Bが強い」「AとBは同じ(= 互角)」の三つだけです。
130
+
131
+ ということは、
132
+ AとBは同じかどうか ->違うならどちらかが強い
133
+ なので
134
+
135
+ ```
136
+ i. AとBが同じかどうか => 「互角」
137
+ ii. Aの方が大きいか
138
+ ii.i. 「アリス」
139
+ iii. (そうじゃなくて)Bの方が大きいか
140
+ iii.i. 「ボブ」
141
+ ```
142
+
143
+ のようにできるはずです。だって(i)を満たした時点で「互角」的なものを表示したらそれ以上の処理はありません。
144
+ なので上記のように省略できるはずです。
145
+
146
+ さらに 普通に整数を比較するときも「大きい」「小さい」「同じ」しかあり得ないので、「同じ」がすでに出ていて除外される以上、
147
+ 2分の1しかありません。「大きい」か「小さい」。「大きい」が満たされないのなら「小さい」しかあり得ません。
148
+
149
+ つまり、elif を使って条件式を指定するまでもなく「それ以外なら」が使えるはずです。
150
+
151
+ ということは、
152
+ ```
153
+ 1. データを取得
154
+ 2.データが1のときだけ変換
155
+ 3. 後は比較して回答
156
+ ```
157
+ ようにすればいいはずです。
158
+
159
+ シンプルに考えるとわかりやすいかも。