Mash Up Time!
Esta es la entrega n. ° 5 de mi serie Random Golf of the Day y ASCII Art of the Day de Optimizer . Su (s) envío (s) en este desafío contarán para ambas tablas de clasificación (que puede encontrar las publicaciones vinculadas). Por supuesto, puede tratar esto como cualquier otro desafío de código de golf y responderlo sin preocuparse por ninguna de las series.
Hoyo 5: azulejos de diamante
Un hexágono regular siempre se puede colocar en mosaico con diamantes de esta manera:
Usaremos una representación de arte ASCII de estas inclinaciones. Para un hexágono de longitud lateral 2, hay 20 inclinaciones de este tipo:
____ ____ ____ ____ ____ ____ ____ ____ ____ ____
/\_\_\ /\_\_\ /\_\_\ /\_\_\ /_/\_\ /_/\_\ /\_\_\ /_/\_\ /_/\_\ /_/\_\
/\/\_\_\ /\/_/\_\ /\/_/_/\ /\/_/\_\ /\_\/\_\ /\_\/_/\ /\/_/_/\ /\_\/\_\ /\_\/_/\ /_/\/\_\
\/\/_/_/ \/\_\/_/ \/\_\_\/ \/_/\/_/ \/\_\/_/ \/\_\_\/ \/_/\_\/ \/_/\/_/ \/_/\_\/ \_\/\/_/
\/_/_/ \/_/_/ \/_/_/ \_\/_/ \/_/_/ \/_/_/ \_\/_/ \_\/_/ \_\/_/ \_\/_/
____ ____ ____ ____ ____ ____ ____ ____ ____ ____
/_/_/\ /\_\_\ /_/\_\ /_/_/\ /_/\_\ /_/\_\ /_/_/\ /_/_/\ /_/_/\ /_/_/\
/\_\_\/\ /\/_/_/\ /_/\/_/\ /\_\_\/\ /\_\/_/\ /_/\/_/\ /_/\_\/\ /\_\_\/\ /_/\_\/\ /_/_/\/\
\/\_\_\/ \/_/_/\/ \_\/\_\/ \/_/\_\/ \/_/_/\/ \_\/_/\/ \_\/\_\/ \/_/_/\/ \_\/_/\/ \_\_\/\/
\/_/_/ \_\_\/ \_\/_/ \_\/_/ \_\_\/ \_\_\/ \_\/_/ \_\_\/ \_\_\/ \_\_\/
Dada una longitud lateral N
, debe generar un mosaico para un hexágono de longitud lateral N
al azar. La distribución exacta no importa, pero cada mosaico debe devolverse con una probabilidad distinta de cero.
Para N ≤ 4
, su presentación debe producir un mosaico dentro de 1 minuto al menos el 80% del tiempo y al menos el 80% de las inclinaciones deben generarse potencialmente dentro de 1 minuto. La mayoría de los enfoques no tendrán que preocuparse por esta regla (es muy indulgente); esto es solo para descartar algoritmos basados en el rechazo muy ingenuos que generan cadenas arbitrarias hasta que uno sea un mosaico.
Es posible que desee saber que el número total de posibles inclinaciones para un determinado N se puede encontrar en OEIS A008793 .
Puede escribir un programa completo o una función y recibir información a través de STDIN (o la alternativa más cercana), argumento de línea de comando o argumento de función y producir salida a través de STDOUT (o la alternativa más cercana), valor de retorno de función o parámetro de función (out).
No debe generar más espacios iniciales de los necesarios para alinear el hexágono (es decir, la esquina izquierda del hexágono no debe tener espacios delante). Cada línea puede contener hasta N
espacios finales (no necesariamente consistentemente, por lo que podría tener, por ejemplo, una salida rectangular, imprimiendo el cuadro delimitador del hexágono).
Este es el código de golf, por lo que gana el envío más corto (en bytes). Y, por supuesto, la presentación más corta por usuario también entrará en la tabla de clasificación general de la serie.
Tablas de clasificación
La primera publicación de cada serie genera una tabla de clasificación.
Para asegurarse de que sus respuestas aparezcan, comience cada respuesta con un título, utilizando la siguiente plantilla de Markdown:
# Language Name, N bytes
¿Dónde N
está el tamaño de su envío? Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
(El idioma no se muestra actualmente, pero el fragmento sí lo requiere y analiza, y puedo agregar una tabla de clasificación por idioma en el futuro).
For N ≤ 4, your submission must produce a tiling within 1 minute at least 80% of the time.
demasiado fácil: el 80% del tiempo de la misma, suelo de baldosas básica, de lo contrario buscar otro mosaico en cualquier momento quiero