Zeichnen Sie das Lambda-Wappen

16

Um den 2497. Jahrestag des griechischen Sieges bei Salamis 480 v. Chr. Zu feiern. Zeichnen Sie das Lambda-Wappen.

Das Lambda-Wappen war das auf griechische Schilde gemalte Lambda wie folgt:

Bilder von roter Hauptstadt Lambda auf kreisförmigen Weiß- und Goldschildhintergründen

Puzzle: Bei einer positiven ungeraden Ganzzahl n erstellen Sie ein ASCII-Kunstbild des obigen Schildes.

Spezifikationen:

n = 1:

( /\ )

n = 3:

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

n = 5

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

Graph: n = 3

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

                 x-axis

Beschreibung:

Es sollten genau n \ Zeichen und n / Zeichen vorhanden sein. Das /s und \s sollten die Kante des Schildes nicht berühren. Die unteren und oberen Ecken des Schildes werden mit einem (oder gekennzeichnet, es )sei denn, n = 1, wo es eins )und eins gibt (. Zwischen den unteren Ecken und dem Lambda befindet sich immer ein Abstand, der sich mit der y-Achse bis um 1 erhöht y + 1 == n. Nicht Ecken der Schildseite sind mit gekennzeichnet |. Es gibt kein Schild oben.

jacksonecac
quelle
7
Warum abstimmen? (Noch 2)
user202729
3
@ user202729 was meinst du mit 2 noch zu gehen?
Jacksonecac
4
SE hat eine Einschränkung für Kommentarzeichen, wodurch Kommentare mindestens 15 Zeichen lang sein müssen.
user202729
7
Warum hättest du nicht 3 Jahre warten können, um es zum 2,5-jährigen Jubiläum zu veröffentlichen?
HyperNeutrino
5
Warum nur ungerade ganze Zahlen? : o
Felix Palmen

Antworten:

8

Kohle ,  17  13 Bytes

Vielen Dank an @Neil für das Speichern von 4 Bytes!

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

Probieren Sie es online!

Erläuterung:

(↙                // 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
quelle
1
Spart Ihnen ein Byte, und die Hälfte Ihrer s sind unnötig.
Neil
1
Sie Iθkönnen auch ein anderes Byte speichern.
Neil
Zusammenfassend Neils Vorschläge, 13 Bytes
Mr. Xcoder
@ Mr.Xcoder Danke, aber ich habe mich schon darum gekümmert.
Steadybox
Es ist klein, aber ich glaube, Ihre Erklärung (→sollte bedeuten "... und einen Schritt nach rechts "
Kamil Drakari
6

SOGL V0.12 , 17 14 Bytes

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

Probieren Sie es hier aus!

Erläuterung:

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
quelle
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]));}

Probieren Sie es online!

Jonathan Frech
quelle
Wir entschuldigen uns für das Wesentliche und schließen jetzt ein? Diese Community hat sich verändert.
Alec Teal
2
@AlecTeal Es ist akzeptabel, eine Funktion zu schreiben, die die angegebene Aufgabe ausführt, anstatt ein vollständiges Programm. Inklusive im Allgemeinen do Zahl auf der Byte - Zählung, einig C - Compiler jedoch versuchen , eine Funktionsdefinition zu erraten , wenn keine passenden vorhanden beinhaltet sind.
Jonathan Frech
Denken Sie, Sie haben die falsche Nummer durchgestrichen, Chef
Veskah
@ Veskah True. ._.
Jonathan Frech
3

Retina , 41 Bytes

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

Probieren Sie es online! Erläuterung:

.+
$* 

In unary konvertieren, aber Leerzeichen verwenden.

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

Verwenden Sie die Operatoren für das Übereinstimmungspräfix und -suffix, um eine Reihe von Zeilen mit zunehmendem Mittelpunktsabstand auf jeder Zeile zu erstellen.

G`.

Es gibt jedoch eine zusätzliche Leerzeile, die die endgültige Transliteration auslöst. Löschen Sie sie daher hier.

sT`()`|`¶.*¶

Ändern Sie in allen Zeilen außer der ersten und der letzten das Zeichen ()s in |s.

Neil
quelle
2

Java (OpenJDK 8) , 200 190 170 Bytes

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];}

Probieren Sie es online!

Roberto Graham
quelle
167 Bytes
Ceilingcat
2

Pyth , 43 Bytes

Das ist ziemlich gigantisch, da es auf dem Handy gemacht wurde: - /

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

Probieren Sie es online!

Mr. Xcoder
quelle
2

Python 2 , 85 Bytes

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

Probieren Sie es online!

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

Probieren Sie es online!

NofP
quelle
2

Batch, 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%^|

Als ob |s nicht schon schlimm genug wäre, ()s nicht gut mit if... else.

Neil
quelle
2

05ab1e (27 Byte)

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

versuche es online

Erläuterung

F                                                #Loop n times        
 |("0NQ¹<NQ~è                                    #Use ( or |        
             ð¹N-×                               #put spaces (1)        
                  '/                             #put /                
                    ðN×                          #put more space                
                       J∞,                       #reverse image        
David Smith
quelle
Ich denke, '/¹N-úist ein Byte kürzer als ð¹N-×'/.
Neil
Nizza Ansatz, aber es gibt ein paar Dinge zum Golfen. Eines ist, was @Neil oben vorgeschlagen hat. Darüber hinaus: "|("sein kann „|((es gibt builtins für 1, 2, und 3-char Strings ist ', und jeweils); und 0NQ¹<NQ~kann sein ΂Nåè( Îscheint in der Vorgängerversion von TIO fehlerhaft zu sein, funktioniert jedoch in der neuesten Version von 05AB1E; in diesem Fall müssen Sie auch ersetzen durch º). Also insgesamt ( 21 Bytes ): F„|(΂Nåè'/¹N-úðN×Jº, Online ausprobieren .
Kevin Cruijssen
2

Funky , 101 Bytes

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

Probieren Sie es online!

Ein Taco
quelle
1

Python 2 , 90 Bytes

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

Probieren Sie es online!

-1 danke an ovs .

Erik der Outgolfer
quelle
schlägt fehl n=1, kann aber durch Ersetzen i%~-n<1durch-~i%n<2
Rod
@ Rod danke, behoben
Erik the Outgolfer
90 Bytes : '<space>'*i*2->'<space><space>'*i
ovs
@ovs @ _ @ warum habe ich nicht daran gedacht
Erik the Outgolfer
1

C # (.NET Core) , 188 Byte

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

Probieren Sie es online!

Entgolft

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
quelle
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
mypetlion
quelle
1

PowerShell , 93 91 90 89 Byte

-2 Danke an ASCII-only für den Hinweis auf zusätzliche Parens
-1 Danke an Mazzy für die Optimierung der Swap-Logik

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

Probieren Sie es online!

Versucht, das $x=bisschen zu optimieren . Es gibt wahrscheinlich einen intelligenteren Weg, um die erste und letzte Zeile in ein paar Bytes weniger herauszubekommen. Es gibt ein besseres, $x=aber es ist nicht viel billiger.

Veskah
quelle
1
89 Bytes: Probieren Sie es online!
mazzy
0

Canvas , 12 Bytes

┤|×(e⟳ +╴/+║

Probieren Sie es hier aus!

Erläuterung:

┤             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
quelle