전설적인 이그드라실 출력


39

당신의 임무는 전설적인 생명 나무 Yggdrasil 의 표현을 출력하는 것 입니다.

출력이 정확히 다음과 같은 프로그램을 작성해야합니다.

                                       /\
                                      /**\
                                     /****\
                                    /******\
                                    /******\
                                   /********\
                                  /**********\
                                 /************\
                                /**************\
                                 /************\
                                /**************\
                               /****************\
                              /******************\
                             /********************\
                            /**********************\
                              /******************\
                             /********************\
                            /**********************\
                           /************************\
                          /**************************\
                         /****************************\
                        /******************************\
                           /************************\
                          /**************************\
                         /****************************\
                        /******************************\
                       /********************************\
                      /**********************************\
                     /************************************\
                    /**************************************\
                        /******************************\
                       /********************************\
                      /**********************************\
                     /************************************\
                    /**************************************\
                   /****************************************\
                  /******************************************\
                 /********************************************\
                /**********************************************\
                     /************************************\
                    /**************************************\
                   /****************************************\
                  /******************************************\
                 /********************************************\
                /**********************************************\
               /************************************************\
              /**************************************************\
             /****************************************************\
            /******************************************************\
                  /******************************************\
                 /********************************************\
                /**********************************************\
               /************************************************\
              /**************************************************\
             /****************************************************\
            /******************************************************\
           /********************************************************\
          /**********************************************************\
         /************************************************************\
        /**************************************************************\
               /************************************************\
              /**************************************************\
             /****************************************************\
            /******************************************************\
           /********************************************************\
          /**********************************************************\
         /************************************************************\
        /**************************************************************\
       /****************************************************************\
      /******************************************************************\
     /********************************************************************\
    /**********************************************************************\
            /******************************************************\
           /********************************************************\
          /**********************************************************\
         /************************************************************\
        /**************************************************************\
       /****************************************************************\
      /******************************************************************\
     /********************************************************************\
    /**********************************************************************\
   /************************************************************************\
  /**************************************************************************\
 /****************************************************************************\
/******************************************************************************\
                                   |--------|
                                   |--------|
                                   |--------|
                                   |--------|
                                   |--------|
                                   |--------|
                                   |--------|
                                   |--------|
                                   |--------|
                                   |--------|
                                   |--------|
                                   |________|

후행 공백이 없습니다. 마지막 줄 바꿈은 생략 될 수 있습니다.

보다 쉽게 ​​확인할 수 있도록 다음은 예상 출력의 md5 합계입니다.

  • 374899e56bc854d04639c43120642e37 -마지막에 줄 바꿈이 없습니다.
  • 03afb81d960b8e130fe2f9e0906f0482 -마지막 줄 바꿈

표준 허점이 적용됩니다. 이것은 코드 골프이므로 바이트 단위의 가장 작은 항목이 이깁니다!


10
관련 : codegolf.stackexchange.com/q/15860/15599 . Nax, 마케팅 부서에서 일해야합니다. 모든 가정은 이번 크리스마스에 이그드라실을 원할 것입니다. 그레이엄의 숫자 질문에도 답하셨습니다. 뾰족한 것을 좋아해야합니다. "로켓"과 "아이스크림 콘"이라는 새로운 이름을 만들어 봅시다.
Level River St


4
@Nax : 월드 트리에 과일이 있고, 혈관 분포가 없기 때문에, 그것은 분명히 어떤 묘사의 한정자입니다. 불행히도 그것은 당신이 잘못된 나무의 사진을 찍은 것처럼 보입니다 : P
naught101

@Nax 흠. 당신이 올바른지. pedant (me)는 자신의 petard에 호이스트입니다. md5sum이 변경되었습니다.
Scott Leadley

1
이그드라실은 분명히 전나무가 아니라 에다의 재 나무입니다. 이처럼 킨다 .
Alex P

답변:


22

골프 스크립트, 84 77 76 75 72

Howard 와는 다른 접근 방식 . 그것을 시도 문자 수를 클릭하십시오.

10,{.)4*,\3*>{.39\-' '*'/'@2*'*'*'\
'}/}/12,{' '35*'|'@11<'_-'1/=8*1$n}/

3자를 저장해 준 Howard에게 감사합니다!

설명 :

이것은 다소 간단한 파이썬 솔루션 포트입니다 . 표현의 자유를 얻음 (스택 위치를 추적하는 대신 명명 된 변수 사용, print실제로 인쇄하지 않고 스택에 물건을 유지)

10,{...}/            # for i in range(10):
   .                 #    x = i
   )4*,              #    Y = range((i+1)*4)
   \3*               #    x *= 3
   >                 #    Y = Y[x:]  # y is now range(3*i, (i+1)*4)
   {...}/            #    for j in Y:
      .39\-          #        q = 39 - j
      ' '*           #        print ' '*q  # print right number of spaces
      '/'            #        print '/'
      @2*            #        j *= 2
      '*'*           #        print '*'*j
      '\<NEWLINE>'   #        print "\\\n"
12,{...}/            # for i in range(12):
    ' '35*           #    print ' '*35
    '|'              #    print '|'
    @11<             #    i = i < 11
    '_-'1/=          #    z = "_-"[i] # pick "-" if i < 11, else pick "_"
    8*               #    print z*8
    1$               #    print '|' # (copy from earlier in the stack)
    n                #    print "\n"

1
내 솔루션과 동일한 줄 바꿈 트릭을 사용할 수 있습니다. '\\'n개행을 문자열 (+/- 0 자)로 가져 오는 대신 백 슬래시를 더 이상 이스케이프 할 필요가 없습니다 (-1 자).
Howard

1
두 개 : 4*4+과 동일 )4*하고 '_-'[=]쓸 수있는 '_-'1/=마지막 만드는 +쓸모있다.
Howard

3
설명이 도움이 될 수 있습니다 ...? 물어볼 것이 너무 많습니까?

@professorfish :오고 있습니다!
Claudiu

후행 ';'이 필요하지 않습니다. 이리? 그렇지 않으면 golfscript가 기본적으로 하나를 추가하기 때문에 두 개의 후행 줄 바꿈이 있습니다.
Nabb

21

Haml & Sass

37 + 277 = 314

하멜 :

%link(rel="stylesheet" href="s")
%pre

사스 :

pre:after{$l:"";@for$k from0 to10{@for$i from0 to4+$k{@for$j from0 to40-($k*6+$i*2)/2{$l:$l+' ';}$l:$l+'/';@for$j from0 to$k*6+$i*2{$l:$l+'*';}$l:$l+"\\\a ";}}@for$i from0 to12{@for$j from0 to35{$l:$l+" ";}@if$i<11{$l:$l+"|--------|\a ";}@else{$l:$l+"|________|";}}content:$l;}

* Sass는 제어 지시문, 연결 및 변수 역 참조를 허용합니다. 모두 스타일링 할 때 유용하지만 골프를 치는 동안 자세합니다.


에 생성됩니다 :

HTML :

<link rel="stylesheet" href="s" /><pre></pre>

CSS :

pre:after {
  content: "                                        /\\\a                                        /**\\\a                                       /****\\\a                                      /******\\\a                                      /******\\\a                                     /********\\\a                                    /**********\\\a                                   /************\\\a                                  /**************\\\a                                   /************\\\a                                  /**************\\\a                                 /****************\\\a                                /******************\\\a                               /********************\\\a                              /**********************\\\a                                /******************\\\a                               /********************\\\a                              /**********************\\\a                             /************************\\\a               
             /**************************\\\a                           /****************************\\\a                          /******************************\\\a                             /************************\\\a                            /**************************\\\a                           /****************************\\\a                          /******************************\\\a                         /********************************\\\a                        /**********************************\\\a                       /************************************\\\a                      /**************************************\\\a                          /******************************\\\a                         /********************************\\\a                        /**********************************\\\a                       /************************************\\\a                      /**************************************\\\a                     /******************************
**********\\\a                    /******************************************\\\a                   /********************************************\\\a                  /**********************************************\\\a                       /************************************\\\a                      /**************************************\\\a                     /****************************************\\\a                    /******************************************\\\a                   /********************************************\\\a                  /**********************************************\\\a                 /************************************************\\\a                /**************************************************\\\a               /****************************************************\\\a              /******************************************************\\\a                    /******************************************\\\a                   /**********************************
**********\\\a                  /**********************************************\\\a                 /************************************************\\\a                /**************************************************\\\a               /****************************************************\\\a              /******************************************************\\\a             /********************************************************\\\a            /**********************************************************\\\a           /************************************************************\\\a          /**************************************************************\\\a                 /************************************************\\\a                /**************************************************\\\a               /****************************************************\\\a              /******************************************************\\\a             /*****************************************************
***\\\a            /**********************************************************\\\a           /************************************************************\\\a          /**************************************************************\\\a         /****************************************************************\\\a        /******************************************************************\\\a       /********************************************************************\\\a      /**********************************************************************\\\a              /******************************************************\\\a             /********************************************************\\\a            /**********************************************************\\\a           /************************************************************\\\a          /**************************************************************\\\a         /****************************************************************\\\a        /*********
*********************************************************\\\a       /********************************************************************\\\a      /**********************************************************************\\\a     /************************************************************************\\\a    /**************************************************************************\\\a   /****************************************************************************\\\a  /******************************************************************************\\\a                                    |--------|\a                                    |--------|\a                                    |--------|\a                                    |--------|\a                                    |--------|\a                                    |--------|\a                                    |--------|\a                                    |--------|\a                                    |--------|\a                                    
|--------|\a                                    |--------|\a                                    |________|"; }

결과 페이지


1
CodeGolf에는 수많은 HTML / CSS 솔루션이 없습니다. 좋은 작업.
Mordred

16

CJam , 62 바이트

A,{I4+,{I3*J+_39\-S*'/@2*'**'\N}fJ}fI{35S*'|'-8*'|N++}C*'-/'_*

온라인으로 사용해보십시오!

작동 원리

A,           " Push [ 0  …  9 ].                                                   ";
{            " For each I in that array:                                           ";
  I4+,       " Push [ 0  …  I + 3 ].                                               ";
  {          " For each J in that array:                                           ";
    I3*J+_   " Push K := 3 * I + J twice.                                          ";
    39\-S*   " Push a string consisting of 39 - K spaces.                          ";
    '/       " Push a slash.                                                       ";
    @2*'**   " Push a string consisting of 2 * K asterisks.                        ";
    '\N      " Push a backslash and a linefeed.                                    ";
  }fJ        "                                                                     ";
}fI          "                                                                     ";
{            " Do the following 12 times:                                          ";
  35S*       " Push a string consisting of 35 spaces.                              ";
  '|         " Push a vertical bar.                                                ";
  '-8*'|++   " Push the string '--------|\n'.                                      ";
}C*          "                                                                     ";
'-/'_*       " Replace the hyphen-minus signs of the last string with underscores. ";

2
GolfScript 대신 CJam을 사용하기 시작했습니다.
Claudiu

CJam 코드를 그렇게 간결하게 만드는 것은 무엇입니까? 평범한 기능이 잘 어울리거나 슈퍼 트릭이 있습니까? 아니면 실제로 CJam이 아니라 CJam 프로그래머입니까?
Vi.

2
@Vi .: 그것은 둘의 혼합입니다. 1. CJam은 스택 기반이므로 일반적으로 변수를 사용하지 않고 도망칩니다. 2. 모든 내장 이름은 최대 2 자입니다. 이 때문에 특별한 경우를 제외하고 공백이 필요하지 않습니다. 3. 골프 언어로 된 제출조차도 골프 자체가 아닙니다. 내 GolfScript / CJam 프로그램은 예전보다 훨씬 짧습니다.
Dennis

CJam에 대한 제안은 ASCII 코드 128-256을 사용하여 전체 내장 세트에 사용하는 것입니다. 특별한 편집자가 있습니다
Claudiu

@Claudiu : 글쎄요, 그것은 제작자에게 달려 있습니다. 자신의 골프 언어를 디자인했다면, 비트 기반으로 만들거나 모든 명령을 산술적으로 인코딩한다고 생각합니다.
Dennis

15

GolfScript, 79 자

10,{:^4+,{2*^6*+'*'*.,2/~40+' '*'/'@'\
'}/}/[' '35*]12*'|--------|
'*'||''_'8**

여기 에서 코드를 사용해보십시오 . 이 코드에서 줄 바꿈은 선택 사항이 아닙니다.


24
여러 줄의 GolfScript 솔루션? 나는 내가 그날을 볼 것이라고 생각하지 않았다!
Ingo Bürk

12

파이썬 148 개 129 126 121 문자

R=range
for i in R(10):
 for j in R(i*3,4+i*4):print' '*(39-j)+'/'+'**'*j+'\\'
for c in'-'*11+'_':print' '*35+'|'+c*8+'|'

3 명의 캐릭터를 구해준 Falko 와 5 명의 캐릭터 를 훌륭하게 구해준 flornquake 에게 감사드립니다 !


1
파이썬의 문자 곱셈은이 도전에 너무 완벽합니다 ...
Sean Latham

내 골프 스크립트 솔루션을 볼 때까지 기다리십시오 ... = P
Claudiu

2
'**'*j3자를 저장하는 데 사용 합니다. 이 외에도 내 솔루션은 정확히 동일한 코드로 수렴됩니다. :)
Falko

1
글을 쓰면 마지막 줄을 더 짧게 만들 수 있습니다 for c in'-'*11+'_':print' '*35+'|'+c*8+'|'.
flornquake

@flornquake : 좋아! 매우 영리한
Claudiu

11

세게 때리다, 236 197 193

10 바이트 코드 + 1 바이트 파일 이름 + 182- 바이트 데이터 파일 = 총 193 바이트

zcat y 2>j

설명

y은 줄 바꿈없이 Yggdrasil을 포함하는 파일이며 zopfli 알고리즘 (으로 호출)으로 압축 된 zopfli --i64다음 마지막 8 바이트가 제거 된 파일입니다. zopfli는 gzip과 호환되므로 gzip 용으로 설계된 표준 Bash 유틸리티를 사용하여 파일의 압축을 풀 수 있습니다. 데이터 파일의 크기는 182 바이트 (일반 gzip을 사용하는 경우 229 바이트)입니다. 줄 바꿈없이 원래 Yggdrasil의 크기는 5876 바이트입니다.

마지막 8 바이트를 제거하면라는 파일에 표준 오류를 보내면 오류 메시지가 표시되지 j않습니다. j존재하는 경우 덮어 씁니다.

의 base64 y는 ( base64 -d원본 파일을 얻는 데 사용 ) :

H4sIAAAAAAACA+3SMQoCURDA0N5TWC+IFxK8yD/8Nul9hfDRnamT6J+du83zdUPwOACNNDb0+3Bs
tMPhSscDvusHgM9wIcUNclL+5r/luJXkmlh5rM3r8txkMdVNcEn1Nc2a1AU72XWz3Xd91r5z7eZD
AQKQgAI0PDFf8xJfExpQgQhkpAIdz8ytzK3AQMg6UMIQpLQELU/NQc5B/thBegtqHpOc16jHOX/v
x1mPZg19MfrdrBM=

md5sum은 다음과 같습니다.

4a049a80241160cdde0a3cbca323b7f2

2
코드를 보았을 때 문자 수와 설명을 읽을 때까지 손가락이 "삭제"버튼을 누르는 데 가려 웠습니다. : P
Doorknob

2
zopfli를 사용하여 압축 파일을 작성하여 약 30 바이트를 절약 할 수 있습니다. "zopfli --i100 y"는 zcat이 압축 해제 할 수있는 190 바이트 파일을 생성합니다.
Glenn Randers-Pehrson

1
마지막 10 바이트를 삭제하고 STDERR을 닫으면 몇 가지 더 있습니다.
Dennis

@ GlennRanders-Pehrson 덕분에이 밖을 가리키는 위해, 나는 또한 '화합물의 몰 질량'에 내 대답을 편집 한 codegolf.stackexchange.com/a/35613/16402 37 바이트 저장, zopfli 사용

@Dennis는 8 바이트로 밝혀졌습니다 (Yggdrasil 트렁크의 비트가 더 이상 누락되었습니다).

7

C, 169

i;j;p(a,b){while(b--)putchar(a);}main(){for(;i++<10;)for(j=i*3-4;++j<i*4;p(32,39-j),p(47,1),p(42,j*2),puts("\\"));for(++i;i--;p(32,35),p(124,1),p(i?45:95,8),puts("|"));}

언 골프 (약간 엉킴) :

int i;
int j;
void p(a,b) {
  while (b--) putchar(a);
}
void main() {
  for (;i++<10;) {
    for (j=i*3-4;++j<i*4;) {
      p(32,39-j);
      p(47,1);
      p(42,j*2);
      puts("\\");
    }
  }
  for (++i;i--;) {
    p(32,35);
    p(124,1);
    p(i?45:95,8);
    puts("|");
  }
}

7

루비-100

puts (0..21).map{|i|i>9??\ *35+?|+(i>20??_:?-)*8+?|:(0..i+3).map{|y|?\ *(39-z=y+3*i)+?/+?**z*2+?\\}}

자동 평탄화를 수행하므로 중첩 배열에서도 모든 선을 수집 할 수 있습니다. 루비 1.9 필요

ideone 에서보십시오


나는 약간의 선행 공간이 필요하다고 생각합니다. 또한 Ruby 1.9에서는 작동하지만 1.8에서는 작동하지 않습니다.
Scott Leadley

7

PowerShell 104 101

0..9|%{(3*$_)..(3+$_*4)|%{" "*(39-$_)+"/"+"*"*2*$_+"\"}};0..11|%{" "*35+"|"+("-","_")[$_-eq11]*8+"|"}

6

C # 258 234 바이트

String.PadLeft 메소드를 잘 활용하는 제안 된 편집에 대해 성가신 사용자에게 감사드립니다!

using System;class G{static void Main(){Action<string>p=Console.WriteLine;int i=0,j;for(;i++<10;)for(j=i*3-3;j++<i*4;)p("/".PadLeft(41-j)+"\\".PadLeft(2*j-1,'*'));while(i-->0)p("|--------|".PadLeft(45));p("|________|".PadLeft(45));}}

코드는 매우 간단하지만 골프에 많이 남지 않았습니다.

형식화 된 코드 :

using System;
class G
{
    static void Main()
    {
        Action<string> p = Console.WriteLine;
        int i = 0, j;
        for(; i++ < 10 ;)
            for(j = i*3 - 3; j++ < i*4;)
                p("/".PadLeft(41 - j) + "\\".PadLeft(2*j - 1,'*'));
        while(i-- > 0)
            p("|--------|".PadLeft(45));
        p("|________|".PadLeft(45));
    }
}

\r여기서 사용 은 무의미합니다. 이것은 코드 골프입니다.
nyuszika7 시간

3
@ nyuszika7h 실제로, 그러나 그것은 메모장을 사용하는 사람들이 Yggdrasil의 영광을 더 쉽게 볼 수 있도록 형식화 된 사본에 포함되어 있습니다 (점수에 포함되지 않음)
VisualMelon

아, 알겠습니다 Windows ... 편집 한 부분을 수정하십시오.
nyuszika7h

@ nyuszika7h Syntax Highlighting이 옳지 않다는 점을 지적 해 주셔서 감사합니다
VisualMelon


4

펄, 127

for$i(0..9){for$j($i*3..3+$i*4){print" "x(39-$j),"/","*"x($j*2),"\\\n";}}for$i(0..11){print" "x35,"|",($i>10?"_":"-")x8,"|\n";}

언 골프 드 :

for $i (0..9) {
  for $j ($i*3..3+$i*4) {
    print " "x(39-$j) , "/" , "*"x($j*2) , "\\\n";
  }
}
for $i (0..11) {
  print " "x35 , "|" , ($i>10?"_":"-")x8 , "|\n";
}

$ i를 $ _로 바꾸고 4자를 저장하십시오.
choroba

4

루비 - 139 129 126 123 121

배열 생성 외부에 들어간 "퍼팅"(비트 폰에서 제안).

puts (0..9).map{|i|(i*3...(i+1)*4).map{|j|"/#{'**'*j}\\".rjust(41+j,' ')}}+["%45s"%'|--------|']*11<<'%45s'%'|________|'


Ungolfed ( "퍼팅"비 권양) :


# print fill patterns from the intervals
# [0..3, 3..7, 6..11, 9..15, 12..19, 15..23, 18..27, 21..31, 24..35, 27..39]
# centered on columns 81-82
(0..9).each { |i|
  (i*3...(i+1)*4).each { |j|    # x...y vs x..y-1 saves a char
    puts "/#{'**'*j}\\".rjust(41+j,' ')
  }
}
# print the stump
puts ("%45s\n" % '|--------|') * 11
puts '%45s' % '|________|'

@ bitpwner 나는 이것이 자신의 대답이 가치가 있다고 생각합니다. 해봐
Scott Leadley

4

PHP 223 202 181 160 156

편집 변수로 함수의 별칭을 지정하는 방법을 알아 내고 더 많은 문자를 잘라낼 수있었습니다. 그 str_repeat기능은 정말 장황했다

편집 2 : 제안에 대해 모두 감사합니다!

골프 :

<?$s=str_repeat;for($i=-1;$i++<9;)for($j=$i*3;$j<4+$i*4;)echo$s(' ',39-$j).'/'.$s('**',$j++)."\\
";for($i=12;$i--;)echo$s(' ',35),'|'.$s($i?'-':'_',8)."|
";

읽을 수있는 :

    <?

$s=str_repeat;

for($i=-1;$i++<9;)
{
    for($j=$i*3;$j<4+$i*4;)
    {
        echo$s(' ',39-$j).'/'.$s('**',$j++)."\\
        ";
    }
}

for($i=12;$i--;)
{
    echo$s(' ',35),'|'.$s($i?'-':'_',8)."|
    ";
}

출력 : http://brobin.me/yggdrasil.php


당신은 주위에 괄호를 제거하여 6 개 문자를 저장할 수 있습니다 (39-$j), ($j*2)하고 ($i==11). \n실제 줄 바꾸기 문자 로 대체 하여 -2 (PHP는 리터럴로 허용) (양)를 대체하여 -5 문자 for($i=0;$i<12;$i++)for($i=12;$i-->0;)$i==11함께 $i==0.
sebcap26

당신은 또한 대체 할 수있는 후 $s(($i==0?'_':'-'),8)와 함께 $s($i?'-':'_',8). (==> -5 자)
sebcap26

대체함으로써 -1 문자 $s('*',$j*2)$s('**',$j). 나는 그것이 내가 찾을 수있는 마지막 개선이라고 생각합니다.
sebcap26

-2 변화 ($j*2)에 대해 내부에서 ($j++*2)및 제거 $j++에서 for()인자
avall

@ sebcap26 for($i=12;$i-->0;)for($i=12;$i--;)2 자로 단축 될 수 있습니다 .
avall

3

델파이 429

나중에 개선하려고합니다.
골프

uses strutils,SysUtils,Classes;const a='|----';b='|____';c:array [0..9,0..1]of int32=((0,3),(3,7),(6,11),(9,15),(12,19),(15,23),(18,27),(21,31),(24,35),(27,39));var t:TStrings;i,j:integer;begin t:=tstringlist.Create;for I:=0to 9do for J:=c[i,0]to c[i,1]do t.Add('/'+StringOfChar('*',j));for I:=0to 10do t.Add(a);t.Add(b);for I:=0to t.Count-1do t[i]:=t[i].PadLeft(40)+ReverseString(t[i]).Replace('/','\');write(T.TEXT);readln;end.

언 골프

uses
  strutils,SysUtils,Classes;
const
  a='|----';
  b='|____';
  c:array [0..9,0..1]of int32=((0,3),(3,7),(6,11),(9,15),(12,19),(15,23),(18,27),(21,31),(24,35),(27,39));
var
  t:TStrings;
  i,j:integer;
begin
  t:=tstringlist.Create;
  for I:=0to 9do
    for J:=c[i,0]to c[i,1]do
      t.Add('/'+StringOfChar('*',j));
  for I:=0to 10do
    t.Add(a);
  t.Add(b);
  for I:=0to t.Count-1do
    t[i]:=t[i].PadLeft(40)+ReverseString(t[i]).Replace('/','\');
  write(T.TEXT);
  readln;
end.

3

자바 스크립트, 288 281

Chrome은 중복을 숨기고 console.log대신 IE를 사용하십시오.

function t(w){s="";for(i=0;i++<39-w;)s+=" ";s+="/";for(i=0;i++<w*2;)s+="*";return s+"\\"}function r(l){s="";for(i=0;i++<36;)s+=" ";s+="|";for(i=0;i++<8;)s+=l;return s+"|"}w=0;c=console;for(h=0;h++<10;){for(j=0;j++<3+h;)c.log(t(w++));w-=h}for(j=0;j++<11;)c.log(r('-'));c.log(r('_'))

언 골프 드 :

function t(w)
{
    s="";
    for(i=0;i++<39-w;)
        s+=" ";
    s+="/";
    for(i=0;i++<w*2;)
        s+="*";
    return s+"\\"
}
function r(l)
{
    s="";
    for(i=0;i++<36;)
        s+=" ";
    s+="|";
    for(i=0;i++<8;)
        s+=l;
    return s+"|"
}

w=0;
c=console;
for(h=0;h++<10;)
{
    for(j=0;j++<3+h;)
        c.log(t(w++));
    w-=h;
}
for(j=0;j++<11;)
    c.log(r('-'));
c.log(r('_'))

for(i=0;i++<39-w;)대신에 for(i=0;i<39-w;++i)등을 사용하십시오 . 또한, p=console.log대신 c=consolep대신 c.log(I은 Node.js를 후자를 시험하지만, 파이어 폭스에서 작동하지 않습니다). 12 바이트가 절약됩니다.
nyuszika7h

c=console.logChrome에서도 작동하지 않았으므로 사용하지 않았습니다. for 루프 트릭은 7 바이트를 절약합니다.
Sean Latham

나는 보통 MSIE를 사용 하도록 격려하는 것에 대해 매우 조심한다 .

이것은 "IE 대신에 사용"이라는 문구를 처음 본 것입니다. O_o 그러나 웹 페이지 대신 콘솔에서이 코드를 실행하면 Chrome의 동작을 억제 할 수 있습니다.
Doorknob

페이지와 콘솔에서 실행하면 Firefox와 Chrome에서 동일한 결과가 나타납니다.
Sean Latham

3

자바 스크립트 (CONSOLE.LOG) 168 166

(가독성만을위한 공백)

for(i=c=0;i<11;i++)
  for(j=0;j<4+i&!c;j++)
    l=i*13+j,
    a=Array(n=i-10?3*i+j+1:5).join("*-_"[k=(l>129)+(c=l==141)]),
    console.log(Array(41-n).join(" ")+'/||'[k]+a+a+'\\||'[k])

3

C (219)

골프 팁에 대한 모든 사람에게 감사합니다. 219까지 떨어 뜨 렸습니다. 더 낮아질 것이라고 생각하지 마십시오.

w,W,s,S,i,r;main(){char T[78];memset(T,42,78);for(r=4,s=39;r<14;++r,s-=3,w+=6)for(i=0,S=s,W=w;i<r;++i,W+=2,--S)printf("%*s/%.*s\\\n",S,"",W,T);for(i=0;i<11;i++)printf("%35s|--------|\n","");printf("%35s|________|","");}

필수 사항은 다음과 같습니다.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

C89를 기꺼이 사용하려는 경우 모든 포함도 생략 할 수 있습니다. 이 코드에는 호출에 대한 암시 적 선언이 실패하는 경우가 없습니다.
Joshua

@Nax; 그것은 나를 263으로 이끌었습니다. 감사.
DreamWarrior

@Joshua-64 비트 시스템과 memset은 문제가 될 수 있지만 그렇지 않으면 아닐 수도 있습니다. 어느 쪽이든, 대부분의 사람들은 포함을 제거하므로 나도 그렇게했습니다.
DreamWarrior

실제로 262 자이므로 후행 줄 바꿈이 필요하지 않습니다.
nyuszika7 시간

당신이 사용할 수있는 32대신 ' '하고 42대신 '*':
쿠엔틴

3

하스켈 153 148

간단하고 트릭이없고 평범한 골프 :

(a:b:c)%n=(39-n)&' '++a:(2*n)&b++c
n#m=[n..m]++(n+3)#(m+4)
(&)=replicate
main=putStr$unlines$map("/*\\"%)(take 85$0#3)++map("|-|"%)(11&4)++["|_|"%4]

%작업자가 한 줄로 무하는 인 첫 번째 인자 String길이 3이 라인 경계와 충전자를 함유 (현재 정확히 3 가정 Char들, 5 바이트를 저장하는) 제, Int채움 문자 지정 절반 번호. 패턴 매칭, 죄수 보내고 및 추기가 사이의 "접착제"돌보는하여 바이트를 저장하기 위하여 조합하여 사용 Char하고 String. 이 두 번째 버전에서는 #무한으로 만들었고 take 85다시 유한하게 만들기 위해 바이트를 도입했습니다 (불행히도 바이트가 저장되지 않았습니다).

#운영자는의 순서 생성 n에 인수 %트리에 요구를 : [0..3], [3..7], ...연결된.

&의 접두사 replicate입니다. 세 번 발생합니다.

트리는 마지막 줄에 합쳐지고 개행은에 의해 추가됩니다 unlines.



2

루아 -164

a=' 'for i=0,9 do for j=i*3,3+i*4 do print(a:rep(39-j)..'/'..(('*'):rep(j*2))..'\\')end end for i=0,11 do print(a:rep(35)..'|'..((i>10 and'_'or'-'):rep(8))..'|')end

2

매스 매 티카 (191) 178

가장 좋은 해결책은 아닙니다.

n=Nest;
t=Table;
""<>
    t[
        {n[#<>" "&,"",39-i],"/",n[#<>"*"&,"",2i],"\\\n"}
    ,
        {i,Flatten@t[Range[j+4]-1+3j,{j,0,9}]}
    ]
<>
    t[
        n[#<>" "&,"",35]<>If[i==12,"|________|\n","|--------|\n"]
    ,
        {i,12}
    ]

개행을 계산하지 않습니다. Mathematica는 공백의 너비가 "*"및 "/"와 같지 않으므로 출력을 기울입니다. 그러나 결과는 정확합니다.


(내 첫 골프 야)
freddieknets

2

자바-286

내 첫 골프.

골프 :

class M{public static void main(String[]args){int i=0,a,f=0;String s="";for(;i++<11;){for(a=i*3-4;++a<i*4;){if(i>10){a=4;if(++f>12)break;}s+=s.format("%"+(40-a)+"s"+(a>0?"%0"+a+"d":"")+"%3$s",f>0?"|":"/",0,f>0?"|":"\\").replace("0",f<1?"**":f>11?"__":"--")+"\n";}}System.out.println(s);}}

언 골프 드 :

class M {
    public static void main(String[] args) {
        int i=0,a,f=0;
        String s = "";
        for(;i++<11;){
            for(a=i*3-4;++a<i*4;a++){
                if(i>10){
                    a=4;
                    if(++f>12)break;
                }
                s+=s.format("%"+(40-a)+"s"+(a>0?"%0"+a+"d":"")+"%3$s",f>0?"|":"/", 0,f>0?"|":"\\").replace("0", f<1?"**":f>11?"__":"--")+"\n";
            }
        }
        System.out.println(s);
    }
}

여기서 테스트


2

파이썬 2, 117

j=0
while j<40:j-=j/4;exec(j/3+4)*r"print' '*(39-j)+'/'+'**'*j+'\\';j+=1;"
for c in'-'*11+'_':print' '*35+'|'+c*8+'|'

내가 시도한 다른 버전은 다음과 같습니다.

# 118
for i in range(10):j=i*3;exec(i+4)*r"print' '*(39-j)+'/'+'**'*j+'\\';j+=1;"
for c in'-'*11+'_':print' '*35+'|'+c*8+'|'

# 118
i=j=4
while j:j=52-3*i;exec"j-=1;print' '*j+'/'+'**'*(39-j)+'\\\\';"*i;i+=1
for c in'-'*11+'_':print' '*35+'|'+c*8+'|'

# 118
j=0
for b in'\\'*10:j-=j/4;exec(j/3+4)*"print' '*(39-j)+'/'+'**'*j+b;j+=1;"
for c in'-'*11+'_':print' '*35+'|'+c*8+'|'

# 119
s=40
while s:s+=10-s/4;exec(52-s)/3*r"s-=1;print' '*s+'/'+'**'*(39-s)+'\\';"
for c in'-'*11+'_':print' '*35+'|'+c*8+'|'

2

Pyth, 101 100 99 90 81 바이트

J0Km/*+d7d2S9V85FTKI!-TN=hZ=+JZ))+*d-39-NJ++\/*"**"-NJ\\)Va*]\-11\_+++*d35\|*N8\|

온라인으로 사용해보십시오!

파이썬 3 번역 :
Z=0
d=" "
J=0
K=list(map(lambda d:((d+7)*d)//2,range(1,10)))
for N in range(85):
    for T in K:
        if not T-N:
            Z+=1
            J+=Z
    print(d*(39-(N-J))+"/"+"**"*(N-J)+"\\")
for N in ["-"]*11+["_"]:
    print(d*35+"|"+N*8+"|")

a파이썬에서 정의한 함수 +가리스트 와 같지 않습니까?
Esolanging Fruit

@EsolangingFruit 그것은 가깝지만 정확하게 <list>+<str>는 아닙니다 : 유효한 작업은 아니지만 쉽게 사용할 수 있습니다 ["-"]*11+["_"]. Pyth가 실제로 수행하는 작업을보다 정확하게 번역하기 위해 자체 기능을 정의하기로 결정했습니다.
hakr14

알겠습니다.
Esolanging 과일

2

파워 쉘, 88 바이트

0..9|%{(3*$_)..(3+$_*4)|%{' '*(39-$_)+"/$('**'*$_)\"}}
,'-'*10+'_'|%{' '*35+"|$($_*8)|"}

1

그루비 118

10.times{(it*3).upto 3+it*4,{println' '*(39-it)+'/'+'*'*it*2+'\\'}};12.times{println' '*35+'|'+(it>10?'_':'-')*8+'|'}

1
왜 짧은 Groovy 솔루션을보고 놀라지 않습니까? Groovy에 대한 인상은 타이핑을 싫어하는 Java 프로그래머가 수행 한 것입니다.
Almo

1

C, 194

이 코드는 매우 엉망이며 더 많은 골프를 즐길 수 있습니다. 별표의 문자열 리터럴을 사용하여, 폭 지정자 사용 : 아직도, 내가 전에 해본 적이 몇 가지 시도 할 수있는 기회였다 *문자열와 함께 printf.

i,j=5,k=5,n;
main(){
  char d[]={[0 ...77]=42,0};
  for(;i<85;i++)k--,j+=!k,k+=(j-1)*!k,n=39-i+(j-5)*(j-4)/2,printf("%*s/%s\\\n",n,"",d+n*2);
  for(;i<97;i++)printf("%*s|\n",44,i-96?"|--------":"|________");
}

1

라켓 223 220 211 204 198

골프 :

(for-each display(flatten(let([m make-list])`(,(for*/list([i 10][j(range(* i 3)(* 4(+ 1 i)))])`(,(m(- 39 j)" ")"/",(m j"**")"\\\n")),(for/list([c`(,@(m 11"-")"_")])`(,(m 35" ")"|",(m 8 c)"|\n"))))))

언 골프 드 :

(for-each display
     (flatten
      (let([m make-list])
        `(,(for*/list([i 10][j(range(* i 3)(* 4(+ 1 i)))])
             `(,(m(- 39 j)" ")"/",(m j"**")"\\\n"))
          ,(for/list([c`(,@(m 11"-")"_")])
             `(,(m 35" ")"|",(m 8 c)"|\n"))))))

1

조립 (MIPS, SPIM) , 768 671 659 655 654 바이트

.text
.globl main
main:
li $8 32
li $9 47
li $t2 42
li $t3 92
li $t4 10
li $t5 42
addi $sp -4
move $4 $sp
la $s6 q
la $s5 w
li $t8 0
li $s0 10
li $t9 0
li $s3 40
li $s2 39
q:
sub $s3 $s3 $t8
add $s2 $s2 $t8
addi $t7 $t8 3
addi $t8 1
blt $s0 $t8 e
r:
sw $0 ($4)
blt $t9 $s2 t
beq $t9 $s2 y
beq $t9 $s3 u
beqz $t7 i
sb $t2 ($4)
p:
li $2 4
syscall
addi $t9 1
ble $t9 $s3 r
move $t9 $0
j $s5
o:
addi $t7 -1
bgez $t7 r
jr $s6
w:
addi $s2 -1
addi $s3 1
j o
t:
sb $8 ($4)
j p
y:
sb $9 ($4)
j p
u:
sb $t4 1($4)
sb $t3 ($4)
j p
i:
sb $t5 ($4)
j p
e:
li $t1 124
li $t3 124
li $t2 45
li $t5 95
li $t7 11
la $s6 a
la $s5 o
li $s2 35
li $s3 44
j r
a:
li $2 10
syscall

온라인으로 사용해보십시오!

편집 : 레지스터의 각 문자를 하드 코딩하고 단순히 스택에 쓰는 다음 ~ 100 바이트를 절약 한 다음 MIPS에 유형이 없으므로 ASCII 문자열에 대한 암시 적 단어가 허용된다는 사실을 남용합니다.
편집 2 : 중복 스택 할당을 제거했습니다. ( addi $sp -4) 아차!
편집 3 : 다시 쓰면서 실수로 나무 그루터기 1 문자를 너무 짧게 만들었습니다. (35 대신 36). 결정된. t8을 0으로 설정하고 동일하지 않고보다 작게 분기하여
4 :$ t0 및 $ t1 대신 $ 8 및 $ 9를 사용하여 4 바이트를 . 그것들은 같은 것을 의미하지만 $ t0는 읽기가 더 쉽습니다. 불행히도, 멋지게 작성 될 때 다른 모든 t 레지스터의 길이는 동일하므로 ($ t2 == $ 10이지만 둘 다 3 자임) 나머지는 워시입니다. 나는 이론적으로 나머지 'a'레지스터 (5-7. print syscall은 4를 사용)를 사용할 수는 있지만 syscall을 사용할 때 동작이 정의되지 않았습니다.
1 바이트를 편집하십시오 . 또한 추가 작업의 순서를 변경해야했기 때문에 불행히도 실행 시간이 무려 3 개의 opcode를 더 오래 걸렸습니다.

MIPS에서 최고는 아니지만 메타 토론 에서이 양심을 지우고 나면 제출합니다. MIPS는 이것을 위해 설계되지 않았으며 (출력 없음, 루프 없음), 그럼에도 불구하고 이것을하는 것은 꽤 재미 있습니다.

불행히도,이 새로운 솔루션에 대한 주석이 달린 버전을 만들지 않았지만 여기 에서 전체 문서를 통해 이전 버전을 볼 수 있습니다

이길 수 있다면 크레딧을 받고이 답변을 개선하십시오. 여기저기서 약간의 최적화가 누락되었을 수 있습니다.


이 솔루션에는 .data가 필요하지 않기 때문에 이진 (컴파일 된)으로 변환하고 많은 바이트를 저장할 수 있습니다. 그러나 SPIM은이를 지원하지 않으므로 c'est la vie가 있습니다.
Andrew Baumher

또한 속기 addi $sp -4addi $sp $sp -4SPIM 또는 MIPS의 일반적인 약자인지 확실하지 않으므로 다른 사람이 있으면 알려주십시오.
앤드류 Baumher

0

코브라 - 166 228 260

class P
    def main
        for x in 10,for n in 4+x,print' '.repeat(39-x*3-n)+'/['**'.repeat(x*3+n)]\\'
        w=' '.repeat(35)
        print'[w]|--------|\n'.repeat(11)+w+'|________|'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.