Debería escribir un programa o función que reciba el volumen de un tazón y el volumen del agua en él como entrada y salidas o devuelva una representación ASCII de un tazón con agua con los volúmenes deseados.
Un cuenco tiene la siguiente estructura:
\ /
\___/
El cuenco tiene al menos un _
personaje. El recuento de \
'sy /
' s también es positivo y es igual debido a la simetría.
El volumen del recipiente es el número total de _
y space
caracteres entre los \
's y /
' s más uno por cada par de \
y /
. Esto significa que el tazón anterior tiene el volumen de 10
:
\ / => xxxxx x (the last one is for the \/ pair)
\___/ xxx x (the last one is for the \/ pair)
Tenga en cuenta que dos tazones diferentes podrían tener el mismo volumen. Por ejemplo, los dos cuencos siguientes tienen un volumen de 18:
\ /
\ / \ /
\___/ \_______/
Podemos verter un poco de agua en el tazón. El agua se representa como una fila de ~
caracteres en lugar de espacios dentro del recipiente. La fila inferior no tiene espacios, por lo que no puede contener los ~
's. Esto significa que nuestro ejemplo se puede llenar con agua de una sola manera:
\~~~~~/
\___/
Otros cuencos se pueden llenar de múltiples maneras:
\~~~~~/ \ /
\ / \~~~/
\_/ \_/
El volumen del agua en un recipiente es el volumen de las filas del recipiente debajo de los ~
caracteres. Los ejemplos anteriores tienen volúmenes de agua de 4, 6 and 2
respectivamente.
Entrada
- Dos enteros positivos, el volumen del cuenco y el volumen del agua.
- Puedes elegir el orden de los dos números.
- Los dos enteros se pueden ingresar en cualquier formato de lista común (lista, tupla, matriz, etc.) o como dos enteros separados.
- Se garantiza al menos una configuración válida de cuenco-agua para los valores de entrada.
Salida
- La representación ASCII de un recipiente con agua donde el volumen del recipiente y el agua coinciden con la entrada.
- Si elige devolver el resultado en lugar de imprimirlo, debe devolverse como una sola cadena (o la alternativa más cercana a su idioma).
- Se permite cualquier espacio en blanco al final.
- No se permiten espacios en blanco iniciales innecesarios.
- Si hay múltiples configuraciones correctas, usted es libre de elegir cuál generar, pero solo puede generar una de ellas.
Ejemplos
Cada par entero de entrada es seguido por una o más salidas posibles.
6 2
\~~~/
\_/
10 4
\~~~~~/
\___/
24 8
\ /
\~~~~~~/
\ /
\__/
42 12 //either of the two output is correct
\ /
\ /
\~~~~~~~/
\ /
\ /
\_/
\ /
\~~~~~~~~~~~~~/
\___________/
90 68
\~~~~~~~~~~~~~~~~~~~~~/
\ /
\ /
\ /
\_____________/
102 42
\ /
\ /
\~~~~~~~~~~~~~~~~~/
\ /
\ /
\___________/
Este es el código de golf, por lo que gana la entrada más corta.