Пролог компактен?

У меня проблема, мне нужно сжать производный результат следующим образом:

0*x*x + 2*(1*x + x*1) =====> example: 0+2*(2*x) =====> 0+2*4*x====>8*x

Является ли это возможным? Спасибо за вашу помощь.

С уважением, Вольтер.


person user52376    schedule 14.11.2011    source источник
comment
Обычно это называют упрощением.   -  person starblue    schedule 15.11.2011


Ответы (1)


Да, это возможно, просто нужно немного поработать. Вам нужно будет написать атомарные правила, такие как

rule(0*_, 0).
rule(_*0, 0).
rule(1*X, X).
rule(X*1, X).

и реализовать предикат фиксированной точки (возможно, управляемый цикл), который применяет правила до сходимости.

person Fred Foo    schedule 14.11.2011
comment
спасибо за ответ, но как разбить эту строку на атомарные формулы? - person user52376; 14.11.2011
comment
мне нужен цикл, чтобы распаковать все термины? - person user52376; 14.11.2011
comment
@flatronflow: вам нужно написать DCG для ваших выражений. - person Fred Foo; 14.11.2011