Tenemos un jardín cuadrado de 10x10 metros fuera de nuestra casa. Queremos plantar hierba y hacer una terraza. Hemos decidido cómo dividir el jardín, pero no hemos decidido la proporción entre la cantidad de césped y la terraza.
Necesitamos ayuda para visualizarlo, y ASCII-art es claramente la mejor manera de hacerlo.
Desafío:
Tome un número entero en el rango inclusivo [0, 100] (u opcionalmente decimal [0, 1]) que representa el porcentaje del jardín que debe ser terraza.
Un metro cuadrado de terraza estará representado por un tablero -o una barra |. Un metro cuadrado de hierba estará representado por una marca hash #.
- Si la cantidad de terraza es menor o igual al 50%, entonces el jardín debe cubrirse con barras, comenzando en la esquina inferior izquierda y llenando verticalmente, luego horizontalmente.
- Si la cantidad de terraza es más del 50%, entonces queremos que la plataforma sea al revés (guiones en lugar de barras), y que comience en la esquina inferior izquierda, y se llene horizontalmente, luego verticalmente.
Ejemplos:
N = 25%
||########
||########
||########
||########
||########
|||#######
|||#######
|||#######
|||#######
|||#######
N = 75%
##########
##########
-----#####
----------
----------
----------
----------
----------
----------
----------
N = 47%
||||######
||||######
||||######
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
N = 50%
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
|||||#####
N = 51%
##########
##########
##########
##########
-#########
----------
----------
----------
----------
----------
N = 0%
##########
##########
##########
##########
##########
##########
##########
##########
##########
##########
N = 100%
----------
----------
----------
----------
----------
----------
----------
----------
----------
----------
Este es el código de golf, por lo que gana el código más corto en bytes. Reglas estándar sobre E / S. Este es un arte ASCII, por lo que la salida debería parecerse a los ejemplos anteriores. Es decir, la salida ["|", "|" ...]no está bien.
Se alientan las explicaciones como siempre :)

Respuestas:
APL (Dyalog) , 34 bytes
Función de prefijo anónimo que espera un entero en el rango 0–100. Asume
⎕IO( I ndex O rigin) ser0, que es predeterminado en muchos sistemas.Pruébalo en línea!
{...}lambda;⍵es argumento:'#-|[...]indexe la cadena con la siguiente matriz:50≥⍵1 si 50 es mayor o igual que el argumento, de lo contrario 0s←almacenar en s (para s mall)1+incremento⍵⍴cíclicamente r eshape al argumento de longitud100↑toma el primer centenar de eso, rellenando con ceros10 10⍴r forme diez filas y diez columnas⊢rendimiento que (se separasde10 10)⍉⍣stransponer si es pequeño⊖voltear al revésfuente
{⊖⍉⍣c⊢10 10⍴(⍵/'-|'⊃⍨c←⍵≤50),100/'#'}99/'#'⍴J ,
39, 3837 bytesCómo funciona:
Pruébalo en línea!
fuente
{.con un argumento sobre los límites es un buen truco.(]|.@|:_10{&'#|-'\100{.1+$)>&50_100{.poner los rellenos al principio, pero luego tuve que invertir cada fila, así que lo dejé.JavaScript (ES6), 84 bytes
Toma la entrada como un entero en [0 ... 100] .
Casos de prueba
Mostrar fragmento de código
Formateado y comentado
fuente
Python 2 ,
121117116 bytesPruébalo en línea!
fuente
[i*10:-~i*10]puede ser[i*10:][:10].Jalea , 23 bytes
Pruébalo en línea!
Cambie el número anterior
Çen el pie de página para cambiar la entrada. Funciona como un enlace monádico en un programa sin argumentos de línea de comandos, lo cual está permitido .fuente
ȷ2->³)SWI Prolog, 249 bytes
La solución es bastante sencilla. El procedimiento
acrea filas,lescribe caracteres en columnas en una fila yrdecide qué carácter debe imprimirse.fuente
G<51debería funcionar en lugar deG<=50.MATL , 26 bytes
Pruébalo en línea! O verificar todos los casos de prueba .
Explicación
fuente
Python 2 , 85 bytes
Pruébalo en línea!
En ambos casos, cada línea se rellena a la derecha
#con una longitud de 10, lo que nos permite compartir ese código entre los dos casos. El número 10 se usó con la frecuencia suficiente para que el aliasT=10guardara un número decente de bytes.fuente
51y después, se pierde una fila.Ruby ,
9282 bytesPruébalo en línea!
Cómo funciona:
Cada celda de la cuadrícula tiene un número progresivo que comienza en la esquina inferior izquierda y continúa horizontal o verticalmente según el valor de n:
Si
n>50, de lo100-y*10+xcontrario , el número esx*10+9-yfuente
Carbón de leña , 25 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
fuente
Casco , 24 bytes
Pruébalo en línea!
Explicación
fuente
SOGL V0.12 , 21 bytes
Pruébalo aquí!
Explicación:
fuente
dc ,
210197 bytesPruébalo en línea!
fuente
APL (Dyalog Classic) , 33 bytes
Pruébalo en línea!
basado en la respuesta de Adám
⎕des la cuerda'0123456789'∘.,producto cartesiano⍨consigo mismo⍎¨evalúe cada uno: obtenga una matriz de 10x10 de 0..99⍵>matriz booleana para donde el argumento⍵es mayor⊢actúa como separador(⍉+⍨)⍣(⍵≤50)si ⍵≤50 duplica la matriz (+consigo misma) y transpone (⍉)⊖reverso vertical'#-|'[ ]indexar la cadena'#-|'con cada elemento de la matrizfuente
q , 51 bytes
fuente
Retina ,
7262 bytesPruébalo en línea! El enlace incluye casos de prueba. Editar: guardado 10 bytes con ayuda de @MartinEnder. Explicación:
Repite
|el número de veces dadoPero si la entrada fue al menos 51, cámbielos a
-s.Añadir 100
#s.Divídase en 10 grupos de 10, desechando todo lo que quede.
Si la entrada fue al menos 51, transponga el resultado.
Ordenar el resultado.
Solución alternativa, también 62 bytes:
La clasificación antes de la transposición permite un ahorro de bytes en la condición de la transposición, pero cuesta un byte para obtener el resultado en el orden correcto.
fuente
#en la primeraOetapa, porque$.%`será a lo sumo9. También puede guardar algún byte evitando el ciclo a costa de otra etapa de clasificación al final, como esta: tio.run / ##K0otycxL /... Probablemente haya una forma más corta de reorganizar el resultado de esaMetapa en la forma final. .Oetapa simple a la derecha después de laMetapa, para que puedas seguir usando una búsqueda anticipada en lugar de una mirada hacia atrás.Python 2 ,
106103bytesPruébalo en línea!
fuente
PHP, 119 + 1 bytes
Ejecutar como tubería
-nRo probarlo en línea .fuente
Jalea , 24 bytes
Pruébalo en línea!
Cómo funciona
Yo uso demasiados superíndices ...
fuente
R , 102 bytes
Pruébalo en línea!
Lee
nde stdin e imprime el jardín en stdout.Explicación:
fuente