Rutas
/
C#
C#
/
Ejercicios
/
Diamante
Diamante

Diamante

Difícil

Instrucciones

El kata del diamante recibe como entrada una letra y la representa con forma de diamante. Dada una letra, imprime un diamante que empieza por la 'A', con la letra proporcionada en el punto más ancho.

Requisitos

  • La primera fila contiene una 'A'.
  • La última fila contiene una 'A'.
  • Todas las filas, excepto la primera y la última, tienen exactamente dos letras idénticas.
  • Todas las filas tienen tantos espacios finales como espacios iniciales. (Esto puede ser 0).
  • El diamante es simétrico horizontalmente.
  • El diamante es simétrico verticalmente.
  • El diamante tiene forma cuadrada (la anchura es igual a la altura).
  • Las letras forman una forma de diamante.
  • La mitad superior tiene las letras en orden ascendente.
  • La mitad inferior tiene las letras en orden descendente.
  • Las cuatro esquinas (que contienen los espacios) son triángulos.

Ejemplos

En los siguientes ejemplos, los espacios se indican con el carácter ·.

Diamante para la letra 'A':

A

Diamante para la letra 'C':

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

Diamante para la letra 'E':

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

Pistas

Las pruebas de este ejercicio son diferentes de tus pruebas habituales. Normalmente, una prueba comprueba si, para una entrada dada, la salida coincide con el valor esperado. Esto se conoce como pruebas basadas en valores. Sin embargo, este ejercicio utiliza pruebas basadas en propiedades, en las que las pruebas comprueban si, para un rango de entradas, la salida tiene una propiedad concreta. Las dos diferencias clave que distinguen las pruebas basadas en propiedades de las pruebas basadas en valores son las siguientes:

  1. Una prueba basada en propiedades no trabaja con un único valor de entrada, sino con muchos.
  2. Una prueba basada en propiedades verifica propiedades, no valores concretos.

En este ejercicio, todas las pruebas verifican una propiedad de la forma del rombo que debe producir tu código. Además, todas las pruebas comprueban si la propiedad que verifican se cumple para todas las letras de entrada válidas ('A' a 'Z').

Para facilitar las pruebas basadas en propiedades, las pruebas de este ejercicio se apoyan en los paquetes FsCheck y FsCheck.Xunit. Para saber más sobre FsCheck, puedes consultar la documentación del framework aquí.

Si quieres más información sobre las pruebas basadas en propiedades, consulta este artículo.


Fuente

Seb RoseEl enlace se abre en una nueva ventana o pestaña
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
C# Exercism

¿Listo para empezar Diamante?

Regístrate en Exercism para aprender y dominar C# con 62 conceptos178 ejercicios y mentoría humana real, todo gratis.