Escriba el programa más corto que imprima esta sección de arte ASCII de un mosaico hexagonal o panal :
__
__/ \__
__/ \__/ \__
/ \__/ \__/ \
\__/ \__/ \__/
/ \__/ \__/ \
\__/ \__/ \__/
/ \__/ \__/ \
\__/ \__/ \__/
\__/ \__/
\__/
- No se debe tomar ninguna entrada.
- Salida a stdout o la alternativa más cercana a su idioma.
- En lugar de un programa, puede escribir una función con nombre que no tome parámetros e imprima el resultado normalmente o lo devuelva como una cadena.
- La salida puede tener cualquier número de nuevas líneas iniciales y / o finales y cada línea en la salida puede tener cualquier número de espacios iniciales y / o finales (siempre que el patrón se alinee correctamente).
- El código más corto en bytes gana.
code-golf
ascii-art
kolmogorov-complexity
tiling
hexagonal-grid
Pasatiempos de Calvin
fuente
fuente

Respuestas:
CJam,
4543424140 bytesPruébelo en línea en el intérprete de CJam .
Cómo funciona
repite el patrón
\__/38 veces y lo divide en trozos de longitud 21 . Si los fragmentos se separaran por saltos de línea, este sería el resultado:Esto contiene claramente el panal deseado. Todo lo que queda por hacer es reemplazar algunos caracteres con espacios, cortar algunos otros e introducir los avances de línea.
genera el entero 74 100 000 036 y lo convierte en la matriz [7 4 1 0 0 0 0 0 0 3 6] . Cada elemento de la matriz codifica el número de caracteres iniciales de la línea correspondiente que deben reemplazarse con espacios. Al restar este número de 16 , también obtenemos la longitud correcta para esta línea.
Dado que un espacio tiene un punto de código más bajo que los otros caracteres de L y los operadores vectorizados dejan intactos los caracteres de la cadena más larga que no corresponden a uno de los más cortos,
.e<reemplaza los primeros caracteres D con espacios.fuente
Pitón 2, 73
Véalo correr.
Para cada una de las 11 filas de salida, calcula el número de espacios iniciales
kcomo un máximo de tres funciones lineales que forman la envoltura del lado izquierdo del hexágono. Debido a que las líneas diagonales tienen pendiente3y-3, es mejor indexar el número de fila comoi=0,3,...30.Para crear la malla hexagonal, primero colocamos suficientes mosaicos de la unidad
'\__/ '. Luego, al[i:]cambiarlo, se realinea por 3 para filas impares. Finalmente, tomamos la porción necesaria[k:16-k], dejando un margen dekizquierda y derecha.fuente
CJam,
655655 bytesPruébelo en línea en el intérprete de CJam .
Idea
La mitad derecha de cada línea es una copia invertida de la mitad izquierda con barras y barras invertidas intercambiadas. Por lo tanto, es suficiente codificar la mitad izquierda del panal:
En lugar de analizar este patrón línea por línea, podemos analizarlo columna por columna:
Surgen patrones obvios:
_ _ _ _produce cinco veces./es seguido por un\.Mediante la sustitución de cada
/\,_,_ _ _ _y el espacio con un número de 0 a 3, podemos convertir la matriz resultante de un número de base 4 a una base superior y almacenar el patrón completo de una manera compacta.Código
fuente
C,
148144140 bytesCon espacios en blanco, sin advertencias del compilador, y antes de algunos ajustes de código para guardar algunos bytes:
Este enfoque no utiliza ninguna tabla de caracteres / cadenas. Se repite en todos los 187 (11 filas, 17 columnas, incluidas las nuevas líneas), y decide qué carácter imprimir para cada posición, en función de una combinación de condiciones.
Las condiciones incluyen una prueba de estar dentro / fuera de las 4 esquinas, utilizando 4 ecuaciones de línea, con el resultado almacenado en variable
p. El resto se repite principalmente cada 6 caracteres, con las filas impares desplazadas por 3 caracteres en relación con las filas pares.fuente
int.k;f(r,c,d,p){for(;k<187;putchar(c>15?10:p&d<2&p?95:p&d<3?47:!p|d-5?32:92))r=k/17,c=k++%17,d=(5+c+r%2*3)%6,p=3*r+c-7<33u&3*r-c+8<33u;}Rubí: 78 bytes
Una transcripción de la solución de xnor (69 Bytes):
fuente
11.timesahorra 2 bytesJavaScript (ES6), 129
130Esa es una cadena pura reemplazar / reemplazar / reemplazar ... sin aprovechar ninguna propiedad geométrica.
Usando cadenas de plantillas, todas las nuevas líneas son significativas y cuentan.
Ejecute el fragmento en Firefox para probar
fuente
PHP -
1391371071019187 bytesNo sé si esta es la mejor manera de jugar golf, pero aquí está mi intento:
303646-50 bytes gracias a Ismael MiguelPruébelo en línea aquí
código antiguo:
fuente
<?lugar de<?phpguardar 3 bytes. En lugar de$c=$a.$a."/ \\\n\__".$a.$a."/\n";, puede escribir$c="$a$a/ \\\n\__.$a$a/\n";(ya que PHP expande las variables en cadenas). Puede aplicar la misma lógica alechopara reducir aún más su longitud. Además, no necesita ese espacio entre elechoy la cadena.\n, puede poner una nueva línea real y guardar 1 byte por línea.<?="\t __\n\t__",$a='/ \__',"\n __$a$a\n",$c="$a$a/ \\\n\__$a$a/\n","$c$c \__$a/\n\t \__/";. Recuerde reemplazar el\tcon un carácter de tabulación y\ncon una nueva línea real.Lua 146
(nuevas líneas agregadas para mayor claridad)
fuente
Stres veces.Dart - 113
Solución pura de interpolación de cuerdas, nada lujoso. Las operaciones de cadena como "subcadena" son demasiado detalladas para competir en la práctica.
Ejecútalo en DartPad .
fuente
Javascript ( borrador ES7 ),
969493 bytesInspiración tomada de algunas soluciones aquí ...
Editar: -1 de edc65
Comentado:
fuente
.substr(+x+z,16-x-x)->.slice(+x+z,16-x+z)-1+xlugar de solox?xa un número. Sin él, se concatenaríazPython 3,
10087 bytesY una versión legible del código a continuación. La idea es codificar los intervalos (inicio, longitud) y luego rellenar con la cantidad correcta de espacios para centrar el intervalo.
fuente
Retina , 66 bytes
Cada línea debe ir a su propio archivo y
<LF>significa nueva línea real en el archivo. 1 byte por archivo adicional agregado al conteo de bytes.Puede ejecutar el código como un archivo con la
-sbandera, manteniendo los<LF>marcadores y quizás cambiándolos a nuevas líneas en la salida para facilitar su lectura si lo desea.El algoritmo consta de 5 pasos sustitutos simples (cambiar el contenido de línea impar a contenido de línea par) a partir de una cadena de entrada vacía. Los resultados después de cada paso son (delimitados por
='s):fuente
Javascript,
154151 bytesfuente