Diamante

Diamante

Difícil

Instruções

O kata do diamante recebe uma letra como entrada e apresenta-a sob a forma de um diamante. Dada uma letra, imprime um diamante que começa com 'A' e tem a letra fornecida no ponto mais largo.

Requisitos

  • A primeira linha contém um único 'A'.
  • A última linha contém um único 'A'.
  • Todas as linhas, exceto a primeira e a última, têm exatamente duas letras iguais.
  • Todas as linhas têm tantos espaços à direita como à esquerda. (Podem ser 0).
  • O diamante é simétrico na horizontal.
  • O diamante é simétrico na vertical.
  • O diamante tem forma quadrada (a largura é igual à altura).
  • As letras formam a figura de um diamante.
  • A metade superior tem as letras por ordem crescente.
  • A metade inferior tem as letras por ordem decrescente.
  • Os quatro cantos (que contêm os espaços) são triângulos.

Exemplos

Nos exemplos seguintes, os espaços são representados por carateres ·.

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 que costumas ver. Normalmente, um teste verifica se, para um determinado valor de entrada, a saída corresponde ao valor esperado. A isto chama-se testes baseados em valores. No entanto, este exercício usa testes baseados em propriedades, em que os testes verificam se, para um intervalo de valores de entrada, a saída tem uma determinada propriedade. As duas diferenças principais que distinguem os testes baseados em propriedades dos testes baseados 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 da forma do diamante que o teu código deve produzir. Além disso, todos os testes verificam se a propriedade que testam se aplica a todas as letras de entrada válidas ('A' a 'Z').

Para facilitar os testes baseados em propriedades, os testes deste exercício recorrem aos pacotes FsCheck e FsCheck.Xunit. Para saberes mais sobre o FsCheck, podes consultar a documentação do framework aqui.

Se quiseres mais informações sobre testes baseados em propriedades, consulta este artigo.


Fonte

Seb RoseO link abre numa nova janela ou separador
Editar via GitHub A ligação abre numa nova janela ou separador
C# Exercism

Estás pronto para começar Diamante?

Inscreve-te no Exercism para aprenderes e dominares C# com 62 conceitos178 exercícios, e mentoria humana real, tudo grátis.