La primavera ha llegado recientemente, y es casi el momento en que las flores comienzan a brotar. Entonces quiero que los ayudes a crecer.
Tu tarea:
Dados dos números,, m
y n
, m
flores de salida colocadas al azar en una n*n
cuadrícula.
Una sola flor se ve así:
&
|
La posición de una flor se define por dónde &
está. Al colocar dos flores al azar, no puede haber dos en el mismo lugar. Si una flor se &
superpone a otra |
, muestre el &
. La fila inferior de flores puede no contener ninguna &
.
La entrada puede ser como un número o una cadena, a través de cualquiera de los métodos estándar.
La salida puede ser una lista de cadenas, cada cadena representando una fila de la cuadrícula, o una cadena delimitada siguiendo la misma guía que la lista. Métodos estándar de salida. Se permiten los rastros de lo que sea, y puede usar pestañas para separar sus flores. Tenga en cuenta que cada cuadrícula debe estar completamente llena, con espacios o algo así.
Tenga en cuenta que la entrada siempre será válida, siempre será capaz de encajar jurídicamente las m
flores al n
por n
cuadrícula.
Casos de prueba:
Dado que solo se pueden garantizar casos de prueba muy ajustados, debido a todo el bit de "ubicación aleatoria", ese será el único tipo de caso de prueba con una respuesta proporcionada. Pero intentaré todas las presentaciones en línea para asegurarme de que sean válidas utilizando algunos casos de prueba también.
La entrada para los casos de prueba se da en el formulario m, n
.
Input: 2, 2
Output:
&&
||
--------------
Input: 6, 3
Output:
&&&
&&&
|||
Tenga en cuenta que la nueva línea después de la palabra Output:
en los casos de prueba es opcional.
Otros casos de prueba:
- 1, 10
- 0, 100
- 5, 8
- 6, 3
¡Golf de código para que el código más corto gane!
¡Gracias a ComradeSparklePony por hacer este desafío y publicarlo en la caja de regalo de Secret Santa's !. Publicación de sandbox
Respuestas:
Jalea , 33 bytes
Pruébalo en línea!
¿Cómo?
fuente
m
yn
por quésquare m
? ¿ Qué es un nilad ?rotate
. Gran trabajo; excelente desglose!PHP (> = 7.1),
135 131 128 116 110109 bytestoma datos de los argumentos de la línea de comandos; ejecutarlo
-nr
o probarlo en línea .Descompostura
fuente
-r
es gratis ; le dice a PHP que ejecute el código desde el argumento de la línea de comando.-n
restablece PHP a la configuración predeterminada.Python 2 , 150 bytes
Pruébalo en línea!
¿Cómo?
Toma
input()
de STDIN y desempaqueta la tupla proporcionada (una cadena separada por comas de enteros decimales como3,6
) enn
ym
.Crea un
n*(n-1)
"macizo de flores" ordenado, unidimensionalb
, concatenando:- una lista que contiene una "flor"
[1]
repetidasm
veces; y- una lista que contiene un "espacio"
[0]
repetidon*~-n-m
veces *.* El operador renacuajo
~
(~x=-1-x
) guarda 2 bytesn*~-n-m
en lugar del aspecto más normaln*(n-1)-m
.Baraja (usando
random
lashuffle
función de) este cantero para colocar las flores y espacios al azar entre lasn*(n-1)
posiciones.Recorre las filas indexadas en 0
r
, yprints
cada una a su vez para crear un macizo de flores bidimensional a partir del unidimensional ...El último
n*n
macizo de flores bidimensional ( ) tiene tallos,s
una fila debajo de las cabezas de floresf
, si y solo si no hay cabeza de flor para mostrar. Esto se consigue mediante XORing (^
)f
con-s
dondef
ys
son los1
s y0
s de antes y utilizando el resultado para indexar en la cadena de longitud 3' &|'
:Para obtener
f
ys
lazip
función se usa con dos copias del macizo de flores unidimensional, una conn
espacios finales (las cabezas de las flores) y otra conn
espacios iniciales (los tallos). Todo se crea para cada fila (para guardar bytes), y la fila requerida se divide usando[r*n:r*n+n]
.fuente
Python 2 ,
184179 bytesPruébalo en línea!
fuente
Python 2 , 129 bytes
Pruébalo en línea!
Genera la cadena de salida un carácter a la vez. Elige aleatoriamente si la celda actual es una flor con una probabilidad igual al número
m
de flores restantes dividido por el número de espacios restantes. Agrega una nueva línea a cadan
personaje. Una celda en blanco se llena con un tallo|
si el símbolon
del final es a&
.fuente
PHP, 111 bytes
Versión en línea
-1 Byte para una nueva línea física
una solución 115 Bytes usando max
De esta manera, con 137 bytes baraja la primera parte de la cadena
fuente
JavaScript (ES6), 157 bytes
Explicación: Crea una matriz que representa la cuadrícula de flores más líneas nuevas. Recursivamente busca aleatoriamente cuadrados vacíos en los que colocar flores hasta alcanzar el número deseado de flores. Finalmente se generan los tallos de las flores donde hay espacio para ellas.
fuente
Carbón , 27 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Entrada
n
.Cambie la dirección de impresión predeterminada hacia abajo.
Entrada
m
y bucle que muchas veces.Salta a una ubicación aleatoria en la cuadrícula.
Si ya hay una flor, salta a ubicaciones aleatorias hasta encontrar un lugar adecuado.
Imprime la cabeza de la flor.
Imprima el tallo si aún no hay una cabeza de flor debajo.
fuente