Tracks
/
C#
C#
/
Übungen
/
Diamant
Diamant

Diamant

Schwer

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

Die Tests in dieser Übung unterscheiden sich von den Tests, die du sonst kennst. Normalerweise prüft ein Test, ob die Ausgabe für eine gegebene Eingabe dem erwarteten Wert entspricht. Das nennt man wertbasiertes Testen. Diese Übung verwendet jedoch eigenschaftsbasiertes Testen, bei dem die Tests prüfen, ob die Ausgabe für eine Reihe von Eingaben eine bestimmte Eigenschaft hat. Die zwei wichtigsten Unterschiede zwischen eigenschaftsbasiertem und wertbasiertem Testen sind:

  1. Ein eigenschaftsbasierter Test arbeitet nicht mit einem einzelnen Eingabewert, sondern mit vielen.
  2. Ein eigenschaftsbasierter Test überprüft Eigenschaften, nicht konkrete Werte.

In dieser Übung überprüfen alle Tests eine Eigenschaft der Rautenform, die dein Code erzeugen soll. Außerdem prüfen alle Tests, ob die Eigenschaft, die sie testen, für alle gültigen Eingabebuchstaben ('A' bis 'Z') gilt.

Um eigenschaftsbasiertes Testen zu ermöglichen, verwenden die Tests in dieser Übung die Pakete FsCheck und FsCheck.Xunit. Mehr über FsCheck erfährst du in der Dokumentation zum Framework.

Wenn du mehr über eigenschaftsbasiertes Testen erfahren möchtest, schau dir diesen Artikel an.


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
C# Exercism

Bereit, mit Diamant zu starten?

Melde dich bei Exercism an, um C# mit 62 Konzepte178 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.