2

木がバランスが取れているかどうかを教えてくれるプログラムを書きたいです。この場合、バランスが取れているとは、同じ高さまたは高低差が 1 であることを意味します。

ここまで書いてきたのですが、身長差1ではうまくいきません。

balanced(l(_)).
balanced(b(B1, B2)):-
    height(B1,H),
    height(B2,H),
    balanced(B1),
    balanced(B2).

balanced(b(B1,B2)):-
    height(B1,H + 1),
    height(B2,H),
    balanced(B1),
    balanced(B2).

balanced(b(B1,B2)):-
    height(B1,H),
    height(B2,H + 1),
    balanced(B1),
    balanced(B2).
4

1 に答える 1

1

H + 1HProlog に算術評価を行うように指示しない場合、プラス 1の値に評価されません。代わりに、Prolog+はファンクターとして and Hand1を引数として項を作成します。(この事実を納得させるためにH + 1 =.. L、 の値を試してみてください。)L

次のようなことをします

height(B1, H1),
height(B2, H2),
abs(H1 - H2) =< 1.

=<算術評価を行います。

于 2011-09-05T11:40:05.487 に答える