+1 Daumen
246 Aufrufe

Aufgabe:

Eimer-Problem

Ein Wasserverkäufer sitzt an seinem Brunnen, um Wasser zu verkaufen. Er hat zwei Eimer, einen zu 7 l und einen zu 4 l. Für einen Liter Wasser verlangt er einen Preis von einem Goldstück.
Die Wasserkäufer möchten daher nur die tatsächlich benötigte Wassermenge kaufen, z. B. 1 l, 2 l, 3 l, 5 l und 6 l.

Der Wasserverkäufer kann folgende Handlungen ausführen:
· einen leeren Eimer im Brunnen voll Wasser füllen,
· einen Eimer beliebiger Füllung in den Brunnen entleeren,
· Wasser aus einem Eimer in den anderen ohne Verlust umfüllen.

Ist es möglich und wenn ja, wie die gewünschten Mengen abzumessen?

Anleitung:
a) Legen Sie eine Datenstruktur fest, die den Zustand der ,,Eimer-Welt“  repräsentiert. Als wesentliche Daten muss sie die Inhalte der beiden Eimer enthalten.

b) Formulieren Sie mithilfe dieser Datenstruktur sechs Regeln für die Prozedur aktion/2, die die möglichen Handlungen repräsentieren:
· den großen Eimer entleeren · den kleinen Eimer entleeren · den großen Eimer vollschöpfen · den kleinen Eimer vollschöpfen
· die mögliche Menge vom kleinen Eimer in den großen Eimer umfüllen · die mögliche Menge vom großen Eimer in den kleinen Eimer umfüllen

c) Definieren Sie einen sinnvollen Startzustand durch einen Fakt!
Definieren Sie für die interessierenden Zielzustände jeweils einen Fakt!

d) Wählen Sie ein geeignetes Suchverfahren zur Lösung!


Problem/Ansatz:

Die Aufgabe ist für Logikprogramierung in Prolog. Wie könnte man aber so eine Aufgabe grundsätzlich programmiermäßig darstellen?

Kann ruhig auch in C, C++ oder Java sein.

1. Teil: Datenstruktur

2 l Eimer, 4 l Eimer und Mengen

2. Teil: 6 Funktionen

3. Teil + 4. Teil: Start, Ende, Hauptprogramm

5. Teil: Suchverfahren

Kennt sich jemand mit Logikprogrammierung hier aus? Ich habe keinen richtigen Lösungsansatz. Ich währe um etwas Hilfe dankbar.

Gruß

Jan

Avatar von

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

0 Antworten
Gefragt 14 Nov 2022 von matheTUDO
0 Antworten
1 Antwort
0 Antworten

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community