Подсчет шагов в гипотезе КоллатцаPython

Программы на Python
Ответить
Anonymous
 Подсчет шагов в гипотезе Коллатца

Сообщение Anonymous »

Я хочу знать общее количество шагов, необходимых для перехода от n (в примере 15) к 1.

Вот что мне удалось сделать на данный момент:

def collatz(n):
print(n)
c = 0
while n != 1:
if n % 2 == 0:
n = n // 2
c += 1
yield(n)
yield ('{%d}' % c)
else:
n = n * 3 + 1
c += 1
yield(n)
yield ('{%d}' % c)

print(list(collatz(15)))


Вот что я получаю. Он дает мне все шаги, но мне нужно только их общее количество (в примере 17).

[46, '{1}', 23, '{2}', 70, '{3}', 35, '{4}', 106, '{5}', 53, '{6}', 160, '{7}', 80, '{8}', 40, '{9}', 20, '{10}', 10, '{11}', 5, '{12}', 16, '{13}', 8, '{14}', 4, '{15}', 2, '{16}', 1, '{17}']


Подробнее здесь: https://stackoverflow.com/questions/511 ... conjecture
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»