绘制Lambda blazon


16

为庆祝希腊在公元前480年在萨拉米斯的胜利2497周年。绘制lambda blazon。

Lambda blazon是涂在希腊盾牌上的lambda,如下所示:

images of red capital lambda on circular white and gold shield backgrounds

难题:给定正整数奇数n,生成上述屏蔽的ascii艺术图像。

规格:

n = 1:

( /\ )

n = 3:

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

n = 5

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

图表: n = 3

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

                 x-axis

描述:

应该恰好有n个 \字符和n个 /字符。在/S和\不是应该触摸屏蔽的边缘。屏蔽的底角和顶角将用a (或表示,)除非n = 1处有一个)和一个(。底角和lambda之间始终存在一个空间,并随着y轴增加1直到y + 1 == n。屏蔽层侧面的非角用表示|。没有屏蔽罩。


7
为什么要投票?(还有2个要去)
user202729

3
@ user202729您还想再说2个吗?
jacksonecac

4
SE具有注释字符限制,这迫使注释至少为15个字符。
user202729

7
您为什么不能等3年才能将其发布2.5周年?
HyperNeutrino

5
为什么只有奇数整数?:o
Felix Palmen '17

Answers:


8

木炭 17  13字节

感谢@Neil节省了4个字节!

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

在线尝试!

说明:

(↙                // 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
为您节省了一个字节,而您的s的一半是不必要的。
尼尔

1
同样,您Iθ可以保存另一个字节。
尼尔

总结Neil的建议,共13个字节
Xcoder先生,17年

@ Mr.Xcoder谢谢,但是我已经可以做那些了。
Steadybox

它很小,但我相信您的解释(→应表示“ ...并向右移动一步”
Kamil Drakari

6

SOGL V0.1217 14 个字节

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

在这里尝试!

说明:

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字节

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

在线尝试!


我们原谅并包括现在吗?这个社区已经改变。
亚历克·蒂尔

2
@AlecTeal可以编写执行指定任务的功能而不是完整程序。通常,包括在内的字节数确实计入字节数,但是,如果没有匹配的包括在内,某些C编译器会尝试猜测功能定义。
乔纳森·弗雷希

首席,您认为您

@Veskah是的。._。
乔纳森·弗雷希

3

视网膜,41字节

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

在线尝试!说明:

.+
$* 

转换为一元,但使用空格。

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

使用match前缀和后缀运算符生成一系列行,每行的中心空间增加。

G`.

但是,还有一个额外的空白行,它会引发最终的音译,因此请在此处将其删除。

sT`()`|`¶.*¶

在除第一行和最后一行之外的所有行上,将()s 更改为|s。


2

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

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

在线尝试!





2

R,153字节

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

在线尝试!


2

批处理,218字节

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

好像|s还不够糟糕,()s与if... 搭配不好else


2

05ab1e(27字节)

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

在线尝试

说明

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

我认为'/¹N-ú比少一个字节ð¹N-×'/
尼尔

不错的方法,但是高尔夫还有一些事情。一种是@Neil上面建议的内容。另外:"|("可以为„|((有内置1、2和3个字符的字符串'分别地); 并且0NQ¹<NQ~可以是΂NåèÎ似乎在旧版TIO中有问题,但在最新版本的05AB1E中确实可以使用,在这种情况下,您还必须替换º)。因此,总共(21个字节):F„|(΂Nåè'/¹N-úðN×Jº, 在线尝试
凯文·克鲁伊森



1

C#(.NET Core),188字节

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

在线尝试!

脱胶

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字节 93字节

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

1

的PowerShell93 91 90 89字节

-2感谢仅ASCII指出额外的括号
-1感谢Mazzy调整了交换逻辑

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

在线尝试!

尝试微调$x=。可能有一种更聪明的方法来以更少的字节数获取第一行和最后一行。有更好的,$x=但便宜得多。


1
89个字节:在线尝试!
mazzy

0

画布,12 字节

┤|×(e⟳ +╴/+║

在这里尝试!

说明:

┤             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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.