Track
/
C#
C#
/
Esercizi
/
Diamante
Diamante

Diamante

Difficile

Istruzioni

La kata del diamante prende in input una lettera e la dispone in output a forma di diamante. Data una lettera, stampa un diamante che inizia con 'A', con la lettera fornita nel punto più largo.

Requisiti

  • La prima riga contiene una sola 'A'.
  • L'ultima riga contiene una sola 'A'.
  • Tutte le righe, tranne la prima e l'ultima, contengono esattamente due lettere identiche.
  • Tutte le righe hanno tanti spazi finali quanti spazi iniziali. (Possono essere 0).
  • Il diamante è simmetrico orizzontalmente.
  • Il diamante è simmetrico verticalmente.
  • Il diamante ha una forma quadrata (la larghezza è uguale all'altezza).
  • Le lettere formano la forma di un diamante.
  • La metà superiore ha le lettere in ordine crescente.
  • La metà inferiore ha le lettere in ordine decrescente.
  • I quattro angoli (che contengono gli spazi) sono triangoli.

Esempi

Nei seguenti esempi, gli spazi sono indicati con il carattere ·.

Diamante per la lettera 'A':

A

Diamante per la lettera 'C':

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

Diamante per la lettera 'E':

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

Suggerimenti

I test di questo esercizio sono diversi da quelli a cui sei abituato. Normalmente un test verifica se, dato un certo input, l'output corrisponde al valore atteso. Questo si chiama test basato sui valori. Questo esercizio, invece, usa i test basati sulle proprietà, in cui i test verificano se, per una serie di input, l'output possiede una proprietà specifica. Le due differenze principali che distinguono i test basati sulle proprietà da quelli basati sui valori sono:

  1. Un test basato sulle proprietà non lavora con un unico valore di input, ma con molti.
  2. Un test basato sulle proprietà verifica proprietà, non valori concreti.

Per questo esercizio, i test verificano tutti una proprietà della forma a rombo che il codice dovrebbe produrre. Inoltre, tutti i test verificano se la proprietà che testano vale per tutte le lettere di input valide (da 'A' a 'Z').

Per facilitare i test basati sulle proprietà, i test di questo esercizio si avvalgono dei pacchetti FsCheck e FsCheck.Xunit. Per saperne di più su FsCheck, la documentazione del framework è disponibile qui.

Se vuoi maggiori informazioni sui test basati sulle proprietà, consulta questo articolo.


Fonte

Seb RoseIl link si apre in una nuova finestra o scheda
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
C# Exercism

Vuoi iniziare Diamante?

Iscriviti a Exercism per imparare e padroneggiare C# con 62 concetti178 esercizi e il mentoring di persone reali, tutto gratis.