Diamantes incrustados!


26

No, esto no . Y tampoco esto . Esta pregunta no es como esas

Escriba el código más corto para imprimir / devolver el siguiente resultado:

   /\      /\      /\
  /  \    /  \    /  \
 / /\ \  / /\ \  / /\ \
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ /
  \  / /\ \  / /\ \  /
   \/ /  \ \/ /  \ \/
   /\ \  / /\ \  / /\
  /  \ \/ /  \ \/ /  \
 / /\ \  / /\ \  / /\ \
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ /
  \  /    \  /    \  /
   \/      \/      \/
  • Métodos estándar de entrada / salida.
  • Se aplican lagunas estándar.
  • Los espacios en blanco finales / iniciales están bien, en cualquier cantidad.

3
No esto, no eso, ¿qué hay de esto ?
Matthew Roh

Respuestas:


14

Carbón , 28 24 23 bytes

↗²↖↙⁴⟲P²⁴⁶↘↙↙²⟲P²⁴⁶C⁸¦⁰

Pruébalo en línea! Explicación:

↗²↖↙⁴   Draw the top left 4x4 corner
         /
        //
⟲P²⁴⁶   Rotate it three times to complete a diamond
         /\
        //\\
        \\//
         \/
↘↙↙²    Draw the top left line of the inner diamond
         /\
        //\\
        \\//
         \//
⟲P²⁴⁶   Rotate three times to complete five diamonds
C⁸¦⁰    Copy everything 8 characters to the right to complete eight diamonds

Editar: Mi respuesta anterior solía ‖M‖M↓crear un diamante completo al reflejar la esquina superior, pero debido a un error en el carbón, esto dejó el cursor fuera de posición. Afortunadamente descubrí otra forma de lograr el mismo efecto que no mueve el cursor, lo que significa que guardé un byte dibujando el diamante interno. (También busqué operaciones superpuestas, pero no pude mejorar el enfoque de rotación / copia).

Editar: ↖²↗↘⁴‖M¬M¹¦³↘²‖M¬C⁸¦⁰hace el trabajo en 21 bytes, pero eso se basa en el nuevo comportamiento reflectante, por lo que no sé si esto fue posible con el código anterior.


Sí, lo siento, fue un error, lo arreglé e intentaré presionar lo antes posible, pero esto es increíblemente corto: O +1
solo ASCII

@ Solo ASCII Si he estado usando TIO, ¿cómo me afecta?
Neil

Bueno, todavía está en caché, así que mientras esté en caché, debería estar bien si eso es lo que quieres decir
solo ASCII

@ Solo ASCII Lo que quiero saber es que cuando el comportamiento de TIO cambia, me gustaría poder proporcionar un enlace actualizado (aunque no competitivo).
Neil

Oh, en ese caso ya tiene la solución
solo ASCII,

7

Carbón , 62 50 48 45 42 40 bytes

¡Gracias a @Okx por guardar dos bytes!

↙²→↘²↙↖⁴→↗⁴‖MF²C⁸¦⁰M⁸↓→↗²↓↘²M⁴→↑↗²↓↘²‖M↓

Pruébalo en línea!

Explicación:

↙²→↘²          // Draw the left half of the inner part of the first diamond.
↖⁴→↗⁴          // Draw the left half of the outer part.
‖M             // Mirror the half of the diamond to create the first full diamond.
F²C⁸¦⁰         // Copy the picture eight characters to the left twice.
               // The first copy gives us two diamonds, and the second copy of the
               // two diamonds overlaps so that the result is three diamonds.
M⁸↓→↗²↓↘²     // Move down to draw the upper inner half of the first middle diamond.
M⁴→↑↗²↓↘²     // Move right to do the same for the second middle diamond.
‖M↓           // Mirror the whole thing vertically.

1
Puede reemplazar C⁸¦⁰C⁸¦⁰con F²C⁸¦⁰¦para guardar un byte.
Okx

@ Ok Gracias! En realidad, esto ahorra dos bytes, porque funciona sin el final ¦.
Steadybox

Para el registro, alguna actualización parece haber roto esto, ya que el código ya no funciona correctamente en TIO. La respuesta sigue siendo válida, porque funcionó con la versión que TIO estaba usando cuando se publicó esta respuesta.
Steadybox

6

05AB1E , 45 44 43 bytes

Código:

…/ \©•—‹íćCé']d₂2ó@¯çX‘¯¨•3вè8äJvy®‡«}»Â»

Pre explicación:

La •—‹íćCé'\]d₂2ó@¯çX‘¯¨•3вparte es solo una versión comprimida de la siguiente matriz:

[1, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 2, 1, 2, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 2, 1, 2, 0, 1, 0, 1, 2, 1, 2, 1, 1, 0, 1, 0, 2, 1, 2, 1, 1, 2, 1, 2, 0, 1, 0, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, 0, 1, 0, 2, 1, 2, 1, 1, 1, 1, 2, 0, 1, 0, 1, 1, 2, 1, 2]

Que indexamos en la cadena …/ \. Este mapas 0 -> /, 1 -> space, 2 -> \. Después de eso, procesamos esta cadena con el siguiente programa:

8äJvy®‡«}»Â»

8ä               # Split the array into 8 pieces
  J              # Join each sub-array in the array
   vy     }      # For each string in the array
     Â           #   Bifurcate (duplicate and reverse)
      ®          #   Push the string "/ \" (which was copied using ©)
       Â         #   Bifurcate to get "\ /"
        ‡        #   Transliterate / -> \ and \ -> /
         «       #   Append to the original string
           »     # Join the entire stack on newlines
            Â    # Bifurcate
             »   # Join the stack by newlines

Utiliza la codificación 05AB1E . Pruébalo en línea!


05AB1E es muy bueno en ASCII-art, parece ...
Esolanging Fruit

44
Tachado cuarenta y cuatro sigue siendo cuarenta y cuatro.
Okx

@Okx A menos que aplique espacios que no se rompan .
Steadybox

5

PHP, 126 bytes

<?=gzinflate(base64_decode("vY7BCQAwCAP/mSIbuJD7z1GJLbbiuz5yKCeEpDk1RUSQWm8iMiRnIyw178Qgi5hs3ceHOA86snN7ON2b/687X+7umuIC"));

Pruébalo en línea!

PHP, 149 bytes

$s=strtr("000
111
222
333
444
555
  \ 22 /  
   \\33/   ",["   /\   ","  /  \  "," / /\ \ ","/ /  \ \\","\ \  / /"," \ \/ / "]);echo"$s
".strrev($s);

Pruébalo en línea!


3

JavaScript, 232 bytes

_=>(a=`3868683
2/274/274/272
1/18172/18172/18171
/1/27191/27191/2717
7172/18172/18172/1/
17191/27191/27191/1
272/18172/18172/2
391/27191/27193`.replace(/\d/g,n=>n>6?['\\','/\\','\\/'][n-7]:' 
'.repeat(n)))+`
`+[...a].reverse().join``

Pruébalo en línea!

const f = _=>(a=`3868683
2/274/274/272
1/18172/18172/18171
/1/27191/27191/2717
7172/18172/18172/1/
17191/27191/27191/1
272/18172/18172/2
391/27191/27193`.replace(/\d/g,n=>n>6?['\\','/\\','\\/'][n-7]:' '.repeat(n)))+`
`+[...a].reverse().join``

console.log(`
${f()}
`)


Tengo una solución de 126 bytes a continuación. :)
Steve Bennett

3

Ruby, 99 97 bytes

400.times{|i|print (23<x=i%25)?$/:" /  \\   "[(x^y=i/25)&4^x+y&1^(x-2&4&y-2>y/6%2*x/2%11*4?2:0)]}

Explicación

Cada cuadrado de 4x4 contiene solo espacios y /o \. Trazamos estos para dar el patrón general de diamantes. Para evitar patrones parciales en los bordes, ciertos cuadrados de 2x2 deben dejarse en blanco como se muestra a continuación.

.. /\ .... /\ .... /\ ..
../  \..../  \..../  \..
 / /\ \  / /\ \  / /\ \
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ /
..\  / /\ \  / /\ \  /..
.. \/ /  \ \/ /  \ \/ ..
.. /\ \  / /\ \  / /\ ..
../  \ \/ /  \ \/ /  \..
 / /\ \  / /\ \  / /\ \
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ /
..\  /....\  /....\  /..
.. \/ .... \/ .... \/ ..

Versión sin golf : modificada para imprimir lo anterior para ayudar en la explicación

400.times{|i|print (23<x=i%25)?$/:     #Calculate x. If last column, print a newline else
  " /..\\ .."[(x^y=i/25)&4^x+y&1^      #If (x^y)&4==4, use x+y&1 to select between space and /. If (x^y)&4==0 select between \ and space.
  (x-2&4&y-2>y/6%2*x/2%11*4?2:0)]      #If x-2&4&y-2==4, and we are on the 2 character wide border (y/6%2*x/2%11==0), XOR with 2 to print .
}

2

Pyth - 106 98 96 92 bytes

V16V24J%t+NH8K%+_2-NH8=Y&&&>H1>N1<N14<H22p?|q2J&&Y!%J4?<1%H4J!J\/?|q2K&&Y!%K4?<1%H4!KK\\d)pb

Intentalo


1

C #, 608 bytes

void q(){Action<string>a=Console.Write;Func<int,int,string>b=(c,d)=>new string(' ',c)+(d<1?"/\\":d<2?"/  \\":d<3?"/ /\\ \\":d<4?"/ /  \\ \\":d<5?"\\ \\  / /":d<6?"\\ \\/ /":d<7?"\\  /":"\\/");Action e=()=>a(b(0,4)+b(0,4)+b(0,4)+"\n"+b(1,5)+b(2,5)+b(2,5)+"\n");Action f=()=>a(b(1,2)+b(2,2)+b(2,2)+"\n");Action g=()=>a(b(0,3)+b(0,3)+b(0,3)+"\n");a(b(3,0)+b(6,0)+b(6,0)+"\n"+b(2,1)+b(4,1)+b(4,1)+"\n");f();g();e();a("  \\  / /\\ \\  / /\\ \\  /\n"+"   \\/ /  \\ \\/ /  \\ \\/\n"+"   /\\ \\  / /\\ \\  / /\\\n"+"  /  \\ \\/ /  \\ \\/ /  \\\n");f();g();e();a(b(2,6)+b(4,6)+b(4,6)+"\n"+b(3,7)+b(6,7)+b(6,7)+"\n");}

No es que quiera hacer esto por más tiempo, pero parece que te estás perdiendo using System;. También estoy bastante seguro de que puedes jugar más al golf, pero no he pasado demasiado tiempo buscando estar 100% seguro.
TheLethalCoder

Es más largo que la salida, por lo que solo System.Console.WriteLine(@"...");superará mi respuesta en unos 200 bytes.
LiefdeWen

1

C #, 382 291 bytes

_=>string.Format(@"{5}{5}{5}
{2}{2}{2}
{0}{0}{0}
{1}{1}{1}
\ \ {0}{0} / /
 \ \{1}{1}/ /
  \ {0}{0} /
   \{1}{1}/
   /\ \ {0} / /\
  /  \ \{1}/ /  \
 {0}{0}{0}
{1}{1}{1}
\ \ {0}{0} / /
 \ \{1}{1}/ /
{4}{4}{4}
{3}{3}{3}",@" / /\ \ ",@"/ /  \ \",@"  /  \  ",@"   \/   ",@"  \  /  ",@"   /\   ");

1

Javascript 126 bytes

for(c=r=a='';r<16;c++>22&&(r++,c=0,a+=`
`))C=c%22>1&&r%14>1,q=[1,,C&&r&2,,,,C&&~r&2,,1],a+=q[c+5+r&7]?'/':q[r-c+20&7]?'\\':' '

Como ahora es bastante ilegible, una explicación básica:

  • colocamos el espacio en mosaico de arriba a abajo a la derecha
  • Lo dibujamos básicamente como 6 líneas diagonales que se repiten cada 8 caracteres: 2 líneas continuas y 4 "discontinuas" (dos caracteres, luego dos espacios ...)
  • el C=... cuestión es limitar el dibujo de algunas de las líneas dentro de un cuadro delimitador
  • Para guardar muchos caracteres, agregamos deliberadamente números para hacer que las expresiones de las líneas ascendentes y descendentes sean extremadamente similares
  • luego, coloca las expresiones en una matriz dispersa [1,,C&&...], en la que buscamos. Si hay un valor verdadero, dibujamos el carácter apropiado.

-

for(c=r=a='';r<16;c++>22&&(r++,c=0,a+=`
`))                 // basic grid tiling
C=c%22>1&&r%14>1,   // are we not near the edges
q=[1,               // a solid line that always draws
,                   // a line that never draws
C&&r&2,             // a line that draws if not near the edge, and if on the correct "dash" (r&2)
,,,
C&&~r&2,            // if not near the edge, and on the opposite "dash" (~r&2)
,1                  // the opposite diagonal line that always draws
],
a+=q[c+5+r&7]?'/' // compute which upward line we're on, check whether to draw it
:q[r-c+20&7]?'\\' // do the same for the downward line
:' '                // otherwise draw a space

Quizás esta explicación no ayudó. :)

Pruebe en línea: https://codepen.io/stevebennett/pen/WjgMpY

Con suerte obtuve el resultado correcto:

   /\      /\      /\   
  /  \    /  \    /  \  
 / /\ \  / /\ \  / /\ \ 
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ / 
  \  / /\ \  / /\ \  /  
   \/ /  \ \/ /  \ \/   
   /\ \  / /\ \  / /\   
  /  \ \/ /  \ \/ /  \  
 / /\ \  / /\ \  / /\ \ 
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ / 
  \  /    \  /    \  /  
   \/      \/      \/   

Historia

130

for(c=r=a='';r<16;c++>22&&(r++,c=0,a+=`
`))C=c%22>1&&r%14>1,q=[1,,C&&r&2,,,,C&&~r&2,,1],a+=q[(c+5+r)%8]?'/':q[(r-c+20)%8]?'\\':' '

133

for(c=r=a='';r<16;c++>22&&(r++,c=0,a+=`
`))C=c%22>1,q=[1,,C&&r&2&&r<14,,,,C&&~r&2&&r>1,,1],a+=q[(c+5+r)%8]?'/':q[(r-c+20)%8]?'\\':' '

137

for(c=r=a='';r<16;c++==23&&(r++,c=0,a+=`
`))C=c<22&&c>1,q=[1,,C&&r&2&&r<14,,,,C&&~r&2&&r>1,,1],a+=q[(c+5+r)%8]?'/':q[(r-c+20)%8]?'\\':' '

155

for(c=r=a='';r<16;c++==23&&(r++,c=0,a+=`
`))Z=(C=c<22&&c>1)&&~r&2&&r>1,Y=C&&r&2&&r<14,B=(c-r+12)%8,A=(c+5+r)%8,q=[1,,Y,,,,Z,,1],a+=q[A]?'/':q[8-B]?'\\':' '

Historia: 172

for(c=r=a='';r<16;c++==23&&(r++,c=0,a+='\n'))a+=(Z=(C=c<22&&c>1)&&~r&2&&r>3,Y=C&&r&2&&r<12,B=(c-r+16)%8,A=(c+r)%8,A==3||A==5&&Y||A==1&&Z?'/':B==4||B==2&&Y||B==6&&Z?'\\':' ')

1

Lienzo , 18 bytes.

4/2/33╋╬2/77╋╬:91╋

Pruébalo aquí!

Explicación:

4/           push a diagonal of length 4
  2/         push a diagonal of length 2
    33╋      insert that at [3;3] in the 1st diagonal
                    /
                   / 
                  / /
                 / / 
╬            quad-palindromize with 0 overlap
 2/77╋       insert a 2-long diagonal in the bottom-right corner
                    /\   
                   /  \  
                  / /\ \ 
                 / /  \ \
                 \ \  / /
                  \ \/ / 
                   \  / /
                    \/ / 
      ╬      quad-palindromize with 0 overlap, creating most of the output
                    /\      /\   
                   /  \    /  \  
                  / /\ \  / /\ \ 
                 / /  \ \/ /  \ \
                 \ \  / /\ \  / /
                  \ \/ /  \ \/ / 
                   \  / /\ \  /  
                    \/ /  \ \/   
                    /\ \  / /\   
                   /  \ \/ /  \  
                  / /\ \  / /\ \ 
                 / /  \ \/ /  \ \
                 \ \  / /\ \  / /
                  \ \/ /  \ \/ / 
                   \  /    \  /  
                    \/      \/   
       :91╋  overlap self on [9;1]

0

Retina , 214 bytes


F/\E/\E/\¶B/B\BB/B\FAD D¶F\/ C C¶FD D /\¶BC CAF\B/BB\B/¶F\/E\/E\/
F
B 
E
BBB
D
/\ \B/
C
/B\ \/
B
  
A
 /  \¶ / /\ \  / /\ \  / /\ \¶/ /  \ \/ /  \ \/ /  \ \¶\ \  / /\ \  / /\ \  / /¶ \ \/ /  \ \/ /  \ \/ /¶  \  / 

Pruébalo en línea!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.