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: - /++i
Haskell, 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.
surround
es una función que, bueno, rodea a una entidad con una entidad de relleno. Por ejemplo,(0) 1 surround
es((1 1 1) (1 0 1) (1 1 1))
.$surround
essurround
como una función, no evaluada.fold
toma un valor inicial, luego algo para doblar, luego una función. En este caso,surround
sefold
ed, 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
\n
representa 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ŒRA
esabs([-12 … 12])
,x2
repite cada elemento dos veces,»þ`
crea una tabla de máximos,ị“ + .”
indexa cíclicamente en una cadena y seY
une 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
where
una sola línea y úselas;
para la separación. 3)f:f:[]
esf:[f] and
d: '': '': [] `esd:" "
. 4)m
toma un parámetro pero no lo usa. En líneam
yt
. 5) definir una nueva función#
para reemplazarreplicate
:c#x=c<$[1..8*n+x]
y llamarlo comod#2
y' '#(-6)
. 6)mod 2 == 0
se puede reemplazar coneven
, o voltear la prueba y el usoodd
y 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.PadRight
funció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-join
comando y la indexación hacia atrás25..0
. Además, encapsulamos las cadenas en una matriz,(...)
y las duplicamos*2
para obtener toda la parte superior. Pruébalo en línea!Todo eso se almacena
$x
y 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-Output
pega una nueva línea entre las cadenas, por lo que lo obtenemos de forma gratuita.fuente