Hallo Ich stehe vor einem Problem. Nehmen wir an, ich habe 3 Operationen (+, -, *). Ich möchte eine Variable generieren, die alle möglichen Ausdrücke für eine gegebene Liste von Argumenten enthält, die diese 3 Operatoren verwenden.Prolog Generieren aller möglichen Operation für eine gegebene Liste
my_problem([1,2],X)
zurückkehren würde
X=1-2
X=1*2
X=1+2
my_problem([1,2,3],X)
X=1+2+3 X=1-2-3
X=1+2-3 X=1+2*3
X=1-2+3 ...
und so weiter zurückkommen würde.
Ich weiß, dass ich Ausdruck mit diesen Prädikaten erstellen kann.
args_expr(Arg1,Arg2,Arg1 + Arg2).
args_expr(Arg1,Arg2,Arg1 - Arg2).
args_expr(Arg1,Arg2,Arg1 * Arg2).
Gibt es eine clevere Möglichkeit, diese Variable zu generieren? Ich wäre dankbar für jede Hilfe oder Beratung.
Mit * alle möglichen Ausdrücke * meinst du nur alle Ausdrücke, die jeden Wert verwenden, den du genau einmal gibst? Und in Fällen, in denen Assoziativität einen Unterschied macht, wollen Sie alle Möglichkeiten (zB, X = 1 + 2 * 3 ', 'X = (1 + 2) * 3',' X = 1 * 2 + 3 ') , 'X = 1 * (2 + 3)', usw.)? Es ist ein wenig unklar, was genau Sie suchen. – lurker