Bearbeiten von „P1-WS04-MusterLoesung06.txt

Zur Navigation springen Zur Suche springen

Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.

Aktuelle Version Dein Text
Zeile 1: Zeile 1:
<pre>
<pre>
% Musterloesung Aufgabenblatt 6
% Musterloesung Aufgabenblatt 6
% P1 [[WiSe]] 04/05
% P1 WiSe 04/05
%   Daniel Schreckling
%   Daniel Schreckling


Zeile 57: Zeile 57:
% ----------
% ----------


% hoehenunterschied_ww_verbr(+Wasserwerk, +[[VerbrRegion]], ?Unterschied)
% hoehenunterschied_ww_verbr(+Wasserwerk, +VerbrRegion, ?Unterschied)
%
%
% Gelingt, wenn die Verbraucherregion +[[VerbrRegion]] letztlich von  
% Gelingt, wenn die Verbraucherregion +VerbrRegion letztlich von  
% +Wasserwerk mit Wasser versorgt wird. ?Unterschied enthaelt bei Erfolg  
% +Wasserwerk mit Wasser versorgt wird. ?Unterschied enthaelt bei Erfolg  
% den Hoehenunterschied zwischen Wasserwerk und Verbraucherregion.
% den Hoehenunterschied zwischen Wasserwerk und Verbraucherregion.
Zeile 65: Zeile 65:
% gegebenenfalls auch mehrer Hoehenunterschiede.
% gegebenenfalls auch mehrer Hoehenunterschiede.


hoehenunterschied_ww_verbr(Wasserwerk, [[VerbrRegion]], Unterschied) :-
hoehenunterschied_ww_verbr(Wasserwerk, VerbrRegion, Unterschied) :-
wasserwerk(Wasserwerk, [[HoeheWW]]),
wasserwerk(Wasserwerk, HoeheWW),
region([[VerbrRegion]], [[HoeheVR]]),
region(VerbrRegion, HoeheVR),
wird_versorgt_von([[VerbrRegion]], Wasserwerk, _),
wird_versorgt_von(VerbrRegion, Wasserwerk, _),
hoehen_unterschied([[VerbrRegion]], Wasserwerk, Unterschied).
hoehen_unterschied(VerbrRegion, Wasserwerk, Unterschied).
% Aufgabe 1c
% Aufgabe 1c
% ----------
% ----------


% wird_versorgt_von(?Senke, ?Quelle, ?[[MaxDiff]])
% wird_versorgt_von(?Senke, ?Quelle, ?MaxDiff)
%
%
% Gelingt, wenn ?Senke von ?Quelle mit Trinkwasser versorgt wird.
% Gelingt, wenn ?Senke von ?Quelle mit Trinkwasser versorgt wird.
% In ?[[MaxDiff]] wird die größte Höhendifferenz gespeichert,
% In ?MaxDiff wird die größte Höhendifferenz gespeichert,
% die auf irgendeinem Weg von der Senke zur Quelle überwunden wird.
% die auf irgendeinem Weg von der Senke zur Quelle überwunden wird.
% Da es mehrere Wege geben kann, liefert wird_versorgt_von\2  
% Da es mehrere Wege geben kann, liefert wird_versorgt_von\2  
% gegebenenfalls auch mehrer Hoehenunterschiede.
% gegebenenfalls auch mehrer Hoehenunterschiede.


wird_versorgt_von(Senke,Quelle, [[MaxDiff]]) :-
wird_versorgt_von(Senke,Quelle, MaxDiff) :-
wasserwerk(Quelle, _),
wasserwerk(Quelle, _),
   ist_angeschlossen_an(Senke,Quelle),
   ist_angeschlossen_an(Senke,Quelle),
hoehen_unterschied(Senke, Quelle, [[MaxDiff]]).
hoehen_unterschied(Senke, Quelle, MaxDiff).


wird_versorgt_von(Senke,Quelle, [[MaxDiff]]) :-
wird_versorgt_von(Senke,Quelle, MaxDiff) :-
   ist_angeschlossen_an(Senke,Ort),
   ist_angeschlossen_an(Senke,Ort),
   wird_versorgt_von(Ort,Quelle, [[ThisDiff]]),
   wird_versorgt_von(Ort,Quelle, ThisDiff),
hoehen_unterschied(Senke, Ort, Diff),
hoehen_unterschied(Senke, Ort, Diff),
max(Diff, [[ThisDiff]], [[MaxDiff]]).
max(Diff, ThisDiff, MaxDiff).


% max_hoehenunterschied_ww_verbr(+Wasserwerk, +[[VerbrRegion]], ?[[MaxDiff]])
% max_hoehenunterschied_ww_verbr(+Wasserwerk, +VerbrRegion, ?MaxDiff)
%
%
% Gelingt, wenn die Verbraucherregion +[[VerbrRegion]] letztlich von  
% Gelingt, wenn die Verbraucherregion +VerbrRegion letztlich von  
% +Wasserwerk mit Wasser versorgt wird. ?[[MaxDiff]] liefert bei Erfolg  
% +Wasserwerk mit Wasser versorgt wird. ?MaxDiff liefert bei Erfolg  
% den maximalen Hoehenunterschied zwischen zwei Netzknoten auf dem Weg
% den maximalen Hoehenunterschied zwischen zwei Netzknoten auf dem Weg
% zwischen Wasserwerk und Verbraucherregion.
% zwischen Wasserwerk und Verbraucherregion.
Zeile 102: Zeile 102:
% gegebenenfalls auch mehrer Hoehenunterschiede.
% gegebenenfalls auch mehrer Hoehenunterschiede.


max_hoehenunterschied_ww_verbr(Wasserwerk, [[VerbrRegion]], [[MaxDiff]]) :-
max_hoehenunterschied_ww_verbr(Wasserwerk, VerbrRegion, MaxDiff) :-
region([[VerbrRegion]], _),
region(VerbrRegion, _),
wasserwerk(Wasserwerk, _),
wasserwerk(Wasserwerk, _),
wird_versorgt_von([[VerbrRegion]], Wasserwerk, [[MaxDiff]]).
wird_versorgt_von(VerbrRegion, Wasserwerk, MaxDiff).




Zeile 121: Zeile 121:
zzins(Anlage, Zinssatz, Laufzeit, Ausschuettung) :-
zzins(Anlage, Zinssatz, Laufzeit, Ausschuettung) :-
Laufzeit > 0,
Laufzeit > 0,
[[Years2Go]] is Laufzeit - 1,
Years2Go is Laufzeit - 1,
zzins(Anlage, Zinssatz, [[Years2Go]], [[ZwischenBetrag]]),
zzins(Anlage, Zinssatz, Years2Go, ZwischenBetrag),
Ausschuettung is ([[ZwischenBetrag]] * (1 + Zinssatz/100)).
Ausschuettung is (ZwischenBetrag * (1 + Zinssatz/100)).


% Aufgabe 2b
% Aufgabe 2b
Zeile 183: Zeile 183:
% veranschaulicht wird. Es wird eine normale Parabel gezeichnet, deren
% veranschaulicht wird. Es wird eine normale Parabel gezeichnet, deren
% Punkte aber proportional zum Funktionswert größer werden. Das
% Punkte aber proportional zum Funktionswert größer werden. Das
% Ergebnis könnte jedem Monster[[/Alien/Katastrophenfilm]] entnommen sein;
% Ergebnis könnte jedem Monster/Alien/Katastrophenfilm entnommen sein;
% schon kubisches Wachstum wäre nicht mehr richtig zu erkennen,
% schon kubisches Wachstum wäre nicht mehr richtig zu erkennen,
% geschweige denn exponentielles.
% geschweige denn exponentielles.
Zeile 198: Zeile 198:




% draw_parabola(+Bildobjekt, +X, +[[MaxX]]) erzeugt eine normale Parabel,
% draw_parabola(+Bildobjekt, +X, +MaxX) erzeugt eine normale Parabel,
% d.h. die Kurve y = x^2, wobei die Punkte proportional zum Wert y
% d.h. die Kurve y = x^2, wobei die Punkte proportional zum Wert y
% größer werden.
% größer werden.
draw_parabola(_,X,[[MaxX]]):- X >= [[MaxX]].
draw_parabola(_,X,MaxX):- X >= MaxX.
draw_parabola(Bild,X,[[MaxX]]) :-
draw_parabola(Bild,X,MaxX) :-
         Y is X*X / 100,
         Y is X*X / 100,
         new(O, circle(Y)),
         new(O, circle(Y)),
Zeile 210: Zeile 210:
         send(Bild, display(O, point(X,Y2))),
         send(Bild, display(O, point(X,Y2))),
         X2 is X + 1,
         X2 is X + 1,
         draw_parabola(Bild,X2,[[MaxX]]).
         draw_parabola(Bild,X2,MaxX).


% :-draw(300).
% :-draw(300).
Zeile 257: Zeile 257:
% --------
% --------


% Prädikat slice_i(+Liste, ?[[NewList]])
% Prädikat slice_i(+Liste, ?NewList)
%
%
% Extrahiert aus der Liste +Liste jedes zweite Element und  
% Extrahiert aus der Liste +Liste jedes zweite Element und  
% speichert diese mit Hilfe gerade_Pos/2 und findall/3 in
% speichert diese mit Hilfe gerade_Pos/2 und findall/3 in
% ?[[NewList]]
% ?NewList
%
%
% Da gerade_Pos/2 für eine leere Liste nicht erfolgreich,
% Da gerade_Pos/2 für eine leere Liste nicht erfolgreich,
% liefert slice_i([], [[NewList]]) in [[NewList]] auch eine leere  
% liefert slice_i([], NewList) in NewList auch eine leere  
% Liste.
% Liste.


slice_i(List, [[NewList]]) :-  
slice_i(List, NewList) :-  
findall(Element, gerade_Pos(List, Element), [[NewList]]).
findall(Element, gerade_Pos(List, Element), NewList).


% Teil (ii)
% Teil (ii)
% ---------
% ---------


% Prädikat slice_ii(+Liste, ?[[NewList]])
% Prädikat slice_ii(+Liste, ?NewList)
%
%
% Extrahiert aus der Liste +Liste jedes zweite Element und  
% Extrahiert aus der Liste +Liste jedes zweite Element und  
Zeile 281: Zeile 281:
slice_ii([], []).
slice_ii([], []).
slice_ii([_], []).
slice_ii([_], []).
slice_ii([_,Element2|Tail], [Element2|[[NewList]]]) :- slice_ii(Tail, [[NewList]]).
slice_ii([_,Element2|Tail], [Element2|NewList]) :- slice_ii(Tail, NewList).


</pre>
</pre>

Bitte beachte, dass alle Beiträge zu Fachschaft_Informatik von anderen Mitwirkenden bearbeitet, geändert oder gelöscht werden können. Reiche hier keine Texte ein, falls du nicht willst, dass diese ohne Einschränkung geändert werden können.

Du bestätigst hiermit auch, dass du diese Texte selbst geschrieben hast oder diese von einer gemeinfreien Quelle kopiert hast (weitere Einzelheiten unter Fachschaft Informatik:Urheberrechte). ÜBERTRAGE OHNE GENEHMIGUNG KEINE URHEBERRECHTLICH GESCHÜTZTEN INHALTE!

Bitte beantworte die folgende Frage, um diese Seite bearbeiten zu können (<a href="/Fachschaft/wiki/index.php?title=Special:Captcha/help" class="internal">weitere Informationen</a>):

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)