Code Golf:蜘蛛网

Lir*_*una 36 language-agnostic code-golf rosetta-stone

挑战

按字符排序的最短代码输出一个蜘蛛网,其环等于用户的输入.

通过重建中心环启动蜘蛛网:

   \_|_/
  _/   \_
   \___/
   / | \
Run Code Online (Sandbox Code Playgroud)

然后添加等于用户输入的数量的环.环是由由"蜘蛛圈"的另一个水平\ / |_,并包装中心圆.

输入始终保证为单个正整数.

测试用例

Input
    1
Output
      \__|__/
      /\_|_/\
    _/_/   \_\_
     \ \___/ /
      \/_|_\/
      /  |  \
Run Code Online (Sandbox Code Playgroud)
Input
    4
Output
         \_____|_____/
         /\____|____/\
        / /\___|___/\ \
       / / /\__|__/\ \ \
      / / / /\_|_/\ \ \ \
    _/_/_/_/_/   \_\_\_\_\_
     \ \ \ \ \___/ / / / / 
      \ \ \ \/_|_\/ / / /
       \ \ \/__|__\/ / /
        \ \/___|___\/ /
         \/____|____\/
         /     |     \
Run Code Online (Sandbox Code Playgroud)
Input:
    7
Output:
            \________|________/
            /\_______|_______/\
           / /\______|______/\ \
          / / /\_____|_____/\ \ \
         / / / /\____|____/\ \ \ \
        / / / / /\___|___/\ \ \ \ \
       / / / / / /\__|__/\ \ \ \ \ \
      / / / / / / /\_|_/\ \ \ \ \ \ \
    _/_/_/_/_/_/_/_/   \_\_\_\_\_\_\_\_
     \ \ \ \ \ \ \ \___/ / / / / / / /
      \ \ \ \ \ \ \/_|_\/ / / / / / /
       \ \ \ \ \ \/__|__\/ / / / / /
        \ \ \ \ \/___|___\/ / / / /
         \ \ \ \/____|____\/ / / /
          \ \ \/_____|_____\/ / /
           \ \/______|______\/ /
            \/_______|_______\/
            /        |        \
Run Code Online (Sandbox Code Playgroud)

代码计数包括输入/​​输出(即完整程序).

mob*_*mob 40

Perl,164个字符

195 184 171 167 164

print@o=((map{$z=_ x($x=1+$N-$_);$"x$x." /"x$_."\\$z|$z/".'\ 'x$_.$/}0..($N=<>)),
"_/"x++$N."   ".'\_'x$N.$/);
y'/\\'\/',@o||y#_# #,$t++||y#_ # _#,print while$_=pop@o
Run Code Online (Sandbox Code Playgroud)

第一个语句打印出蜘蛛网的上半部分.第二个语句使用音译操作来创建上半部分的反射.

下一个重量接近314个字符(生产代码),但更符合本季的精神.

           ;               "
         Tr                 Ic
        K|                   |t
       Re                     aT
       ",                     "H
       av                     e
        A:                    -
     )H AL                   LO  W
    ee  N"                   ,"  En
   jo    y_                 Yo    ur
   _      C&&             y";     ##
   &I      ();           $N=      1+
   <>;      $,=  $/;@O  =((     map 
    $" x($   X=$N-$_). ${   f}x$_.$
        B.${U}x$X.$P.${U}x$X.$
    F.${b}x$_,0..$N-1),${g}x$N.(${S}
   x3).${c}x$N);sub I{($F,$B,$U, $P)
  =qw         (/ \\ _ |);;         ${
 S}=        " ";$f=$S.$F;$g=$       U.
 $F     ;$b=$B.$S;$c=$B.${U};}@{    P}=
@{     O};  while($_=pop@{P}  ){     @{
 P}    ||   y:_: :;$spooky++  ||    0|
  0    ||   y@_ @ _@;y:/:8:;   ;    ;
   ;   ;;   y:\\:/:;y:8:\\:;  @O   =
    (  @O    ,$_);}print@O;   q{
       Do     !Discuss:Rel    ig
       io       n,Politi      cs
        ,&                   &T
        heG                 rea
          tP              ump
            ki           n}
Run Code Online (Sandbox Code Playgroud)

帽子提示http://www.ascii-art.de/ascii/s/spider.txt

我手工构建了蜘蛛形代码,但是请参阅CPAN上的Acme :: AsciiArtinator模块,以获得有关自动化(或至少半自动化)任务的帮助.

  • `捣蛋|| TreaT`,`Enjoy Your C && y`,`Have A :-) HALLOWeeN`,`Do!讨论:宗教,政治,&& The Great Pumpkin`我错过了什么吗?:d (2认同)

Joh*_*ooy 18

Golfscript - 124个字符

所有的空白都很重要!如果您意外地在末尾添加换行符,则输出结尾会有一个额外_的行

~):@,{@\:&-:0' ': *& '/':/+*'\\':~'_':
0*.'|':|\/~ +&*n}%
/+@*   ~
+@*n ~+@*


@/ +*n@,{):& *@&-:( ~+*/[
 ](!=&*.|\~/ +(*n}%
Run Code Online (Sandbox Code Playgroud)

Golfscript - 129个字符

~):@,{@\:&-:0' ': *&' /'*'\\':~'_':
0*.'|'\'/'~ +&*n}%'_/'@*   '\_'@*n ~+@*


@'/ '*n@,{):& *@&-:( ~+*'/'[
 ](!=&*.'|'\~'/ '(*n}%
Run Code Online (Sandbox Code Playgroud)

Golfscript - 133个字符

~):@,{@\:&-:0' ': *&' /'*'\\':~'_':
0*.'|'\'/'~ +&*n}%'_/'@*3 *'\_'@*n' \\'@*3
*@'/ '*n@,{):& *@&-:( ~+*'/''_ '1/(!=&*.'|'\~'/ '(*n}%
Run Code Online (Sandbox Code Playgroud)


Joh*_*ooy 9

Python - 212个字符

n=input()+1;b,f,p,u,s='\/|_ '
a=[s*(n-i)+' /'*i+b+u*(n-i)+p+u*(n-i)+f+'\ '*i+s*(n-i)for
i in range(n)]
print"\n".join(a+['_/'*n+s*3+'\_'*n,' \\'*n+u*3+'/ '*n]+[x[::-1]for
x in a[:0:-1]]+[a[0][::-1].replace(u,s)])
Run Code Online (Sandbox Code Playgroud)


A. *_*Rex 5

Perl:161个字符

请注意,此代码包含源中的起始Web.(最后加倍的反斜杠是一种耻辱.早期的版本没有.)

$_='
 \_|_/
_/   \_
 \___/ 
 /_|_\\';
for$x(1..<>){
s|(.\S).*([/\\].)|$1$&$2|g;
s|\\(.*)/| \\_$1_/$` /$&\\ |;
s|(\s+)\K/(.*).$| \\$&/$1 /_$2_\\|
}
s|_(?=.*$)| |g;
print
Run Code Online (Sandbox Code Playgroud)

内部的空白$_是重要的(当然),但其余的都没有.如果你有一个小改进的建议,请随意编辑我的代码.例如,Kinopiko已经削减了6个角色!

根据您对命令行开关的计算方式,这可能会更短(如果我可以正确计算,通常的Perl高尔夫规则为154):

#!perl -ap
$_='
 \_|_/
_/   \_
 \___/ 
 /_|_\\';
s|(.\S).*([/\\].)|$1$&$2|g,
s|\S(.*).| \\_$1_/$` /$&\\ |,
s|(\s+)\K/(.*).$| \\$&/$1 /_$2_\\|while$F[0]--;
s|_(?=.*$)| |g
Run Code Online (Sandbox Code Playgroud)