伝説のユグドラシルを出力


39

あなたの仕事は、伝説的な生命の樹であるYggdrasilの表現を出力することです。

出力がまさにそれであるプログラムを書かなければなりません:

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

末尾の空白はありません。最後の改行は省​​略できます。

チェックを簡単にするために、予想される出力のmd5合計を以下に示します。

  • 374899e56bc854d04639c43120642e37 -最後に改行はありません。
  • 03afb81d960b8e130fe2f9e0906f0482 -最後の改行

標準の抜け穴が適用されます。これはコードゴルフなので、バイト単位の最小エントリが勝ちです!


10
関連:codegolf.stackexchange.com/q/15860/15599。ナックス、マーケティングで働くべきだ。すべての世帯がこのクリスマスにユグドラシルを欲しがるでしょう。あなたもグラハムの数の質問に答えましたね。あなたは先のとがったものが好きでなければなりません。「ロケット」と「アイスクリームコーン」に新しい名前を付けましょう。
レベルリバーセント


4
@Nax:世界の木には実があり、被子植物には実がなく、それは明らかにいくつかの説明の閉じ込め者であるため、残念ながら間違った木を撮影したように見えます:P
naught101

@Naxうーん。あなたは正しいです。ぺダント(私)は彼自身のペタードでホイストします。md5sumsが変更されました。
スコットリードリー14

1
エラー、順序のポイント、Yggdrasilは間違いなくeddasの灰の木であり、モミではありません。ちょっとこのような
アレックスP 14

回答:


22

Golfscript、84 77 76 75 72文字

ハワードとは異なるアプローチ。文字数をクリックして試してください。

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

3文字を保存してくれたハワードに感謝します!

説明

これは多かれ少なかれ私のPythonソリューションの簡単な移植です。表現力豊かないくつかの自由を取ります(スタック位置を追跡する代わりに名前付き変数を使用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文字)。
ハワード14

1
二つは、より:4*4+と同じである)4*'_-'[=]記述することができ'_-'1/=、最後になりた+時代遅れ。
ハワード14

3
説明が役立つかもしれません...?これは多すぎて聞けませんか?

@professorfish:すぐに来ます!
クラウディ14

末尾の ';'は必要ありませんか ここに?それ以外の場合、golfscriptはデフォルトで1つ追加するため、2つの末尾の改行があります。
ナブ14

21

HamlSass

37 + 277 = 314

Haml:

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

Sass:

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ソリューションがありません。良くやった。
モッドレッド14

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 14

CJamコードが非常にコンパクトなのはなぜですか?通常の機能同士がうまくマッチしているのでしょうか、それとも超トリックがありますか?または、実際にはCJamではなく、CJamプログラマーですか?
Vi。

2
@Vi .:両方の組み合わせです。1. CJamはスタックベースであるため、通常は変数を使用せずに逃げます。2.すべての組み込みの名前は、最大2文字です。このため、特別な場合を除き、空白は必要ありません。3.ゴルフ言語での提出物でさえ、自分でゴルフをするわけではありません。私のGolfScript / CJamプログラムは、以前よりもずっと短くなりました。
デニス14

CJamの提案は、組み込みのセット全体にASCIIコード128-256を使用することです。特別な編集者がいる
Claudiu 14

@Claudiu:まあ、それは作成者次第です。自分でゴルフ言語を設計した場合、ビットベースにするか、すべての命令を算術的にエンコードすると思います。
デニス14

15

GolfScript、79文字

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

ここでコードを試してください。このコードでは改行はオプションではないことに注意してください


24
複数行のGolfScriptソリューションですか?私はその日を見ないと思いました!
インゴバーク14

12

Python、 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
Pythonの文字乗算は...少しもこの挑戦のために完全である
ショーン・レイサム

Golfscriptソリューションが表示されるまでお待ちください... = P
Claudiu 14

2
'**'*j3文字を保存するために使用します。これとは別に、私のソリューションはまったく同じコードに収束します。:)
ファルコ14

1
を書くことで、最後の行を短くすることができfor c in'-'*11+'_':print' '*35+'|'+c*8+'|'ます。
flornquake 14

@flornquake:いいね!非常に賢い
クラウディウ

11

バッシュ、 236 197 193

10バイトのコード+ 1バイトのファイル名+ 182バイトのデータファイル=合計193バイト

zcat y 2>j

説明

yYggdrasilを含むファイルで、末尾に改行はありません。zopfliアルゴリズムで圧縮されてます(zopfli --i64)、最後の8バイトが削除されます。zopfliはgzipと互換性があるため、gzip用に設計された標準のBashユーティリティでファイルを解凍できます。データファイルのサイズは182バイト(通常のgzipを使用する場合は229バイト)です。元のYggdrasilのサイズは、末尾の改行なしで5876バイトです。

最後の8バイトを削除すると、エラーメッセージが表示されます。エラーメッセージは、標準エラーをというファイルに送信することで抑制されますjj存在する場合、上書きされます。

base64は次のとおりyです(base64 -d元のファイルを取得するために使用):

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

そして、md5sumは次のとおりです。

4a049a80241160cdde0a3cbca323b7f2

2
文字数と説明を読むまで、コードを見たときに指で「削除」ボタンを押すとかゆみがありました。:P
ドアノブ

2
zopfliを使用して圧縮ファイルを作成すると、約30バイトを節約できます。「zopfli --i100 y」は、zcatが解凍できる190バイトのファイルを生成します。
グレンランダース-パーソン14

1
最後の10バイトを削除してSTDERRを閉じると、さらにいくつかのエラーが発生します。
デニス14

@ GlennRanders-Pehrsonこのアウトを指し示すためのおかげで、私はまた、「化合物のモル質量」に私の答えを編集したcodegolf.stackexchange.com/a/35613/16402 37バイトの保存、使用zopfliへ

それは感謝、8バイト(任意のよりユグドラシルのトランクのビットが欠落していることになる)であることが判明@Dennis

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+?\\}}

自動平坦化を行うため、ネストされた配列であってもすべての行を収集できます。Ruby 1.9が必要

ideone試しください


先行スペースが必要だと思います。また、Ruby 1.9で動作しますが、1.8では動作しません。
スコットリードリー14

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ここでの使用は無意味です。これはコードゴルフです。
nyuszika7h 14

3
@ nyuszika7hは確かですが、メモ帳を使用している人々がYggdrasilの栄光をより簡単に見ることができるように(スコアには含まれていません)フォーマットされたコピーに含まれています
VisualMelon 14

ああなるほど。Windows ...編集を修正してください。
nyuszika7h 14

@ nyuszika7h構文強調表示が正しくなかったことを指摘してくれてありがとう
VisualMelon 14

6

J、98 88 84 75

(85 11 1#3 4$' /*\ |-| |_|')#"1~(39&-,1,+:,1:)"0(12$4),~85(-4&+#-:*>:)&i.10

4

Perl、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文字を保存します。
チョロバ14

4

ルビー- 139 129 126 123 121

配列作成以外の「プット」を巻き上げました(bitpwnerからの提案)。

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


Ungolfed( "puts" unhoisted):


# 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これはそれ自身の答えに値すると思います。頑張れ。
スコットリードリー14

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)。-2 \n実際の改行文字に置き換えることにより(PHPは文字でそれを許可します)。(両方)を置き換えることにより-5文字for($i=0;$i<12;$i++)for($i=12;$i-->0;)$i==11して$i==0
sebcap26 14

その後、あなたも置き換えることができ$s(($i==0?'_':'-'),8)$s($i?'-':'_',8)。(==> -5文字)
sebcap26 14

交換することにより-1文字$s('*',$j*2)$s('**',$j)。これが最後の改善点だと思います。
sebcap26 14

-2変更($j*2)するために、内側に($j++*2)及び除去$j++からfor()引数
avall

@ sebcap26 for($i=12;$i-->0;)は、次のfor($i=12;$i--;)2文字に短縮できます。
avall

3

Delphi 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

Javascript、288 281

Chromeは重複したconsole.logsを非表示にし、代わりに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(後者はNode.jsでしかテストしていませんが、Firefoxでは動作しません)。これにより、12バイト節約されます。
nyuszika7h 14

c=console.logChromeでも動作しなかったため、使用しませんでした。しかしforループのトリックは7バイトを節約します。
ショーンレイサム14

私は通常何のかなり警戒してる奨励 ...私はMSIEを使用する

「IEを代わりに使用する」というフレーズを見たのは、これが初めての可能性があります。O_oただし、Webページからではなくコンソールでこのコードを実行するだけで、Chromeの動作を抑制することができます。
ドアノブ

ページとコンソールで実行すると、FirefoxとChromeの両方で同じ結果が得られます。
ショーンレイサム14

3

JavaScript(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を使用する場合は、すべてのインクルードも省略できます。このコードでは、呼び出しの暗黙的な宣言が失敗することはありません。
ジョシュア14

@Nax; 263に到達しました-そして、私はインクルードを引き出しました。ありがとう。
ドリームウォーリアー14

@Joshua-64ビットシステムとmemsetには問題があるかもしれませんが、そうでない場合はそうではないかもしれません。いずれにせよ、ほとんどの人がインクルードを削除するので、私もそうしました。
ドリームウォーリアー14

実際には262文字です。末尾の改行は必要ありません。
nyuszika7h 14

:)の32代わりに' '42代わりに 使用できます'*'
クエンティン14

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、S 5つのバイトを保存する)、第二、Int指定充填文字の半分の数。パターンマッチング、cons-ing、およびappendを組み合わせて使用​​して、Charとの間の「接着剤」に注意してバイトを節約しますString。この2番目のバージョンでは、#無限を作成し、take 85を作成し、再び有限にするためにをました(残念ながら、バイトは保存されません)。

#オペレータは、シーケンスを作成nするための引数%:木のために必要な[0..3], [3..7], ...連結を。

& は単なる中置記法です replicate、3回出現します。

ツリーは最後の行にまとめられ、改行はによって追加され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

Mathematica 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

Java-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

Python 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\|

オンラインでお試しください!

Python 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+"|")

aPythonで定義されている関数は+on list と同等ではありませんか?
エソランジングフルーツ

@EsolangingFruit近いですが、正確で<list>+<str>はありません:有効な操作ではありませんが、を簡単に使用できます["-"]*11+["_"]。Pythが実際に行っていることをより正確に変換するために、私は独自の関数を定義することにしました。
hakr14

さて、それは理にかなっています。
エソランジングフルーツ

2

Powershell、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プログラマーによって行われたということでした。
アルモ14

1

C、194

このコードは熱狂的で、間違いなくもっとゴルフをすることができます。それでも、アスタリスクの文字列にリテラルを使用*し、文字列inで幅指定子を使用して、これまでに行ったことのないいくつかのことを試してみる機会でした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 211204 211204198

ゴルフ:

(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)。一定。 -1バイト。t8を0に設定し、等しいのではなく、より小さいよりも小さい値で分岐します。また、追加操作の順序を変更する必要がありましたが、残念ながら実行時間が3つのオペコードより長くかかりました。
編集4: $ t0と$ t1の代わりに$ 8と$ 9を使用して-4バイト。それらは同じことを意味しますが、$ t0は読みやすいです。残念ながら、他のすべてのtレジスタは適切に書き込まれた場合は同じ長さであるため($ t2 == $ 10ですが、両方とも3文字です)、残りはウォッシュです。(理論上)残りの「a」レジスタ(5-7を使用できます。printsyscallは4を使用します)ですが、syscallを使用する場合の動作は定義されていません。

MIPSで最高ではありませんが、メタディスカッションでこれについての良心を明確にした後、提出します。MIPSはこのために設計されていません(出力なし、forループなし)が、おそらくそれにもかかわらずこれを行うのはかなり楽しいです。

残念ながら、この新しいソリューションのコメント付きバージョンは作成していませんが、完全なドキュメントが記載さた古いバージョンを表示できます

あなたがそれを打ち負かすことができれば、信用してこの回答を改善してください-私はおそらくいくつかの最適化をあちこち見逃しています。


このソリューションは.dataを必要としないため、バイナリ(コンパイル済み)に変換して大量のバイトを保存できます。ただし、SPIMはこれをサポートしていないため、注意してください。
アンドリュー・ボーマー

また、略記addi $sp -4が実際にaddi $sp $sp -4SPIMかMIPSのどちらであるかは定かではありません。
アンドリューバウムハー

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.