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 separas
de10 10
)⍉⍣s
transponer 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
a
crea filas,l
escribe caracteres en columnas en una fila yr
decide qué carácter debe imprimirse.fuente
G<51
deberí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=10
guardara un número decente de bytes.fuente
51
y 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+x
contrario , el número esx*10+9-y
fuente
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
⎕d
es 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 primeraO
etapa, 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 esaM
etapa en la forma final. .O
etapa simple a la derecha después de laM
etapa, 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
-nR
o 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
n
de stdin e imprime el jardín en stdout.Explicación:
fuente