Einordnung

  • Interaktionmodus: funktionsdefinition
  • geschätzter Zeitwand:
    • Programmierneulinge: ca. 2 Stunden
    • Sprachneulinge: ca. 1 1/2 Stunden
    • Spracherfahrene: ca. 45 Minuten
  • Sprachempfehlung:
    • Für jede Sprache interessant

Aufgabe

Es sei ein String (Aneinanderreihung von Buchstaben, auch bekannt als Text) gegeben. Definiert eine Funktion/Methode welche für einen gegebenen String die folgenden Statistiken zurückgibt:

  • den String selbst
  • Länge des Strings
  • häufigster Buchstabe
  • seltenster Buchstabe
  • häufigstes Wort
  • seltenstes Wort

Die Statistik sollte hierbei in einem eigenen Datentyp verpackt werden. Dies kann ein eigens definierter Datentyp sein (bei Sprachen die dies unterstützen) oder auf einer Liste oder Map definiert sein.

In jedem Fall sollte es Funktionen geben, welche die einzelnen Bestandteile des Datentyps zurückliefern kann (z.B. least_frequent_char(type_instance)).

Wort ist im Sinne der Aufgabe so definiert, dass ein Wort folgende Begrenzungen hat:

  • Anfang eines Strings
  • Ende des Strings
  • Leerzeichen

Alles andere ist Teil eines Wortes (inklusive Sonderzeichen und Zahlen).

Beispiele

Als Repräsentation des Datentyps nutzen wir hier die Darstellung eines Hashes aus der Programmiersprache Ruby. Hierbei handelt es sich um eine Map: {key: 'value'}.

Beispiel 1

  • Eingabe: statistic_for('hello world')
  • Rückgabe:

    {
      string: 'hello world',
      length: 11,
      least_frequent_char: 'h',
      most_frequent_char: 'o',
      least_frequent_word: 'hello',
      most_frequent_word: 'hello'
    }
    

Beispiel 2

  • Eingabe: statistic_for('foo bar dar foo was here')
  • Rückgabe:

    {
      string: 'foo bar dar, foo was here',
      length: 24,
      least_frequent_char: 'b',
      most_frequent_char: 'o',
      least_frequent_word: 'bar',
      most_frequent_word: 'foo'
    }
    

Beispiel 3

  • Eingabe: statistic_for('this wo,&rd appears again: wo,&rd')
  • Rückgabe:

    {
      string: 'this wo,&rd appears again: wo,&rd',
      length: 33,
      least_frequent_char: 't',
      most_frequent_char: 'a',
      least_frequent_word: 'this',
      most_frequent_word: 'wo,&rd'
    }