トップページ > プログラム > 2016年09月28日 > 6gs0Qv+W

書き込み順位&時間帯一覧

31 位/176 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000200000000000002



使用した名前一覧書き込んだスレッド一覧
839
【論理】Prolog【初心者】

書き込みレス一覧

【論理】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 の形式には変換できなそうですね。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。