Информация об изменениях

Сообщение Re: Коллац на Фрактране от 07.07.2023 19:54

Изменено 07.07.2023 19:56 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
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            : [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: Коллац на Фрактране
Здравствуйте, Кодт, Вы писали:

К>Предлагаю маленький конкурс: написать программу, реализующую последовательность Коллаца (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