python - 在三个骰子的列表中滚动两个骰子时找到最大值
问题描述
我有以下函数,它将两 (2) 个六面骰子作为输入,并确定其中哪个骰子的数量更大。 请注意,骰子不一定有数字 1-6。
def count_number_of_wins(die_1, die_2):
die_1_larger = 0
die_2_larger = 0
for i in range(6):
for j in range(6):
if die_1[i] > die_2[j]:
die_1_larger += 1
elif die_1[i] < die_2[j]:
die_2_larger +=1
return (die_1_larger, die_2_larger)
现在,我使用这个函数来确定其中哪个骰子是“最好的”三个骰子的输入列表。我拿了一份骰子列表,并确定其中一个骰子是否比列表中的其他骰子更好。如果骰子获胜的频率更高,则骰子“更好”。在这种情况下,我返回其从 0 开始的索引。如果不存在这样的骰子,则返回-1。
这是用于该功能的功能:
def determine_best_die(dice):
assert all(len(dice) == 6 for die in dice)
wins = [0] * len(dice)
for i in range(len(dice)):
for j in range(i+1, len(dice)):
a, b = count_number_of_wins(dice[i], dice[j])
if a > b:
wins[i] = wins[i] + 1
else:
wins[j] = wins[j] + 1
for i in wins:
if (i == (len(dice)-1)):
return wins.index(i)
此功能在这种情况下失败:
[1, 1, 6, 6, 8, 8], [2, 2, 4, 4, 9, 9], [3, 3, 5, 5, 7, 7]
我希望它返回-1,它返回0。
任何人都可以看到问题出在determine_best_die()
函数中吗?
谢谢!
解决方案
def count_number_of_wins(die_1, die_2):
die_1_larger = 0
die_2_larger = 0
for i in range(6):
for j in range(6):
if die_1[i] > die_2[j]:
die_1_larger += 1
elif die_1[i] < die_2[j]:
die_2_larger +=1
return (die_1_larger, die_2_larger)
def determine_best_die(dice):
assert all(len(die) == 6 for die in dice)
wins = [0] * len(dice)
for i in range(len(dice)):
for j in range(i+1, len(dice)):
a, b = count_number_of_wins(dice[i], dice[j])
if a > b:
wins[i] = wins[i] + 1
else:
wins[j] = wins[j] + 1
for i in wins:
if (i == (len(dice)-1)):
return wins.index(i)
return -1
我添加了 -1 的情况,当没有骰子赢得其余所有骰子时,就会发生这种情况。断言语句也在检查 len(dice) 而不是 len(die)
print (determine_best_die([[3,3, 6, 6, 8, 8], [2, 2, 4, 4, 9, 9], [3, 3, 5, 5, 7, 7]]))
返回 0,因为第一个骰子赢得了第二个和第三个骰子,而原始失败的测试用例
print (determine_best_die([[1, 1, 6, 6, 8, 8], [2, 2, 4, 4, 9, 9], [3, 3, 5, 5, 7, 7]]))
返回 -1
推荐阅读
- android-studio - Android 3.3 和 ConstraintLayout 问题
- python-3.x - 无法从 usaddress-scourgify 中的 yamlconf 导入配置
- node.js - Mongoose 模式验证:验证非必填字段时出现空字符串错误
- javascript - JS 用于将纯 html 表转换为 Bootstrap 表
- mysql - 如果字段不为空,MYSQL 连接三个表
- swift - 无法转换“数据”类型的值?到预期的参数类型'UIImage
- r - 如何使用 doPostBack 在 R 中抓取动态表?
- python - ImportError:无法导入名称“_validate_lengths”
- selenium - 如何杀死保持 Web 浏览器打开的 WebDriver 实例
- logstash-grok - AWS Glue 自定义 grok 分类器不起作用