3zz*_*zzy -1 python pseudocode
def solve(numLegs, numHeads):
for numChicks in range(0, numHeads + 1):
numPigs = numHeads - numChicks
totLegs = 4*numPigs + 2*numChicks
if totLegs == numLegs:
return [numPigs, numChicks]
return [None, None]
def barnYard(heads, legs):
pigs, chickens = solve(legs, heads)
if pigs == None:
print "There is no solution."
else:
print 'Number of pigs: ', pigs
print 'Number of Chickens: ', chickens
Run Code Online (Sandbox Code Playgroud)
我正在学习Python并且遇到了这个例子,有人可以用简单的英语(或伪代码)解释这是一行一行的.
非常感谢
solve 计算总共达到给定数量的头部和腿部需要多少只小鸡(1头,2条腿)和多少头猪(1头,4腿).
它使用"蛮力",即最简单的方法:
for
numChicks in range(0, numHeads +
1):,因为range从包含的起始值到排除的结束值给出整数);numChicks它通过声明计算将提供所需数量的头的猪数量numPigs = numHeads - numChickstotLegs = 4*numPigs + 2*numChickstotLegs等于所请求的数字:如果是,它返回一个包含两个项目的列表,解决问题的小鸡和猪的数量for没有返回值的情况下"落在循环的底部" ,它知道没有解决方案,并且表示通过返回其中两个项目的每个列表None.barnYard只需将解决方案委托给solve,并以一种可读的方式打印出来,或者作为"无解决方案"或者装饰精美的小鸡和猪.
现在,为了不断进步,问问自己是否solve可以更有效地编写.显然没有解决方案,如果腿的数量少于头数的两倍,或者是头数的四倍以上,或者奇数 - 也许solve可以测试这些情况并[None, None]立即返回.你可以编码......?
它可能并不明显,但是头和腿的数量的每个其他组合都有一个解决方案 - 并且有一种方法可以通过算术找到它,而不需要循环.考虑一下,也许在小学中学代数的帮助下......
| 归档时间: |
|
| 查看次数: |
1045 次 |
| 最近记录: |