1
fd_domain([A, B, C], 0, 9), (A**(B+C)) #= ((A**B)*(A**C)).

多分いくつかの解決策?大丈夫そうです;P特定のエラーが発生しています:

uncaught exception: error(instantiation_error,(#=)/2)
4

2 に答える 2

1

電力関数には制限があるようです。GNU Prolog doc wie で次を見つけます。

9.6.1 FD 算術式
http://www.gprolog.org/manual/gprolog.html#htoc329

エラー状態がリストされていること:


サブ式の形式が _ ** E であり、E が変数のインスタンス化エラーであるエラー

さよなら

于 2012-04-02T10:08:35.160 に答える
1

YAP または SWI では、library(clpfd)整数の累乗も許可する which を使用できます。ただし、伝播はそれほど強力ではありません。

?- use_module(ライブラリ(clpfd))。
?- [A,B,C] ins 0..9, A^(B+C) #= A^B*A^C.
0..9 の A、
A^C#=_A,
A^B#=_B,
A^_C#=_D,
C で 0..9、
B+C#=_C,
0..9 の B、
_B*_A#=_D,
_C in 0..18
?- abs(X) #=< 7^7^7 .
X in -37598235267....

間隔は 2^32 や 2^64 のような機械語サイズに制限されないことに注意してください。

于 2012-04-02T11:10:05.527 に答える