Su desafío es generar exactamente el siguiente cuadro:
..................................................
..................................................
.. ..
.. ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++ ++ ..
.. ++ ++ ..
.. ++ .................................. ++ ..
.. ++ .................................. ++ ..
.. ++ .. .. ++ ..
.. ++ .. .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ .. ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ .. ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. .. ++ ..
.. ++ .. .. ++ ..
.. ++ .................................. ++ ..
.. ++ .................................. ++ ..
.. ++ ++ ..
.. ++ ++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ..
.. ..
..................................................
..................................................
La caja es de altura y ancho 50, los espacios son dos de ancho.
Debe escribir una función o programa que genere o devuelva una cadena y no tome ninguna entrada.
¡Pocos bytes ganan!

+cuadro más interno solo tiene 1 capa en la parte superior e inferior? Eso hará que las respuestas basadas en algoritmos sean un poco más largas, ya que significa que las dos capas más internas no son exactamente cuadradas.Respuestas:
Pyke,
2017 bytesPruébalo aquí!
La función de sonido envolvente se creó para preguntas de complejidad kolmogorov como esta.
fuente
J , 25 bytes
Pruébalo en línea!
Explicación
fuente
echo, ni siquiera será una función, solo un valor. Aunque J no tiene funciones de argumento cero de todos modos.C, 115 bytes
Define una función
f(llamar comof();) que imprime la cadena en STDOUT.fuente
C,
535478477 BytesAhora que es mucho golf: - /
Aquí está la salida;
fuente
for(;i++<51;y ahora estoy libre por uno en todas partes: - /++iHaskell, 72 bytes
La solución de @ Zgarb en Haskell. También intenté construir el cuadro agregando capas alrededor del núcleo
["..",".."], pero es 9 bytes más largo (81 bytes).fuente
Apilado, no competitivo, 35 bytes
Pruébalo aquí!
Sin golf:
Bastante sencillo.
surroundes una función que, bueno, rodea a una entidad con una entidad de relleno. Por ejemplo,(0) 1 surroundes((1 1 1) (1 0 1) (1 1 1)).$surroundessurroundcomo una función, no evaluada.foldtoma un valor inicial, luego algo para doblar, luego una función. En este caso,surroundsefolded, que rodea la cadena inicialmente vacía''(equiv.ε) Con cada carácter de la cadena.Esto es hacer primero una cadena de caracteres
$' + .'que, cuando se multiplica por un número, repite cada carácter. Esto nos deja con:++ ... Esto se convierte en una cadena. Luego, repetimos esta secuencia tres veces, y finalmente anteponemos una., dándonos la secuencia deseada.Un enfoque diferente para 39 bytes:
#\se inserta y toma el carácter inicial de la cadena como valor inicial. También solo funciona en matrices.fuente
JavaScript (ES6), 117 bytes
La solución no recursiva me llevó 128 bytes:
Donde
\nrepresenta el carácter literal de nueva línea.fuente
C, 97 bytes
fuente
Jalea , 18 bytes
Pruébalo en línea!
El mismo enfoque que la respuesta J de Zgarb:
12ŒRAesabs([-12 … 12]),x2repite cada elemento dos veces,»þ`crea una tabla de máximos,ị“ + .”indexa cíclicamente en una cadena y seYune mediante nuevas líneas.fuente
05AB1E ,
393533 bytesPruébalo en línea!
Versión de 33 bytes que ahora es más fresca porque Emigna comentó que me ahorró 2 bytes:
Pruébalo en línea!
fuente
". + "DøJ3×'.«.pvy¤25yg-׫«})«»por 33 bytes.… .+•â3fM~•3BSè.pvy¤25yg-׫«})«»para 34 bytes en la "versión más fresca".MATL , 21 bytes
Pruébalo en línea!
fuente
Ruby, 77 bytes
fuente
[i%26-13,i/52].map(&:abs).max%4(guarda un byte)Carbón de leña , 25 bytes
Pruébalo en línea! El enlace contiene un modo detallado para explicación
fuente
Python 3 , 89 bytes
Pruébalo en línea!
fuente
Haskell, 385 bytes
Primera ronda de golf de código aquí ... esperando ver cómo otros abordan esta.
Salida:
fuente
whereuna sola línea y úselas;para la separación. 3)f:f:[]esf:[f] andd: '': '': [] `esd:" ". 4)mtoma un parámetro pero no lo usa. En líneamyt. 5) definir una nueva función#para reemplazarreplicate:c#x=c<$[1..8*n+x]y llamarlo comod#2y' '#(-6). 6)mod 2 == 0se puede reemplazar coneven, o voltear la prueba y el usooddy el golfistaotherwise:1<2. ...b n=f:f:s:s:map(\x->l++x++r)(b$n-1)++s:s:f:[f]where f=d#2;s=l++' '#(-6)++r;l=d:d:" ";r=reverse l;d|odd n='+'|1<2='.';c#x=c<$[1..8*n+x].Octava, 53 bytes
Genere un patrón repetitivo de 1 a 8 desde el centro hacia afuera y úselo como índice para la extracción de elementos de
. ++ .¡Pruébelo en línea!
fuente
Bash, 191 bytes
Probablemente puede volverse más pequeño, pero era más pequeño que mis intentos algorítmicos.
fuente
C #, 203 bytes
Programa completo y legible:
Función de golf :
fuente
05AB1E , 33 bytes
Pruébalo en línea!
Explicación
fuente
PowerShell ,
171151 bytesPruébalo en línea!
Ho-hum respuesta. Estoy seguro de que hay un camino más corto (dada la longitud de las otras respuestas, estoy seguro), pero esto muestra algunos buenos trucos.
Explicación:
1..12|%{' . +'[$_%4]}genera una matriz de cadenas (de un carácter de longitud), en el patrón correcto que necesitamos. Pruébalo en línea!Luego agregamos el
|%{($a+=$_+$_)})+"$a."que toma la matriz y la expande hacia los lados según la fila anterior. Pruébalo en línea!Esas cadenas se envían en forma de bucle,
|%{$c=if(++$i%2){('+','.')[($b=!$b)]}else{' '};$_.PadRight(25,$c)}. En cada iteración, elegimos el carácter correcto (ya sea un signo más, un punto o un espacio), y luego usamos la.PadRightfunción para rellenar el número apropiado de caracteres.Pruébalo en línea!Ahora, tenemos los cimientos de la esquina superior derecha. Necesitamos invertir cada cadena
|%{,($_+-join$_[($z=25..0)])*2}y agregarlas juntas para que podamos obtener la parte superior del bloque. Esto se hace con el-joincomando y la indexación hacia atrás25..0. Además, encapsulamos las cadenas en una matriz,(...)y las duplicamos*2para obtener toda la parte superior. Pruébalo en línea!Todo eso se almacena
$xy encapsula en parens, por lo que coloca las cadenas en la tubería. Finalmente, retrocedemos$x(asegurándonos de cortar la fila del medio duplicado-duplicado, de lo contrario tendríamos cuatro..en el medio) y los dejamos en la tubería. Un implícitoWrite-Outputpega una nueva línea entre las cadenas, por lo que lo obtenemos de forma gratuita.fuente