Dibuja el lambda blazon


16

Para celebrar el 2497 aniversario de la victoria griega en Salamina en 480 a. C. Dibuja el lambda blazon.

El lambda blazon era el lambda pintado en escudos griegos así:

imágenes de lambda de capital rojo sobre fondos circulares de escudo blanco y dorado

Rompecabezas: Dado un entero impar positivo n, produce una imagen de arte ascii del escudo anterior.

Especificaciones:

n = 1:

( /\ )

n = 3:

(   /\   )
|  /  \  | 
( /    \ )

n = 5

(     /\     )
|    /  \    |
|   /    \   |
|  /      \  |
( /        \ )

Gráfico: n = 3

          2|   (   /\   )
y-axis    1|   |  /  \  | 
          0|   ( /    \ )
               ___________  
               0123456789

                 x-axis

Descripción:

Debe haber exactamente n \ caracteres yn / caracteres. Los /sys \no deben tocar el borde del escudo. Las esquinas inferior y superior del escudo se denotarán con un (o a )menos que n = 1 donde habrá uno )y uno (. Siempre habrá un espacio entre las esquinas inferiores y la lambda, aumentando en 1 con el eje y hasta y + 1 == n. Las esquinas no del lado del escudo se denotarán con |. No hay escudo superior.


77
¿Por qué downvote? (2 más para ir)
user202729

3
@ user202729 ¿a qué te refieres con 2 más?
jacksonecac

44
SE tiene una restricción de caracteres de comentario, que obliga a los comentarios a tener al menos 15 caracteres.
usuario202729

77
¿Por qué no podría haber esperado 3 años para publicarlo para el aniversario 2.5k'; -;
HyperNeutrino

55
¿Por qué solo enteros impares? : o
Felix Palmen

Respuestas:


8

Carbón ,  17  13 bytes

¡Gracias a @Neil por guardar 4 bytes!

(↙↓⊖θM↑(→↗N‖M

Pruébalo en línea!

Explicación:

(↙                // Print '(' and move one step down and to the left.
  ↓⊖θ             // Print n-1 '|'s downwards.
     M↑          // Move one step up.
        (→        // Print '(' and move one step to the right.
          ↗N      // Print n '/'s towards the upper right corner.
            ‖M    // Mirror the left half to produce the right half.

1
le ahorra un byte y la mitad de sus correos electrónicos son innecesarios.
Neil

1
Además, Iθpuede guardar otro byte.
Neil

Resumiendo las sugerencias de Neil, 13 bytes
Sr. Xcoder

@ Mr.Xcoder Gracias, pero ya pude hacer eso.
Steadybox

Es pequeño, pero creo que su explicación (→debería significar "... y avanzar un paso hacia la derecha "
Kamil Drakari

6

SOGL V0.12 , 17 14 bytes

┐*ƨ(Κm«@.╚┼┼╬³

Pruébalo aquí!

Explicación:

example input: 3
┐*              push a string of input amount of "|"                      "|||"
  ƨ(            push "("                                                  "|||", "(("
    Κ           prepend that to the vertical bar string                   "((|||"
     m          mold that string as the input (remove excess characters)  "((|"
      «         put the first character at the end                        "(|("
       @        push a space                                              "(|(", " "
        .╚      create a diagonal of input length                         "(|(", " ", ["  /", " / ", "/  "]
          ┼┼    append those three horizontally together                  ["(   /", "|  / ", "( /  "]
            ╬³  palindromize that all                                     

4

C (gcc) , 103 96 bytes

f(n,j,b){for(j=n;j--;printf("%c%*c%*c%*c\n","|("[b],j+2,47,n+n-j+~j,92,j+2,"|)"[b=j<1|n-2<j]));}

Pruébalo en línea!


Exculpamos lo principal e incluye ahora? Esta comunidad ha cambiado.
Alec Teal

2
@AlecTeal Es aceptable escribir una función que realice la tarea especificada en lugar de un programa completo. En general, las cuentas cuentan para el recuento de bytes, algunos compiladores de C, sin embargo, intentan adivinar una definición de función si no se incluyen las coincidencias.
Jonathan Frech

Creo que tachó el número equivocado, jefe
Veskah

@Veskah Cierto. ._.
Jonathan Frech

3

Retina , 41 bytes

.+
$* 
 
( $'/$`$`\$' )¶
G`.
sT`()`|`¶.*¶

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

.+
$* 

Convierte a unario, pero usando espacios.

 
( $'/$`$`\$' )¶

Utilice los operadores de prefijo y sufijo de coincidencia para generar una serie de líneas con cantidades crecientes de espacio central en cada línea.

G`.

Sin embargo, hay una línea en blanco adicional, que elimina la transliteración final, así que elimínela aquí.

sT`()`|`¶.*¶

En todas las líneas, excepto la primera y la última, cambie ()s por |s.






2

R , 153 bytes

function(n){s=2*n+4
m=matrix('|',s,n)
m[3:s-1,]=' '
m[cbind(5:s-2,c(n:1,1:n))]=1
m[1,c(1,n)]='('
m[s,c(1,n)]=')'
m[m>0]=rep(c('/','\\'),n)
rbind(m,'\n')}

Pruébalo en línea!


2

Lote, 218 bytes.

@echo off
set s=
for /l %%i in (1,1,%1)do call set s= %%s%%
set s=%s%/\%s%
echo (%s%)
for /l %%i in (2,1,%1)do call:l %1 %%i
exit/b
:l
set s=%s: /=/ %
set s=%s:\ = \%
if %1==%2 (echo ^(%s%^))else echo ^|%s%^|

Como si |s no eran lo suficientemente mala, ()s no funcionan bien con if... else.


2

05ab1e (27 bytes)

F"|("0NQ¹<NQ~èð¹N-×'/ðN×J∞,

pruébalo en línea

explicación

F                                                #Loop n times        
 |("0NQ¹<NQ~è                                    #Use ( or |        
             ð¹N-×                               #put spaces (1)        
                  '/                             #put /                
                    ðN×                          #put more space                
                       J∞,                       #reverse image        

Creo que '/¹N-úes un byte más corto que ð¹N-×'/.
Neil

Buen enfoque, pero hay algunas cosas para el golf. Uno es lo que @Neil sugirió anteriormente. Además: "|("puede ser „|((hay builtins para 1, 2 y 3 cadenas de caracteres ', y respectivamente); y 0NQ¹<NQ~puede ser ΂Nåè( Îparece ser intervenidos en la versión legado de TIO, pero funciona en la última versión de 05AB1E, en cuyo caso también tendrá que reemplazar con º). Entonces, en total ( 21 bytes ): F„|(΂Nåè'/¹N-úðN×Jº, Pruébelo en línea .
Kevin Cruijssen



1

C # (.NET Core) , 188 bytes

n=>{int y=0,i=-1;var s="";while(y<n){var r=new char[n*2+4];r[n+1-y]='/';r[n+2+y]='\\';if(y<2|y++>n-2)i++;r[0]="(|("[i];r[n*2+3]=")|)"[i];s+=new string(r)+"\n";}return s.Replace("\0"," ");}

Pruébalo en línea!

Degolfed

n=>{
    int y=0,i=-1;
    var s="";

    while(y<n){
        var r=new char[n*2+4];
        r[n+1-y]='/';
        r[n+2+y]='\\';

        if(y<2 | y++>n-2)
            i++;

        r[0] = "(|("[i];
        r[n*2+3] = ")|)"[i];

        s += new string(r)+"\n";
    }

    return s.Replace("\0"," ");
}

1

Python 3, 110 bytes 93 bytes

b=c=int(input())*2
d,e='/\\'
while b:print('(|%%ss)|'[2<b<c::2]%f' {d+e:^{c}} ');d+='  ';b-=2

1

PowerShell , 93 91 90 89 bytes

-2 Gracias a ASCII-only por señalar parens adicionales
-1 Gracias a Mazzy por ajustar la lógica de intercambio

param($n)0..--$n|%{"|("[!($x=($n-$_)*$_)]+($y=" "*($n-$_+1))+"/"+"  "*$_+"\$y"+"|)"[!$x]}

Pruébalo en línea!

Tratando de modificar ese $x=bit. Probablemente haya una forma más inteligente de obtener la primera y última línea en unos pocos bytes menos. Hay una mejor $x=pero no es mucho más barata.


1
89 bytes: ¡ Pruébelo en línea!
mazzy

0

Lienzo , 12 bytes.

┤|×(e⟳ +╴/+║

Pruébalo aquí!

Explicación:

┤             decrease the input by 2
 |×           repeat "|" vertically - if the amount is -1 (for input of 1), ir just removes the item currently
   (          push "("
    e        encase in that parentheis - if that first string isn't there, currently it just fails doing anything and leaves the parenthesis on the stack
     ⟳       rotate clockwise
       +     append horizontally a space
        ╴/   get a diagonal the length of the input
          +  append it horizontally to the current result
           ║  and palindromize horizontally with 0 overlap
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.