# Shaurya Baranwal - Homework 14 March 10, 2024 #--------------------------------------------------------------------------------------------- Encode113G := proc(x, q) local a,b,c,d,eqs,i,S: n := nops(x) + 4: eqs := {seq(0 = add(x[i], i=1..n) + ((n+1)^j)*a + ((n+2)^j)b + ((n+3)^j)c + ((n+4)^j)d, j=0..3)}: S := msolve({eqs}, q): subs(S, [op(x), a,b,c,d]): end: Sy113G := proc(x, q) local i, r, n: n := nops(x): [seq(add(x[i]*i^(r-1),i=1..n) mod q, r=1..4)]: end: Decode113G:=proc(y,q) local S,eq,i,j,L,i1,a,b: S:=Sy113(y): if S=[0$4] then RETURN(y): fi: eq:=(S[2]^2-S[1]*S[3])*i^2+(S[1]*S[4]-S[2]*S[3])*i+ (S[3]^2-S[2]*S[4]) mod q: if eq=0 then i:=S[2]/S[1] mod q: a:=S[1]: RETURN(y-[0$(i-1),a,0$(nops(y)-i)] mod q): fi: L:=[]: for i1 from 0 to q-1 do if subs(i=i1,eq) mod q=0 then L:=[op(L),i1]: fi: od: i := L[1]: j := L[2]: b := (i*S[1]-S[2])/(i-j) mod q: a := S[1]-b mod q: y-[0$(i-1),a,0$(j-i-1),b,0$(nops(y)-j)] mod q: end: #---------------------------------------------------------------------------------------------