Dessine le blason lambda

16

Pour célébrer le 2497e anniversaire de la victoire grecque à Salamine en 480 avant JC. Dessinez le blason lambda.

Le blason lambda était le lambda peint sur des boucliers grecs comme ceci:

images de la capitale rouge lambda sur fond de bouclier circulaire blanc et or

Puzzle: Étant donné un entier impair impair n, produisez une image d'art ascii du bouclier ci-dessus.

Caractéristiques:

n = 1:

( /\ )

n = 3:

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

n = 5

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

Graphique: n = 3

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

                 x-axis

La description:

Il doit y avoir exactement n \ caractères et n / caractères. Les /s et \s ne doivent pas toucher le bord du bouclier. Les coins inférieur et supérieur du bouclier seront indiqués par un (ou à )moins que n = 1 où il y en aura un )et un (. Il y aura toujours un espace entre les coins inférieurs et le lambda, augmentant de 1 avec l'axe y jusqu'à y + 1 == n. Les coins non du côté du bouclier seront indiqués par |. Il n'y a pas de dessus de bouclier.

jacksonecac
la source
7
Pourquoi downvote? (2 de plus à parcourir)
user202729
3
@ user202729 que voulez-vous dire par 2 de plus?
jacksonecac
4
SE a une restriction de caractère de commentaire, qui force les commentaires à être au moins 15 caractères.
user202729
7
Pourquoi ne pourriez-vous pas avoir attendu 3 ans pour l'afficher à l'occasion du 2,5e anniversaire; -;
HyperNeutrino
5
Pourquoi seulement des entiers impairs? : o
Felix Palmen

Réponses:

8

Fusain ,  17  13 octets

Merci à @Neil d'avoir économisé 4 octets!

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

Essayez-le en ligne!

Explication:

(↙                // 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.
Steadybox
la source
1
vous fait gagner un octet, et la moitié de vos s sont inutiles.
Neil
1
En outre, vous Iθpouvez enregistrer un autre octet.
Neil
Résumant les suggestions de Neil, 13 octets
M. Xcoder
@ Mr.Xcoder Merci, mais je me suis déjà mis à le faire.
Steadybox
C'est petit, mais je crois que votre explication (→devrait signifier "... et avancer d'un pas vers la droite "
Kamil Drakari
6

SOGL V0.12 , 17 14 octets

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

Essayez-le ici!

Explication:

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                                     
dzaima
la source
4

C (gcc) , 103 96 octets

  • Enregistré sept octets grâce au plafond .
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]));}

Essayez-le en ligne!

Jonathan Frech
la source
Nous excusons le principal et inclut maintenant? Cette communauté a changé.
Alec Teal
2
@AlecTeal Il est acceptable d'écrire une fonction qui exécute la tâche spécifiée plutôt qu'un programme complet. Comprend en général do compte pour le nombre d'octets, certains compilateurs C, cependant, tentent de deviner une définition de fonction si aucune correspondance comprend sont présents.
Jonathan Frech
Pensez que vous avez barré le mauvais numéro, chef
Veskah
@Veskah True. ._.
Jonathan Frech
3

Rétine , 41 octets

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

Essayez-le en ligne! Explication:

.+
$* 

Convertissez en unaire, mais en utilisant des espaces.

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

Utilisez les opérateurs de préfixe et de suffixe de correspondance pour générer une série de lignes avec des quantités croissantes d'espace central sur chaque ligne.

G`.

Cependant, il y a une ligne vierge supplémentaire, ce qui annule la translittération finale, alors supprimez-la ici.

sT`()`|`¶.*¶

Sur toutes les lignes sauf la première et la dernière, remplacez ()s par |s.

Neil
la source
2

Java (OpenJDK 8) , 200 190 170 octets

n->{for(char i=0,s[];i<n;s[-~n-i]=47,s[2+n+i]=92,s[0]=i<1|i>n-2?40:'|',s[3+n+n]=i<1|i++>n-2?41:'|',System.out.println("".valueOf(s).replace('\0',' ')))s=new char[4+n+n];}

Essayez-le en ligne!

Roberto Graham
la source
167 octets
Plafond
2

Pyth , 43 octets

C'est assez gigantesque étant donné que cela a été fait sur mobile: - /

j_m++++++@"(|"J!/,1QdK*;d\/*;y-Qd\\K@")|"JS

Essayez-le en ligne!

M. Xcoder
la source
2

Python 2 , 85 octets

n=a=input()
while a:print'(|'[1<a<n]+a*' '+'/'+(n-a)*'  '+'\\'+a*' '+')|'[1<a<n];a-=1

Essayez-le en ligne!

Lynn
la source
2

R , 153 octets

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')}

Essayez-le en ligne!

NofP
la source
2

Lot, 218 octets

@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%^|

Comme si |s ne suffisaient pas, ()s ne fonctionnent pas bien avec if... else.

Neil
la source
2

05ab1e (27 octets)

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

essayez-le en ligne

explication

F                                                #Loop n times        
 |("0NQ¹<NQ~è                                    #Use ( or |        
             ð¹N-×                               #put spaces (1)        
                  '/                             #put /                
                    ðN×                          #put more space                
                       J∞,                       #reverse image        
David Smith
la source
Je pense que '/¹N-úc'est un octet plus court que ð¹N-×'/.
Neil
Belle approche, mais il y a quelques choses au golf. L'une est ce que @Neil a suggéré ci-dessus. De plus: "|("peut être„|( (il n'y a builtins pour 1, 2 et 3 des chaînes-char étant ', et respectivement); et 0NQ¹<NQ~peut être ΂Nåè( Îsemble être mis sur écoute dans la version héritée de TIO, mais il fonctionne dans la dernière version de 05AB1E, dans ce cas , vous devrez également remplacer avec º). Donc au total ( 21 octets ): F„|(΂Nåè'/¹N-úðN×Jº, essayez-le en ligne .
Kevin Cruijssen
2

Funky , 101 octets

n=>for(i=0;i<n;i++)print(((c=(i==n-1)or!i)?"(":"|")..(s=" "*n-i).."/"..(" "*i*2).."\\"..s..c?")":"|")

Essayez-le en ligne!

ATaco
la source
1

Python 2 , 90 octets

n=input()
for i in range(n):m=-~i%n<2;s=' '*(n-i);print'|('[m]+s+'/'+'  '*i+'\\'+s+'|)'[m]

Essayez-le en ligne!

-1 grâce aux ovs .

Erik le Outgolfer
la source
échoue pour n=1, mais peut être corrigé en remplaçant i%~-n<1par-~i%n<2
Rod
@Rod thanks, fixed
Erik the Outgolfer
90 octets : '<space>'*i*2->'<space><space>'*i
ovs
@ovs @ _ @ pourquoi n'y ai-je pas pensé
Erik the Outgolfer
1

C # (.NET Core) , 188 octets

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"," ");}

Essayez-le en ligne!

Dégolfé

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"," ");
}
Ayb4btu
la source
1

Python 3, 110 octets 93 octets

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

PowerShell , 93 91 90 89 octets

-2 Merci à ASCII uniquement pour avoir souligné les parens supplémentaires
-1 Merci à Mazzy pour avoir peaufiné la logique de swap

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

Essayez-le en ligne!

Essayer de modifier ce $x=bit. Il existe probablement un moyen plus intelligent d'extraire la première et la dernière ligne en quelques octets de moins. Il y a un meilleur $x=mais ce n'est pas beaucoup moins cher.

Veskah
la source
1
89 octets: essayez-le en ligne!
mazzy
0

Toile , 12 octets

┤|×(e⟳ +╴/+║

Essayez-le ici!

Explication:

┤             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
dzaima
la source