python博弈论代码_牛牛博弈编程算法(python)

这篇博客探讨了在Python中实现牛牛博弈的两种算法。作者首先介绍了直观的算法,该算法在计算机生成的数字包含重复数字时无法正确计数。接着,作者尝试改进算法,但仍遇到重复数字导致的计数错误。尽管这两种算法在没有重复数字的情况下表现良好,但作者对如何解决这个问题感到困惑。
摘要由CSDN通过智能技术生成

我想把牛和公牛的数量介于两个数字之间。其中一个由计算机生成,另一个由用户猜测。我已经解析了两个数字,现在我有两个列表,每个列表有三个元素,每个元素都是数字中的一个数字。所以:

237将给出列表[2,3,7]。我确保相关的索引被维护,一般的模式是:(hundreds, tens, units)。

这两个列表存储在两个列表中:machine和person。

算法1

所以,我写了以下代码,最直观的算法:

在循环开始之前,cows和bulls被初始化为0。for x in person:

if x in machine:

if machine.index(x) == person.index(x):

bulls += 1

print x,' in correct place'

else:

print x,' in wrong place'

cows += 1

我开始用电脑猜出的不同类型的数字来测试这个。

很随机,我决定277。我猜是447。在这里,我首先得到了这个算法可能行不通的线索。我有1头牛和0头公牛。我应该有一头牛和一头牛。

这是第一个算法的输出表:Guess Output Expected Output

447 0 bull, 1 cow 1 bull, 0 cow

477 2 bulls, 0 cows 2 bulls, 0 cows

777 0 bulls, 3 cows 2 bulls, 0 cows

所以很明显,当计算机随机选择的数字中有重复的数字时&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值