Если используется в цикле, то проще сразу выделить вектор/матрицу с большим запасом, в цикле заполнить, а по выходу обрезать (m=m[1..n]) до нужного размера, только это запросто даст ускорение до порядка.
В общем, вот такой вот крокодилиум (отказался от конкатов и ввернул еще два внутренних цикла) действительно работает еще на порядок-другой быстрее:
(код)
Код:
cz_eur(n)={my(sn=ceil(5*n/3)+7,px=floor((sn-n-3)/2)+1,
Rcurr=matrix(1,3,i,j,[1,0,px][j]),
Rnext=matrix(px,4),
spx=0,k0=1,
R,s,m,ma,un);
printp(["n","R_min","R_max","#","m_max"]);
for(i=1,n,
a=matsize(Rcurr)[1];
if(i>1,printp([i-1,vecmin(Rcurr[1..a,1]),vecmax(Rcurr[1..a,1]),a,vecmax(Rcurr[1..a,4..i+2])])
,printp([i-1,vecmin(Rcurr[1..a,1]),vecmax(Rcurr[1..a,1]),a]));
for(j=1,a,
R=Rcurr[j,1];
s=Rcurr[j,2];
px=Rcurr[j,3];
if(i>1,m=Rcurr[j,4..i+2]);
if(px>=1,
if(i==1,f=2,f=1-R%3);
for(k=1,px,
rnk=(R<<(2*k+f)-1)/3; rnkm=rnk%3;
mk=2*k+f;
snk=s+mk;
dspx=if(rnkm==1,floor((sn-snk-n+i+1)/2),
rnkm==2,ceil((sn-snk-n+i+1)/2),
rnkm==0,0);
if(dspx>0,spx=spx+dspx);
kin=k+k0-1;
Rnext[kin,1]=rnk;
Rnext[kin,2]=snk;
Rnext[kin,3]=dspx;
Rnext[kin,i+3]=mk;
if(i>1,for(v=4,i+2,Rnext[kin,v]=m[v-3]));
);
k0=k0+px;
);
);
Rcurr=Rnext;
\\printp(Rcurr);
Rnext=matrix(spx,i+4);
spx=0;
k0=1;
);
a=matsize(Rcurr)[1];
printp([n,vecmin(Rcurr[1..a,1]),vecmax(Rcurr[1..a,1]),a,vecmax(Rcurr[1..a,4..n+3])]);
printp(Rcurr);
};
До практичности, впрочем, далеко:
![$n=49$ $n=49$](https://dxdy-02.korotkov.co.uk/f/9/7/3/973d1f7f8a0235f4639436cc2c05e75482.png)
он считал 6 минут, с максимальным количеством в
![$583445$ $583445$](https://dxdy-01.korotkov.co.uk/f/4/6/b/46bf4bd63e45a63a5211c697a950a1e082.png)
вариантов на
![$18$ $18$](https://dxdy-02.korotkov.co.uk/f/1/5/d/15d851cfce799553cec908376fe8edd982.png)
-ом шаге.
-- 22.11.2023, 20:33 --Про 5ку. Если нечетное число минимальное для всех других чисел этого уровня
![$R_n^{\min }$ $R_n^{\min }$](https://dxdy-01.korotkov.co.uk/f/8/3/8/838adae1b68f3e039ebc1b5184bca2f682.png)
То 5ка всегда элемент последовательности.
Что следует из вот этого легко доказуемого утверждения:
![${m_1} = \mathop {\arg \min }\limits_{\left\{ {{m_1},{m_2},..{m_n}} \right\}} \left( {\frac{{{2^{{m_n}}} - {3^{n - 1}} - {3^{n - 2}}{2^{{m_1}}} - {3^{n - 3}}{2^{{m_2}}}... - {2^{{m_{n - 1}}}}}}{{{3^n}}}} \right) = 2$ ${m_1} = \mathop {\arg \min }\limits_{\left\{ {{m_1},{m_2},..{m_n}} \right\}} \left( {\frac{{{2^{{m_n}}} - {3^{n - 1}} - {3^{n - 2}}{2^{{m_1}}} - {3^{n - 3}}{2^{{m_2}}}... - {2^{{m_{n - 1}}}}}}{{{3^n}}}} \right) = 2$](https://dxdy-02.korotkov.co.uk/f/1/d/7/1d74af32429d66ffc6266cbb2f63beb082.png)
Оно верно, если преобразовать выражение в скобке, то это уже очевидно.
![$\frac{{{2^{{m_n}}} - {3^{n - 1}} - {3^{n - 2}}{2^{{m_1}}} - {3^{n - 3}}{2^{{m_2}}}... - {2^{{m_{n - 1}}}}}}{{{3^n}}} = \frac{{{2^{{m_1}}}\left( {{2^{{m_n} - {m_1}}} - {3^{n - 2}} - {3^{n - 3}}{2^{{m_2} - {m_1}}}... - {2^{{m_{n - 1}} - {m_1}}}} \right)}}{{{3^n}}} - \frac{1}{3}$ $\frac{{{2^{{m_n}}} - {3^{n - 1}} - {3^{n - 2}}{2^{{m_1}}} - {3^{n - 3}}{2^{{m_2}}}... - {2^{{m_{n - 1}}}}}}{{{3^n}}} = \frac{{{2^{{m_1}}}\left( {{2^{{m_n} - {m_1}}} - {3^{n - 2}} - {3^{n - 3}}{2^{{m_2} - {m_1}}}... - {2^{{m_{n - 1}} - {m_1}}}} \right)}}{{{3^n}}} - \frac{1}{3}$](https://dxdy-04.korotkov.co.uk/f/b/9/1/b91f508f72fdeb7b532451ec9068f88882.png)
Если непонятно, спросите профессиональных математиков. Если такие есть в вашем окружении.
У Вас несколько другие обозначения, в частности, Ваше
![$m_1^{MGM}=m_n$ $m_1^{MGM}=m_n$](https://dxdy-02.korotkov.co.uk/f/1/7/5/175030f25c72f3ee84d091a170271f8982.png)
в обозначениях, принятых в топике. Действительно, очевидно, что
![$m_1^{MGM}$ $m_1^{MGM}$](https://dxdy-01.korotkov.co.uk/f/0/f/7/0f7ede33c56bd0e5bf9c4f78a3a2e73f82.png)
это единица или двойка для минимальных чисел. Пользуясь Вашими обозначениями, вопрос топика звучит так: верно ли, что для минимальных нечетных сваливающихся в единицу за
![$n$ $n$](https://dxdy-02.korotkov.co.uk/f/5/5/a/55a049b8f161ae7cfeb0197d75aff96782.png)
утроений, всегда
![$m_n^{MGM}-m_{n-1}^{MGM}=4$ $m_n^{MGM}-m_{n-1}^{MGM}=4$](https://dxdy-01.korotkov.co.uk/f/4/c/0/4c06d9c020d72b759af3cf7746c92c6282.png)
?