calculate_weapon_damage()
関数を実装する
このステップでは、2 種類のレーザー兵器のダメージ値を計算する calculate_weapon_damage()
関数を実装します。
calculate_weapon_damage.py
ファイルの中で、次のシグネチャで calculate_weapon_damage()
関数を定義します。
def calculate_weapon_damage(test1: List[int], test2: List[int]) -> List[int]:
## ここにコードを記述します
pass
-
兵器 A と兵器 B のダメージ値を計算するロジックを実装します。以下の手順を参考にしてください。
- 入力配列
test1
と test2
が正しい長さ(それぞれ 3 要素)であることを確認します。そうでない場合は、空のリスト []
を返します。
- 入力配列から値を変数
a1
, b1
, total1
および a2
, b2
, total2
に展開します。
- 連立一次方程式を解いて、ダメージ値
x
(兵器 A 用)と y
(兵器 B 用)を求めます。以下の方程式を使用できます。
a1 * x + b1 * y = total1
a2 * x + b2 * y = total2
- 計算された
x
と y
の値を整数に変換し、リスト [x, y]
として返します。
- 方程式を解く際に
ZeroDivisionError
が発生した場合は、空のリスト []
を返します。
コードは以下の通りです。
def calculate_weapon_damage(test1: List[int], test2: List[int]) -> List[int]:
if len(test1)!= 3 or len(test2)!= 3:
return []
a1, b1, total1 = test1
a2, b2, total2 = test2
## a1 * x + b1 * y = total1
## a2 * x + b2 * y = total2
try:
y = (total1 * a2 - total2 * a1) / (b1 * a2 - b2 * a1)
x = (total1 - b1 * y) / a1
except ZeroDivisionError:
return []
return [int(x), int(y)]
-
ファイルの末尾に次のコードを追加して、calculate_weapon_damage()
関数をテストします。
if __name__ == "__main__":
print(calculate_weapon_damage([4, 5, 22], [3, 2, 13]))
これにより、スクリプトを実行したときに計算されたダメージ値が表示されます。