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.


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.

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                                     

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!


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.






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!


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.


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        

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



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

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

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.



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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.