I need a progam in Prolog to find the GCD of polynomials?? Solution tail([_|Tail
ID: 3929302 • Letter: I
Question
I need a progam in Prolog to find the GCD of polynomials??
Explanation / Answer
tail([_|Tail], Tail). head([Head | _], Head). norm(Old, N, New) :- length(Tail, N), append(New, Tail, Old). norm(Old, N, []) :- length(Old, L), N > L. mult_GCD(List, GCD) :- length(List, L), L > 2, tail(List, Tail), mult_GCD(Tail, GCD). mult_GCD([H | T], GCD) :- length(T, L), L == 1, head(T, N), gcd(H, N, GCD). lead(List, List) :- length(List, L), L == 1. lead([0 | Tail], Out) :- !, lead(Tail, Out). lead([Head | Tail], [Head | Tail]) :- Head == 0. poly_deg([], 0). poly_deg(F, D) :- lead(F, O), length(O, N), D is N - 1. poly_red([0], [0]). poly_red(Poly, Out) :- mult_GCD(Poly, GCD), scal_div(Poly, GCD, Out). poly_sub(Poly,[],Poly) :- Poly = [_|_]. poly_sub([],Poly,Poly). poly_sub([P1_head|P1_rest], [P2_head|P2_rest], [PSub_head|PSub_rest]) :- PSub_head is P1_head-P2_head, poly_sub(P1_rest, P2_rest, PSub_rest). scal_prod([],_Sc,[]). scal_prod([Poly_head|Poly_rest], Sc, [Prod_head|Prod_rest]) :- Prod_head is Poly_head*Sc, scal_prod(Poly_rest, Sc, Prod_rest). scal_div([],_,[]). scal_div([Poly_head|Poly_rest], Sc, [Prod_head|Prod_rest]) :- Prod_head is Poly_head / Sc, scal_div(Poly_rest, Sc, Prod_rest). poly_div(Num, Den, OutBuild, Out) :- poly_deg(Num, X), poly_deg(Den, Y), X Y, !, X1 is X - Y, gcd(-X, Y, Z). gcd(X, Y, Z) :- Y < 0, Y >= X, !, Y1 is Y - X, gcd(X, -Y, Z). gcd(X, 0, X). gcd(0, Y, Y). gcd(X, Y, Z) :- X > Y, Y > 0, X1 is X - Y, gcd(Y, X1, Z). gcd(X, Y, Z) :- X = 0, Y1 is Y - X, gcd(X, Y1, Z). gcd(X, Y, Z) :- X > Y, Y < 0, X1 is X + Y, gcd(Y, X1, Z). gcd(X, Y, Z) :- X =Related Questions
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.