पौराणिक Yggdrasil आउटपुट


39

आपका काम जीवन के महान पेड़, यग्द्रस्सिल का प्रतिनिधित्व करना है

आपको एक प्रोग्राम लिखना होगा जिसका आउटपुट बिल्कुल वही हो:

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

कोई अनुगामी व्हॉट्सएप नहीं है। अंतिम नई पंक्ति को छोड़ा जा सकता है।

जाँच को आसान बनाने के लिए, यहाँ अपेक्षित आउटपुट के md5 योग हैं:

  • 374899e56bc854d04639c43120642e37 - अंत में कोई नई रेखा नहीं।
  • 03afb81d960b8e130fe2f9e0906f0482 - अंत में न्यूलाइन

मानक खामियां लागू होती हैं। यह कोड-गोल्फ है, इसलिए बाइट्स में सबसे छोटी प्रविष्टि जीत जाती है!


10
संबंधित: codegolf.stackexchange.com/q/15860/15599 । नक्स, आपको मार्केटिंग में काम करना चाहिए। हर घर में इस क्रिसमस एक Yggdrasil चाहता है। मैं देख रहा हूं कि आपने ग्राहम के नंबर के सवाल का भी जवाब दिया। आपको नुकीली चीजें पसंद होनी चाहिए। चलो "रॉकेट" और "आइसक्रीम कोन" के लिए कुछ नए नाम हैं।
लेवल रिवर सेंट

भी संबंधित हैं: codegolf.stackexchange.com/q/4244/194
पीटर टेलर

4
@ नक्स: चूंकि विश्व वृक्ष में फल होते हैं, और एंजियोस्पर्म नहीं होते हैं, और यह स्पष्ट रूप से कुछ विवरणों का एक वाहक है, दुर्भाग्य से ऐसा लगता है कि आपने गलत पेड़ की तस्वीर ली: P
n

@ नक्स हम्म। तुम सही हो। पेडेंट (मुझे) अपने ही पेटार्ड पर लहरा रहा है। Md5sums बदल गया है।
स्कॉट लेडले

1
इर्र, ऑर्डर ऑफ़ पॉइंट, यग्द्रासिल निश्चित रूप से एड्ड्स में एक राख का पेड़ है, न कि देवदार। इस तरह किंदा
एलेक्स पी

जवाबों:


22

गोल्फस्क्रिप्ट, 84 77 76 75 72 वर्ण

हावर्ड से अलग दृष्टिकोण । इसे आज़माने के लिए कैरेक्टर काउंट पर क्लिक करें।

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

3 पात्रों को बचाने के लिए हावर्ड का धन्यवाद!

स्पष्टीकरण :

यह कमोबेश मेरे पाइथन समाधान का सीधा पोर्ट है । कुछ अभिव्यंजक स्वतंत्रताएं लेना (स्टैक पोजीशन का ट्रैक रखने के बजाय नामित चर का उपयोग करना, और 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 वर्ण) से बचने की आवश्यकता नहीं है।
हावर्ड

1
दो और: के 4*4+रूप में ही है )4*और '_-'[=]लिखा जा सकता है '_-'1/=जो पिछले +अप्रचलित बनाता है ।
हावर्ड

3
एक स्पष्टीकरण उपयोगी हो सकता है ...? क्या यह पूछना बहुत अधिक है?

@professorfish: सही आ रहा है!
Claudiu

क्या आपको 'अनुगामी' की आवश्यकता नहीं है? ' यहाँ? अन्यथा डिफ़ॉल्ट रूप से एक जोड़ता है के बाद से दो अनुगामी newlines होगा।
नब

21

हमल और सास

37 + 277 = 314

haml:

%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;}

* सैस नियंत्रण निर्देशों, संघनन, और परिवर्तनशील अनुमापन की अनुमति देता है। स्टाइल करते समय सभी उपयोगी होते हैं, लेकिन गोल्फ खेलते समय क्रिया करते हैं।


में उत्पन्न हो जाता है:

HTML:

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

सीएसएस:

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

सीजेएम , 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 प्रोग्रामर तो?
वि।

2
@ वी .: यह दोनों का मिश्रण है। 1. सीजेएम स्टैक आधारित है, इसलिए आप आमतौर पर किसी भी चर का उपयोग किए बिना दूर हो जाते हैं। 2. सभी बिल्ट-इन 'नाम अधिकतम दो वर्णों पर हैं। इस वजह से, आपको कुछ विशेष मामलों को छोड़कर व्हाट्सएप की आवश्यकता नहीं है। 3. यहां तक ​​कि गोल्फिंग भाषाओं में प्रस्तुतियाँ खुद को गोल्फ नहीं देती हैं। मेरे GolfScript / CJam प्रोग्राम अब बहुत कम हो गए हैं जो वे हुआ करते थे।
डेनिस

CJam के लिए सुझाव ASCII कोड 128-256 बिल्ट-इन के पूरे nother सेट के लिए उपयोग करना होगा। कुछ विशेष संपादक है
Claudiu

@ कलैदु: ठीक है, कि इसके निर्माता के ऊपर है। अगर मैंने अपनी खुद की गोल्फ भाषा तैयार की है, तो मुझे लगता है कि मैं इसे थोड़ा-सा आधार बनाऊंगा या सभी निर्देशों को अंकगणित में लिखूंगा।
डेनिस

15

GolfScript, 79 वर्ण

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

यहाँ कोड का प्रयास करें । ध्यान दें कि इस कोड में लाइन ब्रेक वैकल्पिक नहीं हैं


24
एक मल्टी-लाइन गोल्फस्क्रिप्ट समाधान? मुझे नहीं लगता था कि मैं दिन देखूंगा!
इंगो बुर्क

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 अक्षरों को बचाने के लिए और करने के लिए flornquake शानदार ढंग से एक और 5 को बचाने के लिए!


1
इस चुनौती के लिए पायथन का चरित्र गुणन थोड़ा बहुत सही है ...
सीन लैथम

'रुको जब तक तुम मेरी golfscript समाधान ... = P देख
Claudiu

2
'**'*j3 वर्णों को बचाने के लिए उपयोग करें । इसके अलावा मेरा समाधान ठीक उसी कोड में परिवर्तित होता है। :)
फल्को

1
आप लिखकर अंतिम पंक्ति को कम कर सकते हैं for c in'-'*11+'_':print' '*35+'|'+c*8+'|'
21'14

@flornquake: अच्छा! बहुत चालाक
Claudiu

11

दे घुमा के, २३६ १ ९ 19 193

कोड के 10 बाइट्स + 1-बाइट फ़ाइल नाम + 182-बाइट डेटा फ़ाइल = 193 बाइट्स कुल

zcat y 2>j

व्याख्या

yएक फाइल है जिसमें यग्द्रसाइल है , एक अनुगामी नई रेखा के बिना, जोपफली एल्गोरिथ्म के साथ संपीड़ित (जैसा कि zopfli --i64) और फिर पिछले 8 बाइट्स के साथ हटा दिया गया। zopfli gzip के साथ संगत है, इसलिए मैं gzip के लिए डिज़ाइन किए गए मानक बैश उपयोगिताओं के साथ फाइल को डिकम्प्रेस कर सकता हूं। डेटा फ़ाइल का आकार 182 बाइट्स (सामान्य gzip का उपयोग होने पर 229 बाइट्स) है। मूल Yggdrasil का आकार, नई लाइन के बिना, 5876 बाइट्स है।

अंतिम 8 बाइट्स को हटाने से त्रुटि संदेश होता है, जिसे मानक त्रुटि नामक फ़ाइल में भेजकर दबा दिया जाता है j। यदि jमौजूद है, तो इसे अधिलेखित कर दिया जाएगा।

का आधार 64 yहै ( base64 -dमूल फ़ाइल प्राप्त करने के लिए उपयोग ):

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

और md5sum है:

4a049a80241160cdde0a3cbca323b7f2

2
मेरी उंगली "डिलीट" बटन को हिट करने के लिए खुजली कर रही थी जब मैंने कोड देखा, जब तक कि मैंने चरित्र गिनती और स्पष्टीकरण नहीं पढ़ा। : पी
दरवाज़े

2
आप संपीड़ित फ़ाइल बनाने के लिए zopfli का उपयोग करके लगभग 30 बाइट्स बचा सकते हैं। "zopfli --i100 y" एक 190-बाइट फ़ाइल देता है जो zcat को डिकम्प्रेस कर सकती है।
ग्लेन रैंडर्स-पीरसन

1
और कुछ और अगर आप पिछले 10 बाइट हटाते हैं और STDERR को बंद कर देते हैं।
डेनिस

@ GlennRanders-Pehrson इस बात की ओर इशारा करने के लिए धन्यवाद, मैंने अपने उत्तर को 'कंपाउंड्स के मोलर द्रव्यमान' कोडगुल्फ.स्टैकएक्सएक्सचेंज . com / a / 35613 / 16402 पर संपादित करके zopfli का उपयोग करने के लिए, 37 बाइट्स

@ डेनिस यह 8 बाइट्स (किसी भी अधिक और Yggdrasil के ट्रंक के टुकड़े गायब हो जाएगा) हो गया, धन्यवाद

7

सी, 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 की जरूरत है

आइडोन पर प्रयास करें


मुझे लगता है कि इसे कुछ प्रमुख स्थानों की आवश्यकता है। इसके अलावा, रूबी 1.9 के साथ काम करता है, लेकिन 1.8 में नहीं।
स्कॉट लीडली

7

पॉवरशेल 104 101

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

6

सी # 258 234bytes

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

3
@ nyuszika7h वास्तव में, लेकिन यह अच्छे उपाय के लिए प्रारूपित प्रतिलिपि में शामिल है, ताकि नोटपैड का उपयोग करने वाले लोग अधिक आसानी से
यग्द्रशिल

ओह मैं समझा। विंडोज ... तब मेरा संपादन ठीक करने के लिए स्वतंत्र महसूस करें।
nyuszika7h

@ सिंटेक्स हाइलाइटिंग को इंगित करने के लिए nyuszika7h धन्यवाद सही नहीं था
विजुअलमेल


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

Ungolfed:

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 वर्ण सहेजें।
कोरोबा

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'%'|________|'


अनगोल्डेड ("अनहोल्ड" डालता है):


# 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 मुझे लगता है कि यह इसका जवाब देने योग्य है। इसका लाभ उठाएं।
स्कॉट लेडले

4

PHP 223 202 181 160 156

संपादित करें मुझे पता चला है कि एक चर के साथ एक फ़ंक्शन को कैसे उतारा जाए और कुछ और पात्रों को काट दिया जाए। वह str_repeatकार्य वास्तव में क्रियात्मक था

संपादन 2: सुझावों के लिए सभी को धन्यवाद!

golfed:

<?$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

उसके बाद आप के $s(($i==0?'_':'-'),8)साथ भी बदल सकते हैं $s($i?'-':'_',8)। (==> -5
चार्ट

-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

बाद में सुधार करने का प्रयास करेंगे।
golfed

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.

ungolfed

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.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('_'))

Ungolfed:

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=consoleऔर pके बजाय c.log(हालांकि मैं केवल Node.js में बाद परीक्षण किया है, यह नहीं फ़ायरफ़ॉक्स में काम करता है)। इससे 12 बाइट बचती हैं।
nyuszika7h

c=console.logChrome में भी काम नहीं किया, इसलिए मैंने इसका उपयोग नहीं किया। लूप ट्रिक्स के लिए हालांकि 7 बाइट्स बचाएं।
शॉन लाथम

मैं आमतौर पर एमएसआई का उपयोग करने के लिए मुझे प्रोत्साहित करने वाली किसी भी चीज़ से काफी सावधान हूँ ...

यह संभवतः संभवतः पहली बार है जब मैंने वाक्यांश "आईई के बजाय उपयोग करें" देखा है। O_o हालाँकि, आप इस कोड को वेबपृष्ठ के बजाय कंसोल में चलाकर Chrome के व्यवहार को दबा सकते हैं।
दरवाज़े

इसे पृष्ठ में और कंसोल में चलाना फ़ायरफ़ॉक्स और क्रोम दोनों पर मेरे लिए समान परिणाम उत्पन्न करता है।
सीन लेथम

3

जावास्क्रिप्ट (कंसोल.लॉग), 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

सी (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 का उपयोग करने के लिए तैयार है तो वह सभी को शामिल कर सकता है। इस कोड में कोई मामला नहीं है जहां कॉल स्क्रू पर निहित घोषणा।
जोशुआ

@Nax; जो मुझे 263 में ले जाता है - और मैंने इसे शामिल किया। धन्यवाद।
ड्रीमवर्यर

@ जोशुआ - 64 बिट सिस्टम और मेमसेट समस्याग्रस्त हो सकते हैं, लेकिन ... अन्यथा, शायद नहीं। किसी भी तरह से, ज्यादातर लोग शामिलों को हटा देते हैं, इसलिए मैंने भी किया।
ड्रीमवर्यर

यह वास्तव में 262 अक्षर है, आपको अनुगामी न्यूलाइन की आवश्यकता नहीं है।
nyuszika7h

आप उपयोग कर सकते हैं 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, निर्दिष्ट आधा भरने वर्णों की संख्या। पैटर्न मिलान, विपक्ष-इंग और appending आदेश के बीच "गोंद" की देखभाल करने से बाइट्स को बचाने के लिए संयोजन में उपयोग किया जाता है Charऔर String। इस दूसरे संस्करण में, मैंने भी #अनंत बना दिया और एक परिचय दियाtake 85 इसे फिर से परिमित बनाने के लिए किया (कोई बाइट्स नहीं बचा, दुर्भाग्य से)।

#ऑपरेटर के लिए अनुक्रम बनाता nकरने के लिए तर्क %पेड़ के लिए आवश्यक: [0..3], [3..7], ...concatenated।

& के लिए सिर्फ एक infix आशुलिपि है 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

मेरा पहला गोल्फ।

golfed:

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

Ungolfed:

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

पायथ, 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आपके पायथन में परिभाषित कार्य +सूची में समतुल्य नहीं है ?
१३:३४ पर फल

@EsolangingFruit यह करीब है, लेकिन बिल्कुल नहीं: <list>+<str>एक वैध संचालन नहीं है, लेकिन मैं बस आसानी से उपयोग कर सकता हूं ["-"]*11+["_"]। मैंने अपने स्वयं के कार्य को अधिक सटीक रूप से अनुवाद करने का निर्णय लिया, जो वास्तव में पायथ कर रहा है।
hakr14

ठीक है, यह समझ में आता है।
फलन

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 समाधान देखने के लिए आश्चर्यचकित नहीं हूं। ग्रूवी की मेरी धारणा यह थी कि यह एक जावा प्रोग्रामर द्वारा किया गया था जिसे टाइपिंग से नफरत थी।
अल्मो

1

सी, 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

golfed:

(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"))))))

Ungolfed:

(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 चरित्र बहुत छोटा बना दिया। (३५ के स्थान पर ३६)। फिक्स्ड। -1 बाइट को t8 से 0 पर सेट करके और बराबर की बजाय कम पर ब्रांचिंग करें। मुझे ऐड ऑप्स को फिर से चालू करने की भी आवश्यकता थी, जिसने दुर्भाग्यवश निष्पादन के समय को 3 ऑपकोड से अधिक लंबा बना दिया।
एडिट 4:$ T0 और $ t1 के बजाय $ 8 और $ 9 का उपयोग करके -4 बाइट को । वे एक ही बात का मतलब है, लेकिन $ t0 पढ़ने के लिए आसान है। दुर्भाग्य से, अन्य सभी टी रजिस्टर एक ही लंबाई के होते हैं जब अच्छी तरह से लिखा जाता है ($ t2 == $ 10, लेकिन दोनों 3 वर्ण हैं), इसलिए बाकी एक धोने हैं। मैं (सिद्धांत रूप में) शेष 'ए' रजिस्टरों का उपयोग कर सकता था (5-7 प्रिंट syscall 4 का उपयोग करता है), लेकिन afaik व्यवहार syscall का उपयोग करते समय परिभाषित नहीं किया गया है।

MIPS में सबसे अच्छा नहीं है, लेकिन मेटा चर्चा में इस बारे में मेरी अंतरात्मा को साफ करने के बाद, मैं उन्हें प्रस्तुत कर रहा हूं। MIPS को इसके लिए डिज़ाइन नहीं किया गया है (कोई आउटपुट नहीं, लूप के लिए नहीं), लेकिन इसके बावजूद ऐसा करने में बहुत मज़ा आता है।

दुर्भाग्य से, मैंने इस नए समाधान के लिए एक टिप्पणी संस्करण नहीं बनाया है, लेकिन आप पुराने संस्करण को पूर्ण प्रलेखन के साथ देख सकते हैं

क्रेडिट लेने के लिए स्वतंत्र महसूस करें और इस जवाब में सुधार करें कि क्या आप इसे हरा सकते हैं - मैं शायद यहाँ और वहाँ कुछ अनुकूलन याद कर रहा हूँ।


चूंकि इस समाधान के लिए .data की आवश्यकता नहीं है, इसलिए बाइनरी (संकलित) में कनवर्ट करना और बाइट्स का एक गुच्छा बचाना संभव है। हालाँकि, SPIM इसका समर्थन नहीं करता है, इसलिए c'est la vie।
एंड्रयू बॉमर

इसके अलावा, मुझे यकीन नहीं है कि शॉर्टहैंड addi $sp -4जो वास्तव addi $sp $sp -4में एसपीआईएम या एमआइपी से होता है, इसलिए यदि कोई और करता है, तो कृपया मुझे बताएं।
एंड्रयू बॉमर

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+'|________|'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.