Diamant

Diamant

Einfach

Anleitung

Die Diamond-Kata nimmt als Eingabe einen Buchstaben und gibt ihn in Form einer Raute aus. Zu einem Buchstaben gibt sie eine Raute aus, die mit 'A' beginnt und den übergebenen Buchstaben an der breitesten Stelle hat.

Anforderungen

  • Die erste Zeile enthält ein 'A'.
  • Die letzte Zeile enthält ein 'A'.
  • Alle Zeilen außer der ersten und der letzten enthalten genau zwei gleiche Buchstaben.
  • Alle Zeilen haben genauso viele Leerzeichen am Ende wie am Anfang. (Das können 0 sein.)
  • Die Raute ist horizontal symmetrisch.
  • Die Raute ist vertikal symmetrisch.
  • Die Raute hat eine quadratische Form (die Breite entspricht der Höhe).
  • Die Buchstaben bilden eine Raute.
  • Die obere Hälfte enthält die Buchstaben in aufsteigender Reihenfolge.
  • Die untere Hälfte enthält die Buchstaben in absteigender Reihenfolge.
  • Die vier Ecken (die aus Leerzeichen bestehen) sind Dreiecke.

Beispiele

In den folgenden Beispielen werden Leerzeichen durch ·-Zeichen dargestellt.

Raute für den Buchstaben 'A':

A

Raute für den Buchstaben 'C':

··A··
·B·B·
C···C
·B·B·
··A··

Raute für den Buchstaben 'E':

····A····
···B·B···
··C···C··
·D·····D·
E·······E
·D·····D·
··C···C··
···B·B···
····A····

Hinweise

Du musst die Funktion diamond implementieren, die einen Diamanten ausgibt, der bei A beginnt und an seinen breitesten Stellen das gegebene Zeichen hat. Du kannst die vorgegebene Signatur verwenden, wenn du dir bei den Typen unsicher bist, aber lass dich dadurch nicht in deiner Kreativität einschränken:

diamond :: Char -> Maybe [String]

Diese Übung arbeitet mit Textdaten. Aus historischen Gründen ist der String-Typ von Haskell synonym mit [Char], einer Liste von Zeichen. Für eine effizientere Verarbeitung von Textdaten kannst du den Text-Typ verwenden.

Als optionale Erweiterung dieser Übung kannst du:

  • dich über String-Typen in Haskell informieren.
  • - text zu deiner Liste der Abhängigkeiten in package.yaml hinzufügen.
  • Data.Text auf die folgende Weise importieren:
import qualified Data.Text as T
import           Data.Text (Text)
  • jetzt z. B. diamond :: Char -> Maybe [Text] schreiben und Data.Text-Kombinatoren als z. B. T.pack verwenden,
  • die Dokumentation für Data.Text nachschlagen,
  • anschließend alle Vorkommen von String in Diamond.hs durch Text ersetzen:
diamond :: Char -> Maybe [Text]

Dieser Teil ist völlig optional.


Quelle

Seb RoseDer Link öffnet sich in einem neuen Fenster oder Tab
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Haskell Exercism

Bereit, mit Diamant zu starten?

Melde dich bei Exercism an, um Haskell mit 107 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.