Сообщение Re: Коллац на Фрактране от 07.07.2023 19:54
Изменено 07.07.2023 20:11 kov_serg
Re: Коллац на Фрактране
Здравствуйте, Кодт, Вы писали:
К>Предлагаю маленький конкурс: написать программу, реализующую последовательность Коллаца (3x+1).
К>На входе — некое число, символизирующее x. (Например, 2^x)
К>На выходе — некое число, символизирующее количество итераций до значения 1. (Например, 3^t)
К>(Примем за постулат, что 3x+1 всегда сходится к циклу 1-4-2-1).
К>Чем короче будет программа, тем лучше.
К>Только давайте сразу договоримся, что код публиковать в виде векторов, а не в виде дробей. Потому что какое-нибудь 1234/567 воспринимать тяжело, это же надо факторизовывать (2^1 * 617^1) / (3^4 * 7^1)
Если нигде не накосячил то так:
Но немного другие обозначения: a=2,b=3,c=5,d=7,e=11
на входе x[k]=d*a^n[k] на выходе x[k+1]=d*a^n[k+1]
К>Предлагаю маленький конкурс: написать программу, реализующую последовательность Коллаца (3x+1).
К>На входе — некое число, символизирующее x. (Например, 2^x)
К>На выходе — некое число, символизирующее количество итераций до значения 1. (Например, 3^t)
К>(Примем за постулат, что 3x+1 всегда сходится к циклу 1-4-2-1).
К>Чем короче будет программа, тем лучше.
К>Только давайте сразу договоримся, что код публиковать в виде векторов, а не в виде дробей. Потому что какое-нибудь 1234/567 воспринимать тяжело, это же надо факторизовывать (2^1 * 617^1) / (3^4 * 7^1)
Если нигде не накосячил то так:
Но немного другие обозначения: a=2,b=3,c=5,d=7,e=11
a=n, d=1 : x=d*a^n
------------------------
1) b=1; e=1; d=0 : [b+e-d] = 3*11/7
2) c=a/2; a%=2; : [c-2a] = 5/4
3) b=~a; a=0 : [-b-a] = 1/2/3
if(b) {
4) a=3c;b=0;d=1: [3a-c+d-b] = 8*7/3/5
5) a=a+1;d=0 : [a-d] = 2/7
}
6) d=e;e=0 : [d-e] = 7/11
a b c d e
1) < 0, 1, 0,-1, 1 > = 3*11/7
2) < -2, 0, 1, 0, 0 > = 5/4
3) < -1,-1, 0, 0, 0 > = 1/2/3
4) < -3,-1,-1, 1, 0 > = 8*7/3/5
5) < 1, 0, 0,-1, 0 > = 2/7
6) < 0, 0, 0, 1,-1 > = 7/11
на входе x[k]=d*a^n[k] на выходе x[k+1]=d*a^n[k+1]
n[k+1]= n[k]%2=0 ? n[k]/2 : 3*n[k]+1
Re: Коллац на Фрактране
поторопился