# Please do not post homework # Aurora Hiveley, 04/26/24, Assignment 26 Help:= proc(): print(` FT2(SetL), FT3(SetL) `): end: ### problems 2 & 3 ## find frequency of pairs of letters [alpha,beta] and determine ## which combinations do not occur in any english words # builds frequency table for pairs of letters in all english words with length in SetL FT2:=proc(SetL) local ALPH,ALPH2,T1,W,DB,A,B,L: ALPH:=[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]: ALPH2 := [seq( seq([A,B], A in ALPH),B in ALPH )]: # order matters! DB:=ENG(): for L in ALPH2 do T1[L]:=0: od: for A in SetL do for W in DB[A] do for B from 1 to nops(W)-1 do T1[W[B..B+1]]:=T1[W[B..B+1]]+1: od: od: od: T1: end: # builds frequency table for trios of letters in all english words with length in SetL FT3:=proc(SetL) local ALPH,ALPH3,T1,W,DB,A,B,C,L: ALPH:=[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]: ALPH3 := [seq( seq( seq([A,B,C], A in ALPH),B in ALPH ), C in ALPH)]: # order matters! DB:=ENG(): for L in ALPH3 do T1[L]:=0: od: for A in SetL do for W in DB[A] do for B from 1 to nops(W)-2 do T1[W[B..B+2]]:=T1[W[B..B+2]]+1: od: od: od: T1: end: ## find pairs with freq >= 10 or 0 and trios with freq = 0 # initialize some tools T2 := FT2({seq(1..26)}): T3 := FT3({seq(1..26)}): ALPH:=[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]: ALPH2 := [seq( seq([A,B], A in ALPH),B in ALPH )]: ALPH3 := [seq( seq( seq([A,B,C], A in ALPH),B in ALPH ), C in ALPH)]: pair0 := {}: pair10 :={}: trio0 := {}: for pair in ALPH2 do if T2[pair] = 0 then pair0 := pair0 union {pair}: elif T2[pair] >= 10 then pair10 := pair10 union {pair}: fi: od: # pair0; # {[b, q], [b, z], [c, f], [c, j], [c, v], [c, x], [f, q], [f, v], [f, x], [f, z], [g, q], [g, v], [g, x], [h, x], [h, z], [j, b], [j, d], [j, f], [j, g], [j, h], [j, l], [j, m], [j, p], [j, q], [j, r], [j, s], [j, t], [j, v], [j, w], [j, x], [j, y], [j, z], [k, q], [k, x], [k, z], [m, x], [m, z], [p, q], [p, v], [p, x], [q, b], [q, c], [q, d], [q, f], [q, g], [q, h], [q, j], [q, k], [q, l], [q, m], [q, n], [q, p], [q, q], [q, v], [q, w], [q, x], [q, y], [q, z], [s, x], [t, q], [v, b], [v, f], [v, h], [v, j], [v, k], [v, m], [v, p], [v, q], [v, w], [v, x], [w, q], [w, v], [w, x], [x, d], [x, j], [x, k], [x, r], [x, z], [y, q], [y, y], [z, f], [z, r], [z, x]} # pair10; # {[a, a], [a, b], [a, c], [a, d], [a, e], [a, f], [a, g], [a, h], [a, i], [a, j], [a, k], [a, l], [a, m], [a, n], [a, o], [a, p], [a, q], [a, r], [a, s], [a, t], [a, u], [a, v], [a, w], [a, x], [a, y], [a, z], [b, a], [b, b], [b, c], [b, d], [b, e], [b, f], [b, g], [b, h], [b, i], [b, j], [b, l], [b, m], [b, n], [b, o], [b, p], [b, r], [b, s], [b, t], [b, u], [b, v], [b, w], [b, y], [c, a], [c, c], [c, d], [c, e], [c, h], [c, i], [c, k], [c, l], [c, n], [c, o], [c, q], [c, r], [c, s], [c, t], [c, u], [c, y], [c, z], [d, a], [d, b], [d, c], [d, d], [d, e], [d, f], [d, g], [d, h], [d, i], [d, j], [d, l], [d, m], [d, n], [d, o], [d, p], [d, r], [d, s], [d, t], [d, u], [d, v], [d, w], [d, y], [e, a], [e, b], [e, c], [e, d], [e, e], [e, f], [e, g], [e, h], [e, i], [e, j], [e, k], [e, l], [e, m], [e, n], [e, o], [e, p], [e, q], [e, r], [e, s], [e, t], [e, u], [e, v], [e, w], [e, x], [e, y], [e, z], [f, a], [f, b], [f, d], [f, e], [f, f], [f, h], [f, i], [f, l], [f, o], [f, r], [f, s], [f, t], [f, u], [f, y], [g, a], [g, b], [g, d], [g, e], [g, f], [g, g], [g, h], [g, i], [g, l], [g, m], [g, n], [g, o], [g, p], [g, r], [g, s], [g, t], [g, u], [g, w], [g, y], [h, a], [h, b], [h, c], [h, d], [h, e], [h, f], [h, h], [h, i], [h, k], [h, l], [h, m], [h, n], [h, o], [h, p], [h, r], [h, s], [h, t], [h, u], [h, w], [h, y], [i, a], [i, b], [i, c], [i, d], [i, e], [i, f], [i, g], [i, h], [i, i], [i, j], [i, k], [i, l], [i, m], [i, n], [i, o], [i, p], [i, q], [i, r], [i, s], [i, t], [i, u], [i, v], [i, w], [i, x], [i, z], [j, a], [j, e], [j, i], [j, o], [j, u], [k, a], [k, b], [k, c], [k, d], [k, e], [k, f], [k, h], [k, i], [k, k], [k, l], [k, m], [k, n], [k, o], [k, p], [k, r], [k, s], [k, t], [k, u], [k, w], [k, y], [l, a], [l, b], [l, c], [l, d], [l, e], [l, f], [l, g], [l, h], [l, i], [l, k], [l, l], [l, m], [l, n], [l, o], [l, p], [l, r], [l, s], [l, t], [l, u], [l, v], [l, w], [l, y], [m, a], [m, b], [m, c], [m, d], [m, e], [m, f], [m, h], [m, i], [m, l], [m, m], [m, n], [m, o], [m, p], [m, r], [m, s], [m, t], [m, u], [m, v], [m, w], [m, y], [n, a], [n, b], [n, c], [n, d], [n, e], [n, f], [n, g], [n, h], [n, i], [n, j], [n, k], [n, l], [n, m], [n, n], [n, o], [n, p], [n, q], [n, r], [n, s], [n, t], [n, u], [n, v], [n, w], [n, x], [n, y], [n, z], [o, a], [o, b], [o, c], [o, d], [o, e], [o, f], [o, g], [o, h], [o, i], [o, j], [o, k], [o, l], [o, m], [o, n], [o, o], [o, p], [o, q], [o, r], [o, s], [o, t], [o, u], [o, v], [o, w], [o, x], [o, y], [o, z], [p, a], [p, b], [p, c], [p, d], [p, e], [p, f], [p, g], [p, h], [p, i], [p, j], [p, k], [p, l], [p, m], [p, n], [p, o], [p, p], [p, r], [p, s], [p, t], [p, u], [p, w], [p, y], [q, u], [r, a], [r, b], [r, c], [r, d], [r, e], [r, f], [r, g], [r, h], [r, i], [r, j], [r, k], [r, l], [r, m], [r, n], [r, o], [r, p], [r, q], [r, r], [r, s], [r, t], [r, u], [r, v], [r, w], [r, y], [r, z], [s, a], [s, b], [s, c], [s, d], [s, e], [s, f], [s, g], [s, h], [s, i], [s, j], [s, k], [s, l], [s, m], [s, n], [s, o], [s, p], [s, q], [s, r], [s, s], [s, t], [s, u], [s, v], [s, w], [s, y], [t, a], [t, b], [t, c], [t, d], [t, e], [t, f], [t, g], [t, h], [t, i], [t, l], [t, m], [t, n], [t, o], [t, p], [t, r], [t, s], [t, t], [t, u], [t, w], [t, y], [t, z], [u, a], [u, b], [u, c], [u, d], [u, e], [u, f], [u, g], [u, i], [u, j], [u, k], [u, l], [u, m], [u, n], [u, o], [u, p], [u, r], [u, s], [u, t], [u, u], [u, v], [u, x], [u, y], [u, z], [v, a], [v, e], [v, i], [v, o], [v, r], [v, u], [v, v], [v, y], [w, a], [w, b], [w, c], [w, d], [w, e], [w, f], [w, g], [w, h], [w, i], [w, k], [w, l], [w, m], [w, n], [w, o], [w, p], [w, r], [w, s], [w, t], [w, u], [w, w], [w, y], [x, a], [x, c], [x, e], [x, f], [x, h], [x, i], [x, l], [x, o], [x, p], [x, s], [x, t], [x, u], [x, w], [x, y], [y, a], [y, b], [y, c], [y, d], [y, e], [y, f], [y, g], [y, h], [y, i], [y, l], [y, m], [y, n], [y, o], [y, p], [y, r], [y, s], [y, t], [y, u], [y, v], [y, w], [y, x], [y, z], [z, a], [z, e], [z, i], [z, l], [z, o], [z, p], [z, u], [z, y], [z, z]} for trio in ALPH3 do if T3[trio] = 0 then trio0 := trio0 union {trio}: fi: od: # trio0; # tried to copy-paste the list, but it was too long for my computer to handle! # anyway, it was a lot of trios. you can run this code to reproduce it yourself ### COPIED FROM CLASS #C26.txt, April 22, 2024 Help26:=proc(): print(` FT(SetL), TM(SetL) `):end: read `ENGLISH.txt`: #FT(SetL): The frequency table of all words whose length belobgs to SetL #For example FT({3,4}) returns the randked frequency table for words of #length 3 and 4 FT:=proc(SetL) local ALPH,T1,W,DB,C,B,FL,L,A,FL1,S1: ALPH:=[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]: DB:=ENG(): C:=0: for L in ALPH do T1[L]:=0: od: for A in SetL do for W in DB[A] do for B from 1 to nops(W) do T1[W[B]]:=T1[W[B]]+1: C:=C+1: od: od: od: FL:=evalf([seq(T1[ALPH[A]]/C,A=1..nops(ALPH))]): FL1:=sort(FL,`>`): for A from 1 to nops(ALPH) do S1[FL[A]]:=ALPH[A]: od: FL1,[seq(S1[FL1[A] ],A=1..nops(ALPH))], [seq([FL1[A],S1[FL1[A]] ],A=1..nops(ALPH))] : end: #TM(SetL): The frequency table of all words whose length belobgs to SetL #For example FT({3,4}) returns the randked frequency table for words of #length 3 and 4 #AND the Transiton matrix 28x28 the first "letter" is ST and the last is EN #NOT YET FINISHED TM:=proc(SetL) local ALPH,T1,W,DB,C,B,FL,L,A,FL1,S1,T2,L1,L2,ST,EN,T3,ALPH1: print(`Not yet finished`): ALPH:=[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]: DB:=ENG(): C:=0: for L in ALPH do T1[L]:=0: od: for L1 from 1 to nops(ALPH) do T2[ST,ALPH[L1]]:=0: T2[ALPH[L1],EN]:=0: for L2 from 1 to nops(ALPH) do T2[ALPH[L1],ALPH[L2]]:=0: od: od: for A in SetL do for W in DB[A] do for B from 1 to nops(W) do T1[W[B]]:=T1[W[B]]+1: C:=C+1: if B`): for A from 1 to nops(ALPH) do S1[FL[A]]:=ALPH[A]: od: for L1 from 1 to nops(ALPH) do T3[ST,ALPH[L1]]:=evalf(T2[ST,ALPH[L1]]/C): T3[ALPH[L1],EN]:=evalf(T2[ALPH[L1],EN]/C): od: for L1 from 1 to nops(ALPH) do for L2 from 1 to nops(ALPH) do T3[ALPH[L1],ALPH[L2]]:=evalf(T2[ALPH[L1],ALPH[L2]]/C): od: od: FL1,[seq(S1[FL1[A] ],A=1..nops(ALPH))], [seq([FL1[A],S1[FL1[A]] ],A=1..nops(ALPH))] , op(T3): end: