- 【論理】Prolog【初心者】
841 :839[sage]:2016/09/28(水) 10:01:23.90 ID:6gs0Qv+W - >>840
ありがとうございます。該当の文献の英語版を読んでいるのですが多分因数分解は以下のコードだと思います。古い本で→や\等の記号が用いられており勝手に以下と解釈しました。 → … :- \ … 差分リスト ↑ … ^ subterm(Term,Term). subterm(Sub,Term):-compound(Term),functor(Term,F,N),subterm(N,Sub,Term). subterm(N,Sub,Term):-N>1,N1 is N-1,subterm(N1,Sub,Term). subterm(N,Sub,Term):-arg(N,Term,Arg),subterm(Sub,Arg). factorize(A*B,X,[Factors-Rest]):-!,factorize(A,X,[Factors-Factors1]),factorize(B,X,[Factors1,Rest]). factorize(C,X,[[C|Factors],Factors]):-subterm(X,C),!. factorize(C,X,[Factors,Factors]). 実行結果は以下となり、うまく因数分解できないのですが、どうすればよいかわかりますか? 1 ?- subterm(X,a*b*(c-d/e)^f). X = a*b* (c-d/e)^f ; X = a*b ; X = a ; X = b ; X = (c-d/e)^f ; X = c-d/e ; X = c ; X = d/e ; X = d ; X = e ; X = f ; false. 4 ?- factorize(x^2+4*x+4,A,x+2). false. 5 ?- factorize(x^2+4*x+4,A,B). A = x^2+4*x+4, B = [[x^2+4*x+4|_G1609], _G1609].
| - 【論理】Prolog【初心者】
842 :839[sage]:2016/09/28(水) 10:16:30.93 ID:6gs0Qv+W - すみません差分リストのとこ[Factors-Rest]と[Factors,Rest]が混在してまちがってましたが
[Factors,Rest]の形式に統一しても同じエラーでした。 多分すでに式がA*Bの形式になっている前提で書かれているコードのような… x^2+4^x+4 → (x+2)^2 の形式には変換できなそうですね。
|
|