Spracherkennung für: vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
readi p,"Input the prime p";
w:=0;
F:=FiniteField(p);
for i in [2..p-1] do
a:=F!i;
S:={a};
for j in [2..p-1] do
Include(~S,a^j);
end for;
if #S eq p-1 then
w:=i;
break;
end if;
end for;
print "p equals",p;
print "w equals",w;
Z:=Integers();
V2:=VectorSpace(F,2);
H22:=Hom(V2,V2);
//Case babb=baaa
mats1:={};
for y1 in [0..(p-1) div 2] do
for y2 in [0..p-1] do
for y3 in [0..p-1] do
for y4 in [0..p-1] do
new :=1;
index:=p^3*y1+p^2*y2+p*y3+y4;
A:=H22![y1,y2,y3,y4];
for a in [0..p-1] do
for b in [0..p-1] do
if a ne b and a ne p-b then
B:=H22![a,b,b,a];
C:=H22![a^4-b^4,2*a*b*(a^2-b^2),2*a*b*(a^2-b^2),a^4-b^4];
D:=B*A*C^-1;
z1:=Z!(D[1][1]);
z2:=Z!(D[1][2]);
z3:=Z!(D[2][1]);
z4:=Z!(D[2][2]);
ind1:=p^3*z1+p^2*z2+p*z3+z4;
if ind1 lt index then new:=0; end if;
B:=H22![a,b,-b,-a];
C:=H22![-a^4+b^4,-2*a*b*(a^2-b^2),2*a*b*(a^2-b^2),a^4-b^4];
D:=B*A*C^-1;
z1:=Z!(D[1][1]);
z2:=Z!(D[1][2]);
z3:=Z!(D[2][1]);
z4:=Z!(D[2][2]);
ind1:=p^3*z1+p^2*z2+p*z3+z4;
if ind1 lt index then new:=0; end if;
end if;
if new eq 0 then break; end if;
end for;
if new eq 0 then break; end if;
end for;
if new eq 1 then
Include(~mats1,[y1,y2,y3,y4]);
end if;
end for;
end for;
if #mats1 eq (Gcd(p-1,3)*(p^2+3*p+11)+1)/2 then break; end if;
end for;
if #mats1 eq (Gcd(p-1,3)*(p^2+3*p+11)+1)/2 then break; end if;
end for;
//Case babb=wbaaa
mats2:={};
for y1 in [0..(p-1) div 2] do
for y2 in [0..p-1] do
for y3 in [0..p-1] do
for y4 in [0..p-1] do
new :=1;
index:=p^3*y1+p^2*y2+p*y3+y4;
A:=H22![y1,y2,y3,y4];
for a in [0..p-1] do
for b in [0..p-1] do
if a+b ne 0 then
B:=H22![a,b,w*b,a];
C:=H22![a^4-w^2*b^4,2*a*b*(a^2-w*b^2),2*w*a*b*(a^2-w*b^2),a^4-w^2*b^4];
D:=B*A*C^-1;
z1:=Z!(D[1][1]);
z2:=Z!(D[1][2]);
z3:=Z!(D[2][1]);
z4:=Z!(D[2][2]);
ind1:=p^3*z1+p^2*z2+p*z3+z4;
if ind1 lt index then new:=0; end if;
B:=H22![a,b,-w*b,-a];
C:=H22![-a^4+w^2*b^4,-2*a*b*(a^2-w*b^2),2*w*a*b*(a^2-w*b^2),a^4-w^2*b^4];
D:=B*A*C^-1;
z1:=Z!(D[1][1]);
z2:=Z!(D[1][2]);
z3:=Z!(D[2][1]);
z4:=Z!(D[2][2]);
ind1:=p^3*z1+p^2*z2+p*z3+z4;
if ind1 lt index then new:=0; end if;
end if;
if new eq 0 then break; end if;
end for;
if new eq 0 then break; end if;
end for;
if new eq 1 then
Include(~mats2,[y1,y2,y3,y4]);
end if;
end for;
end for;
if #mats2 eq (Gcd(p-1,3)*(p^2+p+1)+5)/2 then break; end if;
end for;
if #mats2 eq (Gcd(p-1,3)*(p^2+p+1)+5)/2 then break; end if;
end for;
print #mats1,(Gcd(p-1,3)*(p^2+3*p+11)+1)/2;
print #mats2,(Gcd(p-1,3)*(p^2+p+1)+5)/2;
¤ Dauer der Verarbeitung: 0.18 Sekunden
(vorverarbeitet am 2026-05-06)
¤
*© Formatika GbR, Deutschland