Заслуженный участник |
![](https://dxdy-01.korotkov.co.uk/styles/subsilver2/theme/images/no_avatar.gif) |
20/08/14 11549 Россия, Москва
|
Последний раз редактировалось Dmitriy40 29.08.2024, 11:58, всего редактировалось 2 раз(а).
Пока разобрал эту Базу по длинам от 17 до 28: Для этого достаточно команды DOS и буквально минуты: Код: C:\>for /l %n in (17,1,28) do @findstr "len=%n" patterns_check18nums.*e23.txt | find /c "len" 2473819 883562 286010 82568 21259 4947 994 208 34 7 0 1 Заменив пределы в цикле и слово len на слово valids, получим ту же статистику по valids. Когда захочется статистики по valids в зависимости от величины len, её выдаст множественный запуск такой команды для разных значений в len: C:\>for /l %n in (10,1,19) do @findstr /C:"len=17, valids=%n" patterns_check18nums.*e23.txt | find /c "len"Собрать кучку чисел в табличку большого труда не представляет, хотя и несколько муторно. А вот чтобы разобрать эту кучу по группам надо исхитриться. Я для этого использовал куски от других программ, вышло следующее: Код: v=[0,6,12,30,42,72,90,96,120,126,132,156,162,180,210,222,240,246,252]; vc=vector(max(#v,127)); a=setminus(vector(v[#v]/2,i,i*2),v); m=vector(71,i,[]); am=vector(#m,i,[]); forprime(p=2,#m, m[p]=setminus(vector(p,i,i-1),Set(-v%p)); am[p]=vector(p-1,i,fromdigits(Vecrev(apply(t->(t+i)%p>0,a)),2)); ); for(ff=0,16, f=fileopen(strexpand("patterns_check18nums.",ff,"e23.txt"),"r"); while(s=filereadstr(f), x=strsplit(s,":"); if(#x<3, next); x=eval(x[2]);\\Начальное число цепочки bb=2^#a-1; forprime(p=2,#am, \\if(p==17, next);\\Нужно для групп типа 29#/17, в которых 17 пропускается bb=bitand(bb,am[p][x%p]); ); vc[#v+hammingweight(bb)]++; ); fileclose(f);); n=#vc; while(n>#v&&vc[n]==0,n--); print("71#: ",vc[#v..n],", sum=",vecsum(vc)); Если хочется не общей статистики по всем файлам и всем цепочкам, а что-то выделенное, то сохраняете это выделенное (командой типа findstr "valids=18" patterns_check18nums.*e23.txt >stat.in или любой другой), убираете цикл по файлам и открываете только вот этот один, и меняете x=eval(x[2]) на x[3] и x<3 на x<4 (потому что findstr в такой форме добавит в строку ещё имя файла слева через двоеточие). Ну или можно конечно уже в PARI выцеплять из строки цепочки что хочется и раскладывать по таблицам статистики, тогда всё сформируется за один запуск (и кучу отладочных/пробных, которые удобно натравливать лишь на один 16-й файл как самый маленький). В общем главное чётко и ясно поставить цель, что именно хочется подсчитать, а уж реализация несложна. -- 29.08.2024, 11:57 --А я пока отчитаюсь что нашёл новый поиск с перебором по группам 29#/17. Просчитано 200 вариантов левых групп и 245 вариантов правых групп из 13824 или 3.2% за примерно 8.6 дней. Найдены 8шт valids=18: 2492836870083454588343317: [ 0, +6, 12, 30, 42, -52, 72, -82, 90, 96, 120, 126, 132, 156, 162, 180, 210, 222, 240, 246, 252], len=20, valids=18 - в последней группе 19+33, показывал ранее 143519227570155189438067: [ 0, 6, 12, 30, 42, 72, +90, 96, 120, 126, 132, 156,-160, 162, 180,-184, 210, 222, 240, 246, 252], len=20, valids=18 - в группе 19+31 2907176631220099317018607: [ 0, +6, 12, 30, 42, -52, 72, -82, 90, 96, 120, 126, 132, 156, 162,-174, 180,-192,-204, 210, 222,-226, 240,-244, 246, 252], len=25, valids=18 - в группе 19+31 6766002247704924927518897: [ 0, 6, 12, 30, -32, 42, 72, -86, 90, 96,-116, 120, 126,+132,-134, 156, 162, 180, 210, 222,-236, 240, 246, 252], len=23, valids=18 - в группе 19+30 1291266993961523165186681: [ 0, 6, 12, 30, 42, -48, +72, 90, 96, 120, 126, 132, 156, 162,-176, 180, 210, 222, 240, 246, 252], len=20, valids=18 - в группе 19+30 7661765039161898964014797: [ 0, 6, 12, 30, +42, 72, 90, 96, 120, 126, 132, 156, 162, 180,-190, 210, 222, 240, 246, 252], len=19, valids=18 - в группе 19+23 6027315505507867667412397: [ 0, 6, 12, 30, 42, 72, 90, 96, 120, 126, 132,+156, 162, 180, 210, 222,-226, 240, 246, 252], len=19, valids=18 - в группе 19+23 5973509333558988492247057: [ 0, 6, 12, 30, 42, 72, 90, 96, 120, 126, 132,-154, 156, 162, 180, 210,+222, 240, 246, 252], len=19, valids=18 - в группе 19+23 Похоже правые группы дают более длинные цепочки, не уверен что это лучше, хоть их и выходит вроде как больше в штуках. Две из них (что меньше 1.7e24) были найдены и старой программой. Плюс нашлись две цепочки с двумя дырками (по терминологии НМ): 3162682519118454967480927:[0, 6, 12, 30, 42, 72, 90, 96, 120, 126, 132, 156, 162, 180, 204, 222, 240, 246, 264], valids=17 - в группе 19+23 4671794267850362030593751:[0, 6, 12, 30, 42, 72, 90, 96, 120, 126, 132, 138, 162, 170, 210, 222, 240, 246, 252], valids=17 - в группе 19+30 В каких группах для 67#/71# все они выяснять лень (это не даёт полезной мне информации).
|
|