Frage

habe ich ein sehr seltsames Problem mit PROLOG. Ich habe es vorher benutzt, aber es ist eine Weile her und ich bin verrostet. Ich habe eine Liste von Variablen, und ich brauche, dass keiner von ihnen gleich ist zu gewährleisten.

Ich habe versucht:

use_module(library(bounds)). all_different(A, B, C, D, 6, 8).

Allerdings, wenn ich dies versuchen, ich einen Fehler erhalten, dass all_different / 6 nicht definiert ist.

Wie kann ich mich über dieses Problem zu lösen? Gibt es eine Bibliotheksfunktion, dass ich direkt für diese anrufen kann?

Ich bin sehr fest und würde schätzen jede Hilfe.

Vielen Dank im Voraus.

solve([
    [A, 6, 1],

    [B, 5, C, 2, D, E, F, G, 6],

    [6, H, I, 5, J, K, 2, L, 3],

    [5, M, 6, N, O, 4, P, Q, 5],

    [4, R, S, T, U, 6, V, 4, W],

    [2, 0, X]
  ]) :-
     all_different([A,6,1,2,D,E]),
     all_different([B,5,C,6,H,I]),
     all_different([C,2,D,I,5,J]),
     all_different([D,E,F,J,K,2]),
     all_different([F,G,6,2,L,3]),
     all_different([H,I,5,M,6,N]),
     all_different([5,J,K,N,O,4]),
     all_different([K,2,L,4,P,Q]),
     all_different([5,M,6,4,R,S]),
     all_different([6,N,O,S,T,U]),
     all_different([O,4,P,U,6,V]),
     all_different([P,Q,5,V,4,W]),
     all_different([T,U,6,2,1,X]),

     A<7, A>0,       B<7, B>0,       C<7, C>0,       D<7, D>0,
     E<7, E>0,       F<7, F>0,       G<7, G>0,       H<7, H>0,
     I<7, I>0,       J<7, J>0,       K<7, K>0,       L<7, L>0,
     M<7, M>0,       N<7, N>0,       O<7, O>0,       P<7, P>0,
     Q<7, Q>0,       R<7, R>0,       S<7, S>0,       T<7, T>0,
     U<7, U>0,       V<7, V>0,       W<7, W>0,       X<7, X>0.
War es hilfreich?

Lösung

all_different([A,B,C,D,6,8]).

Ich glaube, dass nur eine Liste kann in all_different übergeben werden.

Andere Tipps

Ich denke, das> / 2 und

        ?- all_different([X,Y]), 0 #< X, X #< 3, 1 #< Y, Y #< 4, indomain(X), indomain(Y). 
        X = 1,
        Y = 2 ;
        X = 1,
        Y = 3 ;
        X = 2,
        Y = 3.

P. S. indomain / 1 aus derselben Bibliothek Ausbeuten alle denkbaren Werte innerhalb Applied Einschränkungen.

Die „ic“ Einschränkung Bibliothek von Eclipse Prolog bietet das Prädikat alldifferent / 1, das eine Liste von Variablen als Argument, zum Beispiel alldifferent([X,Y]) und berechnet, was Sie suchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top