Diamante

Diamante

Difícil

Instruções

O kata do diamante recebe uma letra como entrada e a exibe em formato de diamante. Dada uma letra, ele imprime um diamante começando com 'A', com a letra fornecida no ponto mais largo.

Requisitos

  • A primeira linha contém um 'A'.
  • A última linha contém um 'A'.
  • Todas as linhas, exceto a primeira e a última, têm exatamente duas letras idênticas.
  • Todas as linhas têm tantos espaços no final quantos no início. (Pode ser 0.)
  • O diamante é simétrico na horizontal.
  • O diamante é simétrico na vertical.
  • O diamante tem formato quadrado (a largura é igual à altura).
  • As letras formam um formato de diamante.
  • A metade de cima tem as letras em ordem crescente.
  • A metade de baixo tem as letras em ordem decrescente.
  • Os quatro cantos (que contêm os espaços) são triângulos.

Exemplos

Nos exemplos a seguir, os espaços são indicados por caracteres ·.

Diamante para a letra 'A':

A

Diamante para a letra 'C':

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

Diamante para a letra 'E':

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

Dicas

Os testes deste exercício são diferentes dos testes comuns. Normalmente, um teste verifica se, para uma determinada entrada, a saída corresponde ao valor esperado. Isso se chama teste baseado em valores. No entanto, este exercício usa teste baseado em propriedades, em que os testes verificam se, para uma série de entradas, a saída tem uma propriedade específica. As duas principais diferenças que distinguem o teste baseado em propriedades do teste baseado em valores são:

  1. Um teste baseado em propriedades não trabalha com um único valor de entrada, mas com muitos.
  2. Um teste baseado em propriedades verifica propriedades, não valores concretos.

Neste exercício, todos os testes verificam uma propriedade do formato de diamante que seu código deve produzir. Além disso, todos os testes verificam se a propriedade testada vale para todas as letras de entrada válidas ('A' a 'Z').

Para facilitar o teste baseado em propriedades, os testes deste exercício utilizam os pacotes FsCheck e FsCheck.Xunit. Para saber mais sobre o FsCheck, a documentação do framework está disponível aqui.

Se você quiser mais informações sobre teste baseado em propriedades, veja este artigo.


Fonte

Seb RoseO link abre em uma nova janela ou aba
Editar via GitHub O link abre em uma nova janela ou aba
C# Exercism

Tudo pronto para começar Diamante?

Crie sua conta no Exercism para aprender e dominar C# com 62 conceitos178 exercícios e mentoria humana de verdade, tudo de graça.