B:=subsop1=NULL,B: X:=H[s]: U:={}:
for i in B do Y:=H[i]:
Z:=AddVX,Y: T:=UjiAdd2VekMd,Z,L:
if T=true then for j from 1 to a do
M:=combinat[choose]A,j: T1:=true:
for R in M while T1=true do S:=Z:
for k in R do S:=AddVS,H[k]:
end do: T1:=UjiAddXVekM2+j,d,S,L:
end do: if T1=false then
break; end if:
end do: if T1=true then
U:={opU,i}: end if:
end if: end do:
return[[{opA,s},U],[A,B]]: end if:
end proc: MoveRNX:=procR::list,N::list,c::integer,y::integer
local X,L,M::list, A::set, i,x1,x2::integer: M:=N: A:={}:
for i from 1 to nopsR do X:=R[i]:
x1:=nopsX[1]: x2:=nopsX[2]:
if x1=y and x2c then M:=[opM,X]:
A:={opA,i}: elif x1+x2y+c or x2=0 then
A:={opA,i}: end if:
end do:
L:=subsopopmapx-x=NULL,A,R: return[L,M]:
end proc: IdxAddXV:=procd::posint,P::list,H::list,L::list,c::integer,y:
:integer local R,N,T::list, i,s::integer:
R:=SplitHXd,P,H,L: N:=[]: T:=MoveRNXR,N,c,y:
R:=T[1]: N:=T[2]: for i while R[] do
R:=mapx-opSplitHXd,x,H,L,R: T:=MoveRNXR,N,c,y:
R:=T[1]: N:=T[2]: end do:
returnN: end proc:
1.3.17 Misalkan himpunan H adalah output KolekX-1VekM, setiap X vektor
anggota H akan mehasilkan jumlah. Agar X vektor ini bisa ditambahkan langsung ke matriks M, maka diuji dengan prosedur UjiAddXVekM
berdasarkan output ListKombM.
UjiAddXVekM:=procx::posint,d::posint,U::set,L::list local H,G::list, i,j,g,b,k,n,t::integer:
if nopsUd-x then returnfalse end if; H:=L: k:=nopsL[1]:
n:=mind-x-1,k: for i from 1 to n do
G:=H[i]: g:=nopsG: b:=d-x-i:
for j from 1 to g do t:=HmDistU,G[j]:
if tb then returnfalse;
end if: end do:
end do: returntrue;
end proc:
1.3.18 Misalkan himpunan H adalah output Kolek4VekM, setiap 5 vektor
X,Y,Z,V,W anggota H akan mehasilkan vektor U = W+V + X + Y + Z. Agar dua vektor X, Y,Z,V dan W bisa ditambahkan langsung ke matriks M,
maka U diuji dengan prosedur UjiAdd5VekM berdasarkan output ListKombM
.
UjiAdd5VekM:=procd::posint,U::set,L::list local H,G::list, i,j,g,b,k,n,t::integer:
if nopsUd-5 then returnfalse end if; H:=L: k:=nopsL[1]:
n:=mind-6,k: for i from 1 to n do
G:=H[i]: g:=nopsG: b:=d-5-i:
for j from 1 to g do t:=HmDistU,G[j]:
if tb then returnfalse;
end if: end do:
end do: returntrue;
end proc:
1.3.19 Kolek5VekMDt menentukan himpunan semua pasang X,Y,Z,U,W
menggunakan data hasil sebelumnya.
Kolek5VekMDt:=procd::posint,H::list,L::list,c::posint,Dat:: list
local X,Y,Z,U,U1,U2,U3,V,W1,W2,W3,R,S,A::set, h,i,j,k::integer, T,T1,T2,T3::symbol, C,F::list:
C:=Dat[2]: k:=Dat[1]: h:=nopsH:
for i from k to h-1 do X:=H[i]:
for j from i+1 to h do Y:=H[j]:
Z:=X union Y: if nopsZ=5 then
S:=X intersect Y: V:=Z minus S:
A:=AddVop1,V,op2,V: T:=UjiAdd2VekMd,A,L:
if T=true then U1:=AddVop1,S,A:
U2:=AddVop2,S,A: U3:=AddVop3,S,A:
T1:=UjiAdd3VekMd,U1,L:
T2:=UjiAdd3VekMd,U2,L: T3:=UjiAdd3VekMd,U3,L:
if T1=true and T2=true and T3=true then W1:=AddVop2,S,U1:
W2:=AddVop3,S,U1: W3:=AddVop3,S,U2:
T1:=UjiAdd4VekMd,W1,L: T2:=UjiAdd4VekMd,W2,L:
T3:=UjiAdd4VekMd,W3,L: if T1=true and T2=true and T3=true then
R:=AddVop3,S,W1: T:=UjiAdd5VekMd,R,L:
if T=true then C:=[opC,{opZ}]:
if nopsC=c then C:=[op{opC}]:
F:=[i,C]: save F, D:\\coding new\\Coding
Theory\\DataOutD7Xt\\DatTemp5.m; returnC;
end if: end if:
end if: end if:
end if: end if:
end do: end do:
F:=[op{opC}]: save F, :\\coding new\\Coding
Theory\\DataOutD7Xt\\DatTemp5.m; returnF:
end proc: Kolek5VekMDtX:=procd::posint,H::list,L::list,c::posint,Dat::l
ist local X,Y,Z,U,U1,U2,U3,V,W1,W2,W3,R,S,A,C,K::set,
h,i,j,k::integer, T,T1,T2,T3::symbol, F::list: C:={opDat[2]}: k:=Dat[1]:
h:=nopsH: for i from k to h-1 do
X:=H[i]: for j from i+1 to h do
Y:=H[j]: