Hilfe!!! wie kann man Elemente einer Liste zählen?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hilfe!!! wie kann man Elemente einer Liste zählen?

    Hallo,

    Ich habe ein Problem mit folgender Aufgabe in Prolog:

    Ich habe eine Liste z.B. (a, b, c, a) und möchte die einzelnen verschiedenen Elemente dieser Liste zählen und diese verschiedenen Elemente mit ihrer Häufigkeit in einer Liste ausgeben.
    Sodas folgendes Ergebnis raus kommt: (2a, 1b, 1c)
    Ist eigentlich egal wie die Ergebnisliste ausgegeben wird, hauptsache ist das die verschiedenen Elemente zusammen mit Ihrer Häufigkeit ausgegeben werden.

    Bin hier schon am verzweifeln beim Lösen dieser Aufgabe.
    Wären super wenn einer eine Lösung hätte.

    MFG
    Mathias
  • poste bitte mal die ansätze

    aber vielleicht hilft dir das hier schon weiter:

    http://www.supportnet.de/discussion/listmessages.asp?autoid=183163
    Wie du richtigerweise erkannt hast, werden Bedingungen durch mehrere gleichnamige Prozeduren realisiert. Für dein Problem bräuchtest du mind. 3 Bedingungen.
    1. was passiert wenn die Liste leer ist.
    2. was passiert, wenn das zu suchende Element gefunden wurde
    3. was passiert, wenn das zu suchende Element nicht gefunden wird

    Es ist zu empfehlen, das zu suchende Element in einer weiteren Variablen (in der Prozedurparameterliste) anzugegen
    z.B. count([Kopf|Tail], SuchElement, X)
  • Hier ist mal ein Ansatz

    Hallo,

    ich habe mal mit einem Kuppel mich weiter daran probiert.
    Das ist folgender Ansatz:


    count_element( [], Element, 0).
    count_element( [H|T], Element, Anzahl) :-
    H = Element, count_element(T, Element, X), Anzahl is X + 1.
    count_element( [H|T], Element, Anzahl) :-
    count_element(T, Element, Anzahl).


    Also wie gesagt das Ergebenis sollte eben eine Liste darstellen in der das jeweilige Element und die Häufigkeit des Elements dargestellt wird.

    Kannst Du mir da weiterhelfen?

    MFG
    Mathias