Vẽ lambda blazon


16

Để kỷ niệm 2497 chiến thắng của Hy Lạp tại Salamis vào năm 480 trước Công nguyên. Vẽ lambda blazon.

Lambda blazon là lambda được vẽ trên khiên Hy Lạp như vậy:

hình ảnh của lambda vốn đỏ trên nền lá chắn trắng và vàng tròn

Câu đố: Cho một số nguyên n dương, tạo ra một hình ảnh nghệ thuật ascii của tấm khiên trên.

Thông số kỹ thuật:

n = 1:

( /\ )

n = 3:

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

n = 5

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

Đồ thị: n = 3

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

                 x-axis

Sự miêu tả:

Cần có chính xác n \ ký tự và n / ký tự. Các /s và \s không được chạm vào cạnh của tấm chắn. Các góc dưới cùng và trên cùng của tấm khiên sẽ được ký hiệu bằng a (hoặc )trừ khi n = 1 trong đó sẽ có một )và một (. Sẽ luôn có một khoảng trống giữa các góc dưới cùng và lambda, tăng thêm 1 với trục y cho đến khi y + 1 == n. Không góc của phía lá chắn sẽ được ký hiệu với |. Không có lá chắn trên cùng.


7
Tại sao downvote? (Thêm 2 lượt đi)
user202729

3
@ user202729 ý bạn là gì nữa?
jacksonecac

4
SE có giới hạn ký tự nhận xét, buộc bình luận phải có ít nhất 15 ký tự.
dùng202729

7
Tại sao bạn không thể đợi 3 năm để đăng nó cho kỷ niệm 2,5 nghìn năm; -;
HyperNeutrino

5
Tại sao chỉ có số nguyên lẻ? : o
Felix Palmen

Câu trả lời:


8

Than ,  17  13 byte

Cảm ơn @Neil vì đã tiết kiệm 4 byte!

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

Hãy thử trực tuyến!

Giải trình:

(↙                // 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
tiết kiệm cho bạn một byte và một nửa số của bạn là không cần thiết.
Neil

1
Ngoài ra, bạn Iθcó thể lưu một byte khác.
Neil

Tóm tắt các đề xuất của Neil, 13 byte
Ông Xcoder

@ Mr.Xcoder Cảm ơn, nhưng tôi đã bắt đầu làm những việc đó rồi.
Steadybox

Nó nhỏ, nhưng tôi tin vào lời giải thích của bạn (→nên có nghĩa là "... và di chuyển một bước sang phải "
Kamil Drakari

6

SOGL V0.12 , 17 14 byte

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

Hãy thử nó ở đây!

Giải trình:

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

  • Đã lưu bảy byte nhờ trần .
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]));}

Hãy thử trực tuyến!


Chúng tôi xin lỗi chính và bao gồm bây giờ? Cộng đồng này đã thay đổi.
Alec Teal

2
@AlecTeal Có thể chấp nhận viết một hàm thực hiện tác vụ được chỉ định thay vì một chương trình đầy đủ. Bao gồm nói chung làm đếm về phía đếm byte, một số trình biên dịch C, tuy nhiên, cố gắng đoán định nghĩa hàm nếu không phù hợp bao gồm có mặt.
Jonathan Frech

Hãy nghĩ rằng bạn đã bỏ qua số sai, giám đốc
Veskah

@Veskah Đúng. ._.
Jonathan Frech

3

Võng mạc , 41 byte

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

Hãy thử trực tuyến! Giải trình:

.+
$* 

Chuyển đổi sang unary, nhưng sử dụng khoảng trắng.

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

Sử dụng các toán tử tiền tố và hậu tố khớp để tạo ra một loạt các dòng với số lượng không gian trung tâm tăng lên trên mỗi dòng.

G`.

Tuy nhiên, có thêm một dòng trống, loại bỏ phiên âm cuối cùng, vì vậy hãy xóa nó ở đây.

sT`()`|`¶.*¶

Trên tất cả các dòng ngoại trừ đầu tiên và cuối cùng, thay đổi ()s thành |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')}

Hãy thử trực tuyến!


2

Mẻ, 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%^|

Như nếu |s là chưa đủ tồi tệ, ()s không làm việc tốt với if... else.


2

05ab1e (27 byte)

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

thử trực tuyến

giải trình

F                                                #Loop n times        
 |("0NQ¹<NQ~è                                    #Use ( or |        
             ð¹N-×                               #put spaces (1)        
                  '/                             #put /                
                    ðN×                          #put more space                
                       J∞,                       #reverse image        

Tôi nghĩ '/¹N-úlà một byte ngắn hơn ð¹N-×'/.
Neil

Cách tiếp cận tốt đẹp, nhưng có một vài điều để chơi golf. Một là những gì @Neil đề xuất ở trên. Ngoài ra: "|("có thể „|((có builtins cho 1, 2, và chuỗi 3 char là ', tương ứng); và 0NQ¹<NQ~có thể ΂Nåè( Îdường như bị lỗi trong phiên bản kế thừa của TIO, nhưng nó hoạt động trong phiên bản mới nhất của 05AB1E, trong trường hợp đó bạn cũng sẽ phải thay thế bằng º). Vì vậy, trong tổng số ( 21 byte ): F„|(΂Nåè'/¹N-úðN×Jº, Hãy thử trực tuyến .
Kevin Cruijssen


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]

Hãy thử trực tuyến!

-1 nhờ vào trứng .


không thành công n=1, nhưng có thể được sửa bằng cách thay thế i%~-n<1bằng-~i%n<2
Rod

@Rod cảm ơn, đã sửa
Erik the Outgolfer 20/10/17

90 byte : '<space>'*i*2->'<space><space>'*i
ovs

@ovs @ _ @ tại sao tôi không nghĩ về điều đó
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"," ");}

Hãy thử trực tuyến!

Bị khử

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 Cảm ơn chỉ ASCII vì đã chỉ ra các phép bổ sung
-1 Cảm ơn Mazzy vì đã điều chỉnh logic hoán đổi

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

Hãy thử trực tuyến!

Cố gắng để điều chỉnh $x=bit đó . Có lẽ có một cách thông minh hơn để đưa ra dòng đầu tiên và dòng cuối cùng trong một vài byte. Có một cái tốt hơn $x=nhưng nó không rẻ hơn nhiều.



0

Canvas , 12 byte

┤|×(e⟳ +╴/+║

Hãy thử nó ở đây!

Giải trình:

┤             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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.