Gambarkan lambda blazon

16

Untuk merayakan ulang tahun ke 2497 dari kemenangan Yunani di Salamis pada 480 SM. Gambarkan lambda blazon.

Lambda blazon adalah lambda yang dilukis di atas perisai Yunani seperti:

gambar lambda modal merah pada latar belakang putih dan emas melingkar

Teka-teki: Diberikan bilangan bulat ganjil positif, menghasilkan gambar seni ascii dari perisai di atas.

Spesifikasi:

n = 1:

( /\ )

n = 3:

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

n = 5

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

Grafik: n = 3

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

                 x-axis

Deskripsi:

Harus ada n \ karakter dan n / karakter. The /s dan \s harus tidak menyentuh tepi perisai. Sudut bawah dan atas perisai akan dilambangkan dengan a (atau )kecuali n = 1 di mana akan ada satu )dan satu (. Akan selalu ada satu ruang antara sudut bawah dan lambda, meningkat sebesar 1 dengan sumbu y sampai y + 1 == n. Non sudut dari sisi pelindung akan dilambangkan dengan |. Tidak ada top shield.

jacksonecac
sumber
7
Mengapa downvote? (2 lebih banyak lagi)
user202729
3
@ user202729 apa maksudmu 2 lagi?
jacksonecac
4
SE memiliki batasan karakter komentar, yang memaksa komentar menjadi setidaknya 15 karakter.
user202729
7
Mengapa Anda tidak bisa menunggu 3 tahun untuk mempostingnya untuk peringatan 2,5 tahun; -;
HyperNeutrino
5
Mengapa hanya bilangan bulat aneh? : o
Felix Palmen

Jawaban:

8

Arang ,  17  13 byte

Terima kasih kepada @Neil untuk menghemat 4 byte!

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

Cobalah online!

Penjelasan:

(↙                // 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
sumber
1
menghemat satu byte, dan setengah dari Anda tidak perlu.
Neil
1
Anda Iθjuga dapat menyimpan byte lain.
Neil
Merangkum
@ Mr.Xcoder Terima kasih, tapi saya sudah melakukannya.
Steadybox
Ini kecil, tapi saya percaya penjelasan Anda (→harus berarti "... dan bergerak satu langkah ke kanan "
Kamil Drakari
6

SOGL V0.12 , 17 14 byte

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

Coba Di Sini!

Penjelasan:

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
sumber
4

C (gcc) , 103 96 byte

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

Cobalah online!

Jonathan Frech
sumber
Kami permisi utama dan termasuk sekarang? Komunitas ini telah berubah.
Alec Teal
2
@AlecTeal Dapat diterima untuk menulis fungsi yang melakukan tugas yang ditentukan daripada program lengkap. Termasuk pada umumnya do count terhadap count byte, beberapa kompiler C, bagaimanapun, mencoba menebak definisi fungsi jika tidak ada yang cocok termasuk yang hadir.
Jonathan Frech
Pikirkan Anda mencoret nomor yang salah, kepala
Veskah
@Veskah Benar. ._.
Jonathan Frech
3

Retina , 41 byte

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

Cobalah online! Penjelasan:

.+
$* 

Konversi ke unary, tetapi menggunakan spasi.

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

Gunakan awalan pertandingan dan operator sufiks untuk menghasilkan serangkaian garis dengan semakin banyak ruang pusat di setiap baris.

G`.

Namun, ada baris kosong tambahan, yang membuang transliterasi akhir, jadi hapus di sini.

sT`()`|`¶.*¶

Di semua baris kecuali yang pertama dan terakhir, ubah ()s ke |s.

Neil
sumber
2

Perl 5 , 91 + 1 ( -p) = 92 byte

$_='('.($s=$"x($q=$_))."/\\$s)";while(--$q){say;y/()/|/;s| /|/ |;s|\\ | \\|}s/\|/(/;s/\|/)/

Cobalah online!

Xcali
sumber
2

Java (OpenJDK 8) , 200 190 170 byte

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

Cobalah online!

Roberto Graham
sumber
167 byte
ceilingcat
2

Pyth , 43 byte

Ini cukup besar mengingat telah dilakukan di ponsel: - /

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

Cobalah online!

Tuan Xcoder
sumber
2

Python 2 , 85 byte

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

Cobalah online!

Lynn
sumber
2

R , 153 byte

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

Cobalah online!

NofP
sumber
2

Batch, 218 byte

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

Seakan |s tidak cukup buruk, ()s tidak bekerja dengan baik dengan if... else.

Neil
sumber
2

05ab1e (27 byte)

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

coba online

penjelasan

F                                                #Loop n times        
 |("0NQ¹<NQ~è                                    #Use ( or |        
             ð¹N-×                               #put spaces (1)        
                  '/                             #put /                
                    ðN×                          #put more space                
                       J∞,                       #reverse image        
David Smith
sumber
Saya pikir '/¹N-úbyte lebih pendek dari ð¹N-×'/.
Neil
Pendekatan yang bagus, tetapi ada beberapa hal untuk bermain golf. Salah satunya adalah apa yang disarankan oleh @Neil di atas. Selain itu: "|("bisa „|((ada builtin untuk string 1, 2, dan 3-char sedang ', dan masing - masing); dan 0NQ¹<NQ~bisa ΂Nåè( Îtampaknya disadap dalam versi TIO yang lama, tetapi itu berfungsi di versi terbaru 05AB1E, dalam hal ini Anda juga harus mengganti dengan º). Jadi total ( 21 byte ): F„|(΂Nåè'/¹N-úðN×Jº, Cobalah online .
Kevin Cruijssen
2

Funky , 101 byte

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

Cobalah online!

ATaco
sumber
1

Python 2 , 90 byte

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

Cobalah online!

-1 Berkat ovs .

Erik the Outgolfer
sumber
gagal untuk n=1, tetapi dapat diperbaiki dengan mengganti i%~-n<1dengan-~i%n<2
Rod
@Rod, terima kasih, perbaiki
Erik the Outgolfer
90 byte : '<space>'*i*2->'<space><space>'*i
ovs
@ovs @ _ @ kenapa aku tidak memikirkan itu
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"," ");}

Cobalah online!

Merosot

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
sumber
1

Python 3, 110 byte 93 byte

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

PowerShell , 93 91 90 89 byte

-2 Berkat ASCII-hanya untuk menunjukkan parens ekstra
-1 Terima kasih kepada Mazzy untuk mengutak-atik logika swap

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

Cobalah online!

Mencoba mengubah $x=sedikit itu. Mungkin ada cara yang lebih cerdas untuk mendapatkan baris 1 dan terakhir dalam beberapa byte lebih sedikit. Ada yang lebih baik $x=tetapi tidak jauh lebih murah.

Veskah
sumber
1
89 byte: Cobalah secara online!
mazzy
0

Kanvas , 12 byte

┤|×(e⟳ +╴/+║

Coba di sini!

Penjelasan:

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