Tracks
/
C#
C#
/
Ejercicios
/
Diamante
Diamante

Diamante

Difícil

Instrucciones

La kata del diamante recibe una letra y la muestra en forma de diamante. Dada una letra, imprime un diamante que empieza con '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. (Puede ser 0).
  • El diamante es simétrico horizontalmente.
  • El diamante es simétrico verticalmente.
  • El diamante tiene forma cuadrada (el ancho es igual a la altura).
  • Las letras forman la figura de un 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 las pruebas habituales. Normalmente, una prueba comprueba si, para una entrada dada, la salida coincide con el valor esperado. A esto se le llama pruebas basadas en valores. Sin embargo, este ejercicio usa pruebas basadas en propiedades, en las que las pruebas comprueban si, para un rango de entradas, la salida tiene una propiedad específica. Las dos diferencias clave que distinguen las pruebas basadas en propiedades de las pruebas basadas en valores son:

  1. Una prueba basada en propiedades no trabaja con un solo 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 de diamante que tu código debe producir. 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 hacen uso de los paquetes FsCheck y FsCheck.Xunit. Para aprender más sobre FsCheck, puedes encontrar 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 ventana o pestaña nueva
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
C# Exercism

¿Todo listo para empezar Diamante?

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