使用python模拟斐波那契兔子与多个后代



假设我从一对兔子开始,每对繁殖3对兔子。 让新的兔子对N和成熟的兔子对M

 N    0 
 M    1
MNNN  4
MNNN MMM MMM MMM 19 

所以这个系列是0 1 4 19

我们如何在 Python 上使用循环执行此操作:

我试过了:

x="N" #new rabbit pair
x=x.replace("N","M")
x
'M' #Mature rabbit pair
x=x.replace("M","MNNN")
x
'MNNN'
x=x.replace("M","MN")
x=x.replace("N","M")
x
'MNNNMMM'

如何使用 xrange/range 函数将其放入循环中。

谢谢

单个步骤的过程是将所有'M'替换为 'MNNN',将所有'N'替换为 'M' ,因此:

def step(state):
    return ''.join(['MNNN' if s == 'M' else 'M' for s in state])

例如:

>>> s = 'N'
>>> for _ in range(5):
    print s, len(s)
    s = step(s)

N 1
M 1
MNNN 4
MNNNMMM 7
MNNNMMMMNNNMNNNMNNN 19
你可以

尝试这样的事情 -

mature = 'M'
kid = 'N'
start = 'N'
for i in range(10):
    ms = start.count(mature)
    start = start.replace(kid ,mature)
    start = start + kid * (ms * 3)
    print(start)

对于性能和内存使用情况 - 您可以使用 -

mature = 'M'
kid = 'N'
start = (0,1)
print(mature * start[0] + kid * start[1])
for i in range(10):
    newmature = start[1] 
    newkid = start[0] * 3
    start = (start[0] + newmature , start[1] + newkid - newmature)
    print(mature * start[0] + kid * start[1] + " - " + str(start[0] + start[1]))

相关内容

  • 没有找到相关文章

最新更新