2015-06-17 2 views
0

Предположим, что я начинаю с одной пары кроликов, и каждая пара воспроизводит 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.

Благодаря

+0

Вы уверены? Я бы ожидал, что шаг 4 будет «MNNNMMM» – jonrsharpe

ответ

1

Процесс для одного шага, чтобы заменить все 'M' s с 'MNNN' и все 'N' s с '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 
+0

Спасибо @Jonrsharpe ... Этот метод очень быстрый :) – Learner27

1

Вы можете попробовать что-то вроде этого -

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])) 
+0

Спасибо @Anand .. он работает :) – Learner27

+0

Я бы посоветовал вам принять ответ, как правило, не только этот вопрос, который бы поддерживал мотивацию сообщества и кого-либо другой, кто приходит, чтобы взглянуть на вопрос в будущем, знал бы, где искать ответ. –

+0

Почему вы беспокоитесь о назначении, а не использовании «зрелого» и «малыша»? Это не поддерживает порядок, хотя это может и не быть важным. – jonrsharpe

Смежные вопросы