Bearbeiten von „P1-WS04-MusterLoesung07.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 68: Zeile 68:


% (d) tore_durchschnitt(+Mannschaft,
% (d) tore_durchschnitt(+Mannschaft,
%                      ?[[Treffer_Durchschnitt]], ?[[Gegentreffer_Durchschnitt]])
%                      ?Treffer_Durchschnitt, ?Gegentreffer_Durchschnitt)
%    berechnet die durchschnittliche Zahl von Treffern und
%    berechnet die durchschnittliche Zahl von Treffern und
%    Gegentreffern pro Spiel einer Mannschaft (unter Benutzung des
%    Gegentreffern pro Spiel einer Mannschaft (unter Benutzung des
Zeile 74: Zeile 74:
%    length/2 für Listen):
%    length/2 für Listen):


tore_durchschnitt(Mannschaft, [[Treffer_Durchschnitt]], [[Gegentreffer_Durchschnitt]]) :-
tore_durchschnitt(Mannschaft, Treffer_Durchschnitt, Gegentreffer_Durchschnitt) :-
     trefferlisten(Mannschaft, Trefferliste, Gegentrefferliste),
     trefferlisten(Mannschaft, Trefferliste, Gegentrefferliste),
     sum(Trefferliste, Treffer),
     sum(Trefferliste, Treffer),
     sum(Gegentrefferliste, Gegentreffer),
     sum(Gegentrefferliste, Gegentreffer),
     length(Trefferliste, [[AnzahlSpiele]]),
     length(Trefferliste, AnzahlSpiele),
     [[Treffer_Durchschnitt]] is Treffer / [[AnzahlSpiele]],
     Treffer_Durchschnitt is Treffer / AnzahlSpiele,
     [[Gegentreffer_Durchschnitt]] is Gegentreffer / [[AnzahlSpiele]].
     Gegentreffer_Durchschnitt is Gegentreffer / AnzahlSpiele.


% (e) punkte(+Mannschaft, ?Plus, ?Minus)
% (e) punkte(+Mannschaft, ?Plus, ?Minus)
Zeile 92: Zeile 92:


punkte(Mannschaft, 1, 1) :-
punkte(Mannschaft, 1, 1) :-
     tore(Mannschaft, [[Unentschieden_Treffer]], [[Unentschieden_Treffer]]).
     tore(Mannschaft, Unentschieden_Treffer, Unentschieden_Treffer).


punkte(Mannschaft, 0, 2) :-
punkte(Mannschaft, 0, 2) :-
Zeile 153: Zeile 153:


% schlage_wort_nach(?Deutsch, ?Englisch, ?Woerterbuch)
% schlage_wort_nach(?Deutsch, ?Englisch, ?Woerterbuch)
% sucht Deutsch[[/Englisch]] Wortpaar in Woerterbuch (einer Liste von
% sucht Deutsch/Englisch Wortpaar in Woerterbuch (einer Liste von
% "Paaren", wobei letzteres lt. Aufgabenblatt Listen mit zwei
% "Paaren", wobei letzteres lt. Aufgabenblatt Listen mit zwei
% Elementen sind).
% Elementen sind).
Zeile 174: Zeile 174:


uebersetzung([], []).
uebersetzung([], []).
uebersetzung([[[DeutschesWort]]|[[RestDeutsch]]],
uebersetzung([DeutschesWort|RestDeutsch],
             [[[EnglischesWort]]|[[RestEnglisch]]]) :-
             [EnglischesWort|RestEnglisch]) :-
     schlage_wort_nach([[DeutschesWort]], [[EnglischesWort]]),
     schlage_wort_nach(DeutschesWort, EnglischesWort),
     uebersetzung([[RestDeutsch]], [[RestEnglisch]]).
     uebersetzung(RestDeutsch, RestEnglisch).


% Tests zeigen was passiert, wenn mehrer Wörter gleich übersetzt sind;
% Tests zeigen was passiert, wenn mehrer Wörter gleich übersetzt sind;
Zeile 218: Zeile 218:
suffix(S, [_|X]) :- suffix(S, X).
suffix(S, [_|X]) :- suffix(S, X).


%    Anfragen, bei denen nur der Präfix[[/Suffix]] instanziiert sind,
%    Anfragen, bei denen nur der Präfix/Suffix instanziiert sind,
%    terminieren, aber geben nur eine Lösung, bei der die gesamte
%    terminieren, aber geben nur eine Lösung, bei der die gesamte
%    Restliste durch eine Variable dargestellt wird:
%    Restliste durch eine Variable dargestellt wird:
Zeile 245: Zeile 245:
%    Hierfür muß wiederum lediglich der Rekursionsabschluß so
%    Hierfür muß wiederum lediglich der Rekursionsabschluß so
%    geändert werden, daß die Liste selbst mindestens ein Element
%    geändert werden, daß die Liste selbst mindestens ein Element
%    mehr als der Präfix[[/Suffix]] hat (hier als Varianten der Prädikate
%    mehr als der Präfix/Suffix hat (hier als Varianten der Prädikate
%    aus (b), analog auch für die Originale aus (a) machbar):
%    aus (b), analog auch für die Originale aus (a) machbar):


Zeile 285: Zeile 285:
% jetzt brauchen wir ein Hilfsprädikat, um rekursiv die Liste
% jetzt brauchen wir ein Hilfsprädikat, um rekursiv die Liste
% durchzugehen und die Worthäufigkeiten zu bestimmen:
% durchzugehen und die Worthäufigkeiten zu bestimmen:
     zaehle_woerter(Woerter, [[Haeufigkeiten_Roh]]),
     zaehle_woerter(Woerter, Haeufigkeiten_Roh),
% anschließend ist das Ergebnis noch nach den Wörtern sortiert,
% anschließend ist das Ergebnis noch nach den Wörtern sortiert,
% nicht wie gewünscht zuerst nach den Häufigkeiten, aber das ist
% nicht wie gewünscht zuerst nach den Häufigkeiten, aber das ist
% schnell erledigt:
% schnell erledigt:
     sort([[Haeufigkeiten_Roh]], Haeufigkeiten).
     sort(Haeufigkeiten_Roh, Haeufigkeiten).


% zaehle_woerter/2 bekommt die sortierte Liste der Wörter und soll
% zaehle_woerter/2 bekommt die sortierte Liste der Wörter und soll
Zeile 315: Zeile 315:
% Rekursionsabschluß / Zählen beenden, wenn man auf ein anderes Wort
% Rekursionsabschluß / Zählen beenden, wenn man auf ein anderes Wort
% trifft (und _nur_ dann):
% trifft (und _nur_ dann):
zaehle_wort([Wort,[[NaechstesWort]]|Woerter], Wort, 1, [[[NaechstesWort]]|Woerter]) :-
zaehle_wort([Wort,NaechstesWort|Woerter], Wort, 1, [NaechstesWort|Woerter]) :-
     Wort \= [[NaechstesWort]].
     Wort \= NaechstesWort.


% Rekursion falls Wort noch mehrfach in der Liste - ein Vorkommnis
% Rekursion falls Wort noch mehrfach in der Liste - ein Vorkommnis
% wegnehmen und nach diesem Wort weitersuchen/zählen, rekursiv Anzahl
% wegnehmen und nach diesem Wort weitersuchen/zählen, rekursiv Anzahl
% um einen erhöhen.
% um einen erhöhen.
zaehle_wort([Wort,Wort|Woerter], Wort, Anzahl, [[RestWoerter]]) :-
zaehle_wort([Wort,Wort|Woerter], Wort, Anzahl, RestWoerter) :-
     zaehle_wort([Wort|Woerter], Wort, Nochanzahl, [[RestWoerter]]),
     zaehle_wort([Wort|Woerter], Wort, Nochanzahl, RestWoerter),
     Anzahl is Nochanzahl + 1.
     Anzahl is Nochanzahl + 1.


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)