【发布时间】:2022-12-11 23:38:21
【问题描述】:
我遇到了麻烦
给定两个数组,其中值是每个士兵的力量,如果你在攻击中幸存则返回真,如果你死了则返回假。
条件
每个士兵攻击数组相同索引中的对方士兵。幸存者是具有最高价值的数字。
如果价值相同,他们都会灭亡
如果其中一个值是空的(不同的数组长度),则非空值士兵会存活下来。
为了生存,防御方必须比攻击方有更多的幸存者。
如果双方的幸存者人数相同,则初始攻击力最高的一方获胜。如果双方的总攻击力相同则返回真。
初始攻击力是每个数组中所有值的总和。
这是我尝试做的- 它通过了大约一半的测试,并为另一半返回错误的值。我不知道为什么
def is_defended(attackers, defenders):
survivors_a = 0
survivors_b = 0
if attackers < defenders:
survivors_b+=1
if attackers > defenders:
survivors_a+=1
if attackers == defenders:
survivors_a+=0
survivors_b+=0
if survivors_a == survivors_b and sum(attackers) > sum(defenders):
return False
if survivors_a == survivors_b and sum(attackers) < sum(defenders):
return True
if survivors_a == survivors_b and sum(attackers) == sum(defenders):
return True
elif survivors_a > survivors_b:
return False
elif survivors_a < survivors_b:
return True
【问题讨论】:
-
假设
attackers和defenders是数组,您没有进行任务涉及的任何成对比较。