Заслуженный участник |
|
20/08/14 11867 Россия, Москва
|
Последний раз редактировалось Dmitriy40 22.03.2024, 14:57, всего редактировалось 2 раз(а).
На очереди серия паттернов длины 5: 6k-6k-6k-6k. Знаю, что при решений нет. Остальные вроде допустимы. Не-а. Только при допустим паттерн диаметром 120, Любые . Dmitriy40, Вы вроде бы давно в теме. Есть ли какой-то полный список симметричных паттернов нечётной длины, диаметром скажем до 100? Когда-то считал, сейчас поищу, может они даже в теме выкладывались. Вот что нашёл для диаметра до 100: Код: n=3, max= 12, x: 0 6 12 n=3, max= 24, x: 0 12 24 n=3, max= 36, x: 0 18 36 n=3, max= 48, x: 0 24 48 n=3, max= 60, x: 0 30 60 n=3, max= 72, x: 0 36 72 n=3, max= 84, x: 0 42 84 n=3, max= 96, x: 0 48 96 n=5, max= 36, x: 0 6 18 30 36 n=5, max= 48, x: 0 18 24 30 48 n=5, max= 60, x: 0 12 30 48 60 n=5, max= 60, x: 0 18 30 42 60 n=5, max= 60, x: 0 24 30 36 60 n=5, max= 60, x: 0 6 30 54 60 n=5, max= 72, x: 0 12 36 60 72 n=5, max= 72, x: 0 30 36 42 72 n=5, max= 72, x: 0 6 36 66 72 n=5, max= 84, x: 0 12 42 72 84 n=5, max= 84, x: 0 24 42 60 84 n=5, max= 84, x: 0 30 42 54 84 n=5, max= 96, x: 0 18 48 78 96 n=5, max= 96, x: 0 30 48 66 96 n=5, max= 96, x: 0 36 48 60 96 n=5, max= 96, x: 0 6 48 90 96 n=7, max= 60, x: 0 12 18 30 42 48 60 n=7, max= 72, x: 0 12 30 36 42 60 72 n=7, max= 72, x: 0 6 30 36 42 66 72 n=7, max= 84, x: 0 12 24 42 60 72 84 n=7, max= 84, x: 0 12 30 42 54 72 84 n=7, max= 84, x: 0 24 30 42 54 60 84 n=7, max= 96, x: 0 18 36 48 60 78 96 n=7, max= 96, x: 0 6 18 48 78 90 96 n=7, max= 96, x: 0 6 30 48 66 90 96 n=7, max= 96, x: 0 6 36 48 60 90 96 n=9, max= 84, x: 0 12 24 30 42 54 60 72 84 n=9, max= 96, x: 0 6 18 36 48 60 78 90 96 Более длинные имеют диаметр больше 100. Программа у меня 2015г на паскале. В принципе несложно программку на PARI написать по генерации таких паттернов: начинаем от центра и расставляем числа с шагом 6 симметрично, проверяем по остаткам. Вот, буквально на коленке: Код: ? for(a=1,8, vv=[-a,0,a]*6; forprime(p=5,13, if(#setminus(vector(p,i,i-1), Set(vv%p))==0, next(2))); print(vv); ); [-6, 0, 6] [-12, 0, 12] [-18, 0, 18] [-24, 0, 24] [-30, 0, 30] [-36, 0, 36] [-42, 0, 42] [-48, 0, 48] ? for(a=1,8, for(b=a+1,8, vv=[-b,-a,0,a,b]*6; forprime(p=5,13, if(#setminus(vector(p,i,i-1), Set(vv%p))==0, next(2))); print(vv); )); [-24, -6, 0, 6, 24] [-30, -6, 0, 6, 30] [-36, -6, 0, 6, 36] [-18, -12, 0, 12, 18] [-30, -12, 0, 12, 30] [-42, -12, 0, 12, 42] [-48, -12, 0, 12, 48] [-30, -18, 0, 18, 30] [-42, -18, 0, 18, 42] [-48, -18, 0, 18, 48] [-30, -24, 0, 24, 30] [-36, -24, 0, 24, 36] [-36, -30, 0, 30, 36] [-42, -30, 0, 30, 42] [-48, -30, 0, 30, 48] [-48, -42, 0, 42, 48] ? for(a=1,8, for(b=a+1,8, for(c=b+1,8, vv=[-c,-b,-a,0,a,b,c]*6; forprime(p=5,13, if(#setminus(vector(p,i,i-1), Set(vv%p))==0, next(2))); print(vv); ))); [-36, -24, -6, 0, 6, 24, 36] [-36, -30, -6, 0, 6, 30, 36] [-30, -18, -12, 0, 12, 18, 30] [-42, -18, -12, 0, 12, 18, 42] [-42, -30, -12, 0, 12, 30, 42] [-48, -30, -12, 0, 12, 30, 48] [-48, -42, -12, 0, 12, 42, 48] [-42, -30, -18, 0, 18, 30, 42] [-48, -42, -18, 0, 18, 42, 48] [-48, -42, -30, 0, 30, 42, 48] ? for(a=1,8, for(b=a+1,8, for(c=b+1,8, for(d=c+1,8, vv=[-d,-c,-b,-a,0,a,b,c,d]*6; forprime(p=5,13, if(#setminus(vector(p,i,i-1), Set(vv%p))==0, next(2))); print(vv); )))); [-42, -30, -18, -12, 0, 12, 18, 30, 42] [-48, -42, -30, -12, 0, 12, 30, 42, 48] И так далее. Простые проверять надо лишь до длины паттерна, не диаметра (впрочем можно и до диаметра, тут же всё быстро). Если хочется паттерн в обычном виде, то печатаем не vv, а vv+vector(#vv,i,-vv[1]). -- 22.03.2024, 14:51 --допустим паттерн диаметром 120, который я полностью обсчитать не могу. Да и я не особо: 41# считалось 12м и выдало c8>0, на 43# с c7>0 хватит 8ч, но 2 недели считать 47# для c6>0 влом (надо делать прогу нормальной многопоточной). v=[0, 30, 60, 90, 120]
13#: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 50, 144, 262, 214, 88, 4, sum=768
17#: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 22, 276, 978, 2148, 2782, 2076, 846, 86, sum=9216
19#: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 64, 958, 4962, 14786, 29056, 36452, 28302, 11908, 2396, 136, sum=129024
23#: 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 100, 1800, 16526, 80342, 238372, 470972, 618364, 529124, 276392, 79420, 10602, 414, sum=2322432
29#: 0, 0, 0, 0, 0, 0, 0, 0, 110, 2166, 29932, 246060, 1247402, 4070456, 8945984, 13474964, 13763816, 9206072, 3784366, 869042, 94686, 3312, sum=55738368
31#: 0, 0, 0, 0, 0, 0, 46, 1748, 33704, 433656, 3597134, 19515776, 70640798, 175188168, 301943884, 361135616, 294634754, 158294842, 52826640, 10004632, 918456, 27714, sum=1449197568
37#: 0, 0, 0, 0, 2, 398, 18308, 392410, 5374430, 49034754, 300196598, 1252435066, 3626357174, 7393713608, 10667157110, 10815179168, 7552745040, 3504625158, 1021231936, 171277008, 14185874,398134, sum=46374322176
41#: 0, 0, 0, 70, 5330, 185802, 4092850, 61008728, 625536908, 4410577570, 21557766242, 73989799298, 180492978482, 315241586114, 394058526358, 349112610308, 214656147160, 88415263012, 23079368484, 3499140014, 264143994, 6861612, sum=1669475598336 -- 22.03.2024, 14:57 --Кстати условие #setminus(vector(p,i,i-1), Set(vv%p))==0 эквивалентно условию #Set(vv%p)==p (длина списка запрещённых остатков равна самому простому, т.е. разрешённых не остаётся), что существенно проще.
|
|