# Shaurya Baranwal Homework 9 due February 18, 2024 #-------------------------------------- #Important functions for this homework| #-------------------------------------- Fqn:=proc(q,n) local S,a,v: option remember: if n=0 then RETURN({[]}): fi: S:=Fqn(q,n-1): {seq(seq([op(v),a],a=0..q-1), v in S)}: end: Syn:=proc(q,H,y) local i: [seq(DP(q,y,H[i]),i=1..nops(H))]: end: DP:=proc(q,u,v) local i,n: n:=nops(u): add(u[i]*v[i],i=1..n) mod q: end: SynT:=proc(q,M) local n,T,A,H,S,s,i: option remember: if SFde(q,M)<>M then RETURN(FAIL): fi: n:=nops(M[1]): A:=SAah(q,n,M): H:=PCM(q,M): S:={}: for i from 1 to nops(A) do s:=Syn(q,H,A[i][1]): S:=S union {s}: T[s]:=A[i][1]: od: op(T),S: end: PCM:=proc(q,M) local k,n,i,j,H: option remember: k:=nops(M): n:=nops(M[1]): if [seq([op(1..k,M[i])],i=1..k)]<>[seq([0$(i-1),1,0$(k-i)],i=1..k)] then print(`Not standard form , please use SFde(q,M) first `): RETURN(FAIL): fi: for i from 1 to n-k do for j from 1 to k do H[i,j]:=-M[j][i+k] mod q: od: for j from k+1 to n do if j-k=i then H[i,j]:=1: else H[i,j]:=0: fi: od: od: [seq([seq(H[i,j],j=1..n)],i=1..n-k)]: end: #-------------------------------------- # Part 1 - Finding out everyone's age | #-------------------------------------- #AjBu N/A #AuroraHiveley 23 #AlexValentino N/A #AlexVarjabedian 19 #DanielElwell N/A #DayoonKim N/A #GeorgeSpahn N/A #GloriaLiu 21 #HimanshuChandra 49 #IsaacLam 18 #JosephKoutsoutis 20 #KayleeWeatherspoon 22 #LucyMartinez 25 #NatalyaTer-Saakov 24 #NkhaloMalawo N/A #NurayKutlu 20 #PabloBlanco 22 #RameshBalaji 19 #RDB (aka Robert Dougherty-Bliss) N/A #RyanBadi 20 #ShauryaBaranwal 19 #-------------------------------------- # Part 2 - antiPCM(q,H) | #-------------------------------------- AntiPCM := proc(q, H) local n, k, S, i, j: k := nops(H): n := nops(H[1]): S := [[0$(n-k)]$n]: for i from 1 to n-k do: for j from 1 to n-k do: if i=j then S[i][j] := 1 else S[i][j] := 0 fi: od: od: for i from 1 to k do: for j from 1 to n-k do: S[j][k+i+1] := -H[i][j] mod q: od: od: return S: end: #-------------------------------------- # Part 3 - DecodeLT | #-------------------------------------- DecodeLT := proc(q, M) local n, fqn, H, v, L: n := nops(M[1]): fqn := Fqn(q, n): H := AntiPCM(q, M): for v in fqn do: L[v] := Syn(q, H, v): od: return L: end: