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.


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.

1
menghemat satu byte, dan setengah dari Anda tidak perlu.
Neil

1
Anda Iθjuga dapat menyimpan byte lain.
Neil


@ 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                                     

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!


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.






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!


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.


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        

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



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

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

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.



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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.