^
j,j,0,p-1)=2^
p-1
^
j,j,n-p,n-1)=2^
n-2^
(n-p)
jurys(n,p):={ local j,k,L,m,M; //L:=makelist(0,1,comb(n,p)); L:=makelist(0,1,1); k:=0; m:=2^p-1; M:=2^n-2^(n-p); for (j:=m;j<=M;j++){ if (sum(convert(j,base,2))==p){ L[k]=<j; k:=k+1; }; } return L; } :;On tape : J:=jurys(17,10):;
^
(n-1).
jurysXY(n,p):={ local LP,L,j,k,l; LP:=jurys(n,p); s:=comb(n,p); l:=s-comb(n-2,p-2); //L:=makelist(0,1,1); L:=makelist(0,1,l); l:=0; for(k:=0;k<s;k++){ j:=LP[k]; if (irem(j,2)==0 or j<2^(n-1)) { L[l]=<j; l:=l+1; } } return L; }:;On tape : JXY:=jurysXY(17,10)
juryXY(n,p):={ local L,j,k,ls,m,M; s:=comb(n,p); l:=s-comb(n-2,p-2); L:=makelist(0,1,l); //L:=makelist(0,1,1); k:=0; m:=2^p-1; M:=2^(n-1)-2^(n-p-1); for(j:=m;j<=M;j++){ if (sum(convert(j,base,2))==p){ L[k]=<j; k:=k+1; } } M:=2^(n-1)-2^(n-p); for(j:=m-1;j<=M;j:=j+2){ if (sum(convert(j,base,2))==p-1){ L[k]=<j+2^(n-1); k:=k+1; } } return L; }:;On tape : JXY:=juryXY(17,10)
jurytireXY(J):={ local k,n,(s:=size(J)); n:=size(convert(J[s-1],base,2)); k:=1+2^(n-1); while (irem(k,2)!=0 and k>=2^(n-1)){ k:=J[rand(s)]; } return k; }On tape : jurytireXY(J) On obtient par exemple : 54762
jury55(h,f,p):={ local L,j,k,M,F,l,p2; p2:=iquo(p,2); L:=makelist(0,1,1); //L:=makelist(0,1,comb(h,5)*comb(f,5)); M:=jurys(h,p-p2); F:=jurys(f,p2)*2^h; l:=0; for(j:=0;j<comb(h,p-p2);j++){ for(k:=0;k<comb(f,p2);k++){ L[l]=<M[j]+F[k]; l:=l+1; } } return L }:;J55:=jury55(9,8,10)
jurytire55(J,h):={ local k,n,p,la,j,(s:=size(J)); la:=convert(J[s-1],base,2); n:=size(la); p:=sum(la); k:=iquo(p,2); j:=1; while (sum(convert(irem(j,2^h),base,2))!=p-k){ j:=J[rand(s)]; } return j; }On tape : jurytire4:=convert(jurytire55(J,9),base,2)
^
(n-1).
juryXY55(h,f,p):={ local LP,L,j,k,l,p2; p2:=iquo(p,2); LP:=jury55(h,f,p); //L:=makelist(0,1,1); s:=comb(h,p-p2)*comb(f,p2); l:=s-comb(h-1,p-p2-1)*comb(f-1,p2-1); L:=makelist(0,1,l); l:=0; for(j:=0;j<s;j++){ k:=LP[j]; if (irem(k,2)==0 or k<2^(h+f-1)) { L[l]=<k; l:=l+1; } } return L; }:;On tape : JXY55:=juryXY55(9,8,10)
jurys55XY(h,f,p):={ local L,j,k,M,F,l,p2; p2:=iquo(p,2); L:=makelist(0,1,1); //L:=makelist(0,1,comb(h,p-p2)*comb(f-1,p2)+ comb(h-1,p-p2)*comb(f-1,p2-1)); M:=jurys(h,p-p2); F:=jurys(f-1,p2)*2^h; l:=0; for(j:=0;j<comb(h,p-p2);j++){ for(k:=0;k<comb(f-1,p2);k++){ L[l]=<M[j]+F[k]; l:=l+1; } } M:=jurys(h-1,p-p2); F:=jurys(f-1,p2-1)*2^h; for(j:=0;j<comb(h-1,p-p2);j++){ for(k:=0;k<comb(f-1,p2-1);k++){ L[l]=<2*M[j]+F[k]+2^(h+f-1); l:=l+1; } } return L }:;On tape : JJXY55:=jurys55XY(9,8,10)
jurytireXY55(J55):={ local n,k,(s=size(J55)); n:=size(convert(J55[s-1],base,2)); k:=1+2^(n-1); while (irem(k,2)!=0 and k>=2^(n-1)){ k:=J55[rand(s)]; } return k; }On tape : jurytire() On obtient par exemple : 63798
jurytireXY5(J,h):={ local n,k,la,p,(s=size(J)); la:=convert(J[s-1],base,2); n:=size(la); p:=sum(la); k:=iquo(p,2); j:=1; while ((sum(convert(irem(j,2^h),base,2))!=p-k) or (irem(j,2)!=0 and j>=2^(n-1))){ j:=J[rand(s)]; } return j; }On tape : jurytireXY5(J,9)