Ich muss etwas wie ein Minesweeper in Prolog schreiben. Ich bin in der Lage, das in "normaler" Sprache zu tun, aber wenn ich versuche, mit Prolog zu programmieren, weiß ich überhaupt nicht, wie ich anfangen soll. Ich brauche eine Art von Tipps. Eingangsspezifikation:Prolog: Wo beginne ich Minesweeper-ähnliche Puzzles zu lösen?
Board Größe: m × n (m, n ∈ {1, ..., 16}), Liste von Tripeln ( i, j , k), wobei i ∈ {1, ..., m }, j ∈ {1, ..., n }, k ∈ {1, ..., 8}) beschreibt Felder mit Zahlen.
Zum Beispiel:
5
5
[(1,1,1), (2,3,3), (2,5,2), (3,2,2), (3,4,4), (4,1,1), (4,3,1), (5,5,2)].
Output: Liste der Stellen und den Atomen *
(für Schatz) und (für leere Felder). Es ist eine Darstellung der Puzzle-Lösung.
Regeln dieses Puzzle: In 20 Felder des Brettes gibt es versteckte Schätze. Eine Ziffer in einem Feld gibt an, wie viele Nachbarfelder einen Schatz haben. Es gibt keine Schätze in Feldern mit einer Ziffer. Markiere alle Felder mit einem Schatz.
Sie müssen erraten, wie viele Schätze sind in Diagonalen versteckt.
würde ich für alle Tipps dankbar. Ich will keine vollständige Lösung, ich möchte es selbst schreiben, aber ohne Hinweise bin ich dazu nicht in der Lage.
'build_matrix (Zeilengröße, ColSize, Mat): - Länge (C , ColSize), Länge (Mat, RowSize), maplist (copy_term (C), Mat) .' wäre sicherlich besser als eine Lösung von findall – m09
Ja, es ist besser. Und copy_term/2 ist ISO Standard, gut zu wissen! – CapelliC
Yup Ich benutze es regelmäßig, wenn ich diese Datenstrukturen einrichten möchte. Wenn lambda geladen ist \ führt eine Ausdruckskopie auch als falsch in einem anderen Beitrag BTW erwähnt, gut zu wissen! – m09