Sono nuovo a Prolog. Ho bisogno di scrivere un sommatore intero che aggiungerà numeri compresi tra 0-9 e altri numeri 0-9 e produrrà una soluzione 0-18. Questo è quello che voglio fare:Prolog Beginner: Come unificare con gli operatori di confronto aritmetico o come ottenere un set var nell'intervallo di valori
% pseudo code
add(in1, in2, out) :-
in1 < 10,
in2 < 10,
out < 18.
Mi piacerebbe essere in grado di chiamare in questo modo:
Per verificare se si tratta di una valida aggiunta:
?- add(1,2,3).
true.
?- add(1,2,4).
false.
con una parte mancante variabile:
?- add(X,2,3).
X = 1.
?- add(1,4,X).
X = 5.
Con più variabili mancanti:
?- add(X,Y,Z).
% Some output that would make sense. Some examples could be:
X=1, Y=1, Z=2 ;
X=2, Y=1, Z=3 ......
Mi rendo conto che questa è probabilmente una domanda piuttosto semplicistica ed è probabilmente molto semplice. Tuttavia, secondo il Prolog tutorial sto usando:
"A differenza di unificazione operatori aritmetici Operatori di confronto non possono essere utilizzate per dare i valori ad una variabile L'può essere valutata solo quando ogni termine su ogni lato sono stati un'istanza.".
Sì, questo non funziona perché quello che hai descritto nella tua risposta. – sixtyfootersdude