Поступил с горных вершин запрос найти все паттерны приближений к пятнашке с определённым кодом 7943. То есть
pt=[0,18,30,60,78,84, 108,114,120,144,150, 168,198,210,228];
vc=[1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1];
И вроде бы уже находили. Я уж и позабыл все эти дела и нужные проги растаяли, как серебристые облака (кстати, наблюдал! Или показалось... Давно это было. Я тогда и обе великие планеты тройными наблюдал. В телескоп).
А, приближения. У меня получилось их зело много.
Код:
\\patterns with code 7943
{
pt=[0,18,30,60,78,84, 108,114,120,144,150, 168,198,210,228]; \\Паттерн пятнашки
vc=[1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1]; \\ код 7943 в двоичном виде
pd=[108,114,120,144,150]; \\вырезка из кода
ww=vector(5,i,[43,83]); \\для векторного перебора
k=0; \\количество паттернов
forvec(w=ww, \\перебор вариантов середины
pp=w*2; очередная середина
for(i=1,5,if(pp[i]==pd[i], next(2) ) ); \\проверка на совпадение с паттерном
pa=pt; for(i=1,5,pa[6+i]=pp[i]); \\очередной паттерн целиком
\\prove
for(i=7,11, if(pa[i+1]-pa[i-1]==4,next(2) ) );
wt=1;
forprime( wp=3,13, ws=wp-1;
for (s=1,wp-1,
for ( i=2,15, if( (s+pa[i])%wp==0, ws--; break ) );
); wt=wt*ws; if(wt==0, break);
);
if( wt!=0, k++; \\паттеррн прошёл проверку на пригодность
if(k<13||(k>500&&k<511)|| \\печать избранных мест
(k>2500&&k<2511) || (k>241000&&k<241011)
,print(k," ",pa) );
);
,2);
print("k=",k);
}
1 [0, 18, 30, 60, 78, 84, 86, 90, 94, 98, 100, 168, 198, 210, 228]
2 [0, 18, 30, 60, 78, 84, 86, 90, 94, 98, 104, 168, 198, 210, 228]
3 [0, 18, 30, 60, 78, 84, 86, 90, 94, 98, 106, 168, 198, 210, 228]
508 [0, 18, 30, 60, 78, 84, 86, 90, 96, 158, 160, 168, 198, 210, 228]
509 [0, 18, 30, 60, 78, 84, 86, 90, 96, 158, 166, 168, 198, 210, 228]
510 [0, 18, 30, 60, 78, 84, 86, 90, 96, 160, 166, 168, 198, 210, 228]
2501 [0, 18, 30, 60, 78, 84, 86, 90, 126, 134, 148, 168, 198, 210, 228]
2502 [0, 18, 30, 60, 78, 84, 86, 90, 126, 134, 154, 168, 198, 210, 228]
2503 [0, 18, 30, 60, 78, 84, 86, 90, 126, 134, 156, 168, 198, 210, 228]
241007 [0, 18, 30, 60, 78, 84, 140, 144, 148, 158, 164, 168, 198, 210, 228]
241008 [0, 18, 30, 60, 78, 84, 140, 144, 148, 158, 166, 168, 198, 210, 228]
241009 [0, 18, 30, 60, 78, 84, 140, 144, 148, 160, 162, 168, 198, 210, 228]
241010 [0, 18, 30, 60, 78, 84, 140, 144, 148, 160, 164, 168, 198, 210, 228]
k=241416
Четверть миллиона! Не ошибся ли я и в чём?