Sziasztok!
Az elso kishazi megoldasahoz lenne szuksegem segitsegre.
Addig szepen mukodik a program, hogy egyetlen formula
kielegithetoseget illetve az ehhez szukseges behelyettesiteseket
megadja.
A gondom olyan esetben van, amikor
sat(..formula1..), sat(..formula2..) ...
alaku kerdeseket teszunk fel. Valahogy ugy tunik, hogy a formula1 es
formula2 valtozoit belso abrazolasban mas-mas nevvel latja el. (Tehat
pl. formula1-beli A-bol _409 lesz, formula2-belibol pedig _4312.)
A feladatot a CLP MiniNat mintajara szerettem volna megoldani, egy az
ottani kiertel-hez teljesen hasonlo pedikatumom van (calc). Ennek
fejkommentje:
% calc(Kif,E,Cel,N)
% Kif kifejezest erteket E-ben eloallito cel kerul a Cel-ba.
% N-rekurzio melysege (csak nyomkovetes miatt van/lehet ra szukseg)
A sat eljarasom ezt hivja meg, majd vegrehajtja a celt:
sat(Kif) :-
calc(Kif,1,Cel,0),
%write(Cel),
call(Cel).
A calc-cal kiirattam azt is, hogy egy-egy alkalommal milyen
kifejezest bont eppen "kette", igy a kovetkezo futasi eredmenyt
kaptam:
| ?- sat( ((A+B)*C) =\= ((A*C)+B)), sat(A*B).
0 (_473+_495)*_522=\=_473*_522+_495
1 (_473+_495)*_522
2 _473+_495
3 _473
3 _495
2 _522
1 _473*_522+_495
2 _473*_522
3 _473
3 _522
2 _495
ITT KEZDIDIK A MASODIK SAT KIFEJEZESENEK KIERTEKELESE, LATHATOAN UJ
NEVET KAPOTT AZ A ES B VALTOZO
0 _3382*_3471
1 _3382
1 _3471
A = 1,
B = 1,
C = 0,
prolog:trig_nondif(_B,_C,_A,_D),
prolog:trig_or([_B,_C,_D],_A,_A),
prolog:when(_A,(nonvar(_B);nonvar(_C);?=(_B,_C)),user:not(_B,_C)) ? ;
no
| ?-
Kerdesem, hogy mit kellene tennem ahhoz, hogy a rendszer a kulonbozo
sat hivasok argumentumaiban kapott valtozokat a rendszer ne
kulonboztesse meg, hanem azonosnak tekintse oket?
Koszonettel,
Buza Krisztian
__________________________________
Yahoo! FareChase: Search multiple travel sites in one click.
http://farechase.yahoo.com