Hallo zusammen,
ich habe ein etwas größeres Problem (für Prolog Profis ist es wohl nicht mal ein kleines Problem ). Ich habe nur einen kleinen Einführungskurs in Prolog gehabt und komme deshalb nicht weiter. Ich habe folgendes Problem:
Ich habe eine Matrize (n x m) Diese Matritze ist teilweise mit Werten zwischen 1 und 8 beschrieben. Diese Zahl gibt die Summe der angrenzenden "Minen" an. die Gesamtzahl der vorhandenen Minen ist K. Nun möchte ich über ein Prolog Programm alle Möglichen "Minenfelder" ausgeben. Die Minenfelder sollen nur 0 oder 1 enthalten. Eins steht für eine Mine und Null für keine!
Meine Ausgangsfunktion sieht folgendermaßen aus:
%Matritze mit Größe NxM, Lent=Eingangsmatitze, K= Anzahl der Minen und G ist die Lösungsmatitze
local(M,N,Lent,K,G):-lösungsaufbau(M,N,Lent,G),bedingungen(M,N,Lent,G).
lösungsaufbau(M,N,Lent,G):-matritze(M,N,G),einfuegen(Lent,G).
%NxM Matritze erstellen
matritze(_,0,[]).
matritze(M,N,G):-int(M),int(N),size(G)=N,G=[L|SL],size(L)=M,matritze(M,N-1,SL).
%überall eine Null einfügen, wo sicher keine Mine ist (Zahl in der Eingangsmatritze)
einfuegen([],_).
einfuegen(Lent,G):-Lent=[L|SL],G=[Lg|SLg],zeile(L,Lg),einfuegen(SL,SLg).
%jede Zeile
zeile([],_).
zeile([X|SL],[Y|SLg]):- X=cc(0,8),Y=0,zeile(SL,SLg).
zeile([X|SL],[Y|SLg]):- X= -1, Y=cc(0,1),zeile(SL,SLg).
bedingungen(M,N,Lent,G):-
%Summe der umliegenden Felder = Anzahl der Minen
Alles anzeigen
Ich weiß einfach nicht, wie ich die Summe der umliegenden Felder berechnen kann. Meine Matritze liegt halt in einer dummen Form vor. Bin mir aber sicher, dass es trotzdem relativ einfach geht, oder?
Bitte um eure Hilfe,
danke im voraus
Gruß Kiki