सब सब में यह सिर्फ, उह, कोड गोल्फ में एक और चाल है


64

इस चुनौती का उद्देश्य रॉक बैंड पिंक फ्लोयड द्वारा इस महान एल्बम के कवर के एएससीआईआई संस्करण का उत्पादन करना है ।

ईंट जंक्शन पात्रों के बने होते हैं _और |। जंक्शनों को छोड़कर, ईंटों की चौड़ाई 7 और ऊंचाई 2 वर्ण है। तो जंक्शनों सहित बुनियादी इकाई है:

_________
|       |
|       |
_________

पिछली पंक्ति के संबंध में ईंटों की प्रत्येक पंक्ति आधी ईंट की चौड़ाई (4 चार्ट) से ऑफसेट होती है:

________________________________________
  |       |       |       |       |     
  |       |       |       |       |     
________________________________________
      |       |       |       |       | 
      |       |       |       |       | 
________________________________________
  |       |       |       |       |     
  |       |       |       |       |     

दीवार को निम्नानुसार पैरामीटरित किया गया है। सभी मापदंडों को जंक्शनों सहित वर्णों में मापा जाता है:

  1. पहली पंक्ति की क्षैतिज ऑफसेटF । यह बाएं हाशिये और सबसे ऊपरी पंक्ति के पहले ऊर्ध्वाधर जंक्शन के बीच की दूरी है। (याद रखें कि पंक्तियों के बीच आधा ईंट सापेक्ष ऑफसेट)। इसकी संभावित मान हैं 0, 1, ..., 7
  2. कुल चौड़ाई , W। इसमें जंक्शन शामिल हैं। इसका मान धनात्मक पूर्णांक है।
  3. कुल ऊंचाई , H। इसमें जंक्शन शामिल हैं। इसका मान धनात्मक पूर्णांक है।

दीवार के शीर्ष हमेशा एक पंक्ति के शीर्ष के साथ मेल खाता है। नीचे चीर डाला जा सकता है (यदि कुल ऊंचाई एक से अधिक नहीं है 3)। उदाहरण के लिए, यहां उत्पादन है के लिए 6, 44, 11:

____________________________________________
      |       |       |       |       |     
      |       |       |       |       |     
____________________________________________
  |       |       |       |       |       |     
  |       |       |       |       |       |     
____________________________________________
      |       |       |       |       |     
      |       |       |       |       |     
____________________________________________
  |       |       |       |       |       |     

और मापदंडों का एक दृश्य विवरण:

          F=6
         ......   
     .   ____________________________________________
     .         |       |       |       |       |    
     .         |       |       |       |       |     
     .   ____________________________________________
     .     |       |       |       |       |       | 
H=11 .     |       |       |       |       |       |      
     .   ____________________________________________
     .         |       |       |       |       |     
     .         |       |       |       |       |     
     .   ____________________________________________
     .     |       |       |       |       |       |      

         ............................................
                             W=44

अतिरिक्त नियम

आप एक कार्यक्रम या एक समारोह प्रदान कर सकते हैं।

इनपुट प्रारूप हमेशा की तरह लचीला है। आउटपुट STDOUT या एक फ़ंक्शन द्वारा लौटाए गए तर्क के माध्यम से हो सकता है। इस मामले में यह newlines या स्ट्रिंग की एक सरणी के साथ एक स्ट्रिंग हो सकता है।

ट्रेलिंग स्पेस या नईलाइनों की अनुमति है।

बाइट्स में सबसे छोटा कोड जीतता है।

परीक्षण के मामलों

इनपुट ऊपर दिए गए क्रम में हैं, अर्थात्: पहली पंक्ति की क्षैतिज ऑफसेट, कुल चौड़ाई, कुल ऊंचाई।

6, 44, 11:
____________________________________________
      |       |       |       |       |     
      |       |       |       |       |     
____________________________________________
  |       |       |       |       |       | 
  |       |       |       |       |       | 
____________________________________________
      |       |       |       |       |     
      |       |       |       |       |     
____________________________________________
  |       |       |       |       |       |     


2, 20, 10:
____________________
  |       |       | 
  |       |       | 
____________________
      |       |     
      |       |     
____________________
  |       |       | 
  |       |       | 
____________________


1, 1, 1:
_


1, 2, 3:
__
 |
 |


3, 80, 21:
________________________________________________________________________________
   |       |       |       |       |       |       |       |       |       |    
   |       |       |       |       |       |       |       |       |       |    
________________________________________________________________________________
       |       |       |       |       |       |       |       |       |       |
       |       |       |       |       |       |       |       |       |       |
________________________________________________________________________________
   |       |       |       |       |       |       |       |       |       |    
   |       |       |       |       |       |       |       |       |       |    
________________________________________________________________________________
       |       |       |       |       |       |       |       |       |       |
       |       |       |       |       |       |       |       |       |       |
________________________________________________________________________________
   |       |       |       |       |       |       |       |       |       |    
   |       |       |       |       |       |       |       |       |       |    
________________________________________________________________________________
       |       |       |       |       |       |       |       |       |       |
       |       |       |       |       |       |       |       |       |       |
________________________________________________________________________________
   |       |       |       |       |       |       |       |       |       |    
   |       |       |       |       |       |       |       |       |       |    

34
आपने मुझे hnq
रोहन झुनझुनवाला

2
@ रोहन झुनझुनवाला सही के बारे में लगता है
पागल

4
गीत में शब्दांशों की संख्या के मिलान के लिए धन्यवाद ... आपको विश्वास नहीं होगा कि कितने लोग एक गीत को स्पिन करने की कोशिश करते हैं और शब्दांश गलत हो जाता है, यह मुझे पागल कर देता है!
क्रिस सिलिफ़िस

1
@ क्रिसचाइर्फे हाहा, धन्यवाद! शीर्षक इस चुनौती का एक महत्वपूर्ण हिस्सा था
लुइस मेंडो

जवाबों:


17

पायथ, 43 27 बाइट्स

मुझे इसे बहुत गंभीरता से करने की आवश्यकता है ... स्कोर बहुत शर्मनाक है।

AQVE<*H?%N3X*8d+G*4/N3\|\_H

इसे पहले से ही ऑनलाइन करके देखें।

इनपुट प्रारूप

6,44
11

आउटपुट स्वरूप

____________________________________________
      |       |       |       |       |     
      |       |       |       |       |     
____________________________________________
  |       |       |       |       |       | 
  |       |       |       |       |       | 
____________________________________________
      |       |       |       |       |     
      |       |       |       |       |     
____________________________________________
  |       |       |       |       |       | 

व्याख्या

AQVE<*H?%N3X*8d+G*4/N3\|\_H   First two inputs as list in Q,
                              third input as E.

AQ                            Assign G to the first item in Q
                              and H to the second item in Q.
  VE                          For N from 0 to E-1:
                   /N3            N floor-div 3.
                                    if N gives a remainder of 3 or 4 or 5
                                    when divided by 6, this will be odd;
                                    otherwise, this will be even.
                 *4               Multiply by 4.
                                    if the above is odd, this will leave
                                    a remainder of 4 when divided by 8;
                                    otherwise, the remainder would be 0.
               +G                 Add G (as an offset).
           X*8d       \|          In the string "        " (*8d),
                                  replace (X) the character with the
                                  index above with "|" (modular indexing,
                                  hence the manipulation above).
       ?%N3             \_        If N%3 is non-zero, use the above;
                                  otherwise, use "_".
     *H                           The above repeated H times.
    <                     H       Take the first H characters of above.
                                  Implicitly print with newline.

ऐसा लगता है कि आप जीतते हैं
wordforthewise

30

सी, 86 85 83 82 बाइट्स

3 बाइट्स ने लिन को धन्यवाद दिया।
1 बाइट चार्ली की बदौलत बचा।

i;f(o,w,h){++w;for(i=0;++i<w*h;)putchar(i%w?i/w%3?i%w+i/w/3*4+~o&7?32:124:95:10);}

1
for(i=0;++i<w*h;)या अगर iलोकल बनाया जाए (परम ट्रिक):for(;++i<w*h;)
चार्ली

i;द्वारा प्रतिस्थापित करें i=1;और लूप के लिए एक और बाइट को सहेजें।
xryl669

for(i=1;i<w*h;++i)-> for(i=0;++i<w*h;)
Y29295

@ xryl669 यह मान्य नहीं है, कार्यों को पुन: प्रयोज्य होना चाहिए।
orlp

@ Yay295 मैंने इसके साथ चार्ली को श्रेय दिया, क्योंकि उन्होंने इसे 7 घंटे पहले पोस्ट किया था।
orlp


13

पर्ल, 63 बाइट्स

#!perl -nl
$y+=print+map$y%3?$_++-$`&7?$":'|':_,($y%6&4)x$&for/ \d+/..$'

शेबंग को 2 के रूप में गिना जाता है, इनपुट को स्टड से लिया जाता है, व्हॉट्सएप को अलग किया जाता है।

नमूना उपयोग

$ echo 2 20 10 | perl bricks.pl
____________________
  |       |       |
  |       |       |
____________________
      |       |
      |       |
____________________
  |       |       |
  |       |       |
____________________

11

हास्केल, 83 बाइट्स

q s="_":[s,s]
(f!w)h=take h$cycle$take w.drop(7-f).cycle<$>q"       |"++q"   |    "

यह एक टर्नरी इन्फिक्स फ़ंक्शन को परिभाषित करता है !जो स्ट्रिंग्स की एक सूची देता है। उपयोग उदाहरण:

*Main> putStrLn $ unlines $ (3!14) 7
______________
   |       |  
   |       |  
______________
       |      
       |      
______________

यह काम किस प्रकार करता है:

            q"       |"++q"   |    "  -- build a list of 6 strings
                                      --   1:     "_"
                                      --   2:     "       |"
                                      --   3:     "       |"
                                      --   4:     "_"
                                      --   5:     "   |    "
                                      --   6:     "   |    "
         <$>                          -- for each of the strings
     take w.drop(7-f).cycle           -- repeat infinitely, drop the first 7-f chars
                                      --    and take the next w chars
  cycle                               -- infinitely repeat the resulting list
take h                                -- and take the first h elements

1
इस तरह के उत्तर मुझे इस भाषा को सीखना चाहते हैं।
गिटारपीकर

3
समस्या वर्णन पढ़ते समय मैंने हास्केल के बारे में सोचा। "असीम रूप से दोहराएं" एक बहुत ही साफ-सुथरी विशेषता है।
DLosc

10

जावास्क्रिप्ट (ईएस 6), 96 95 बाइट्स

g=
(f,w,h)=>[...Array(h)].map((_,i)=>(i%3?`       |`:`_`).repeat(w+7).substr(f^7^i%6&4,w)).join`
`
;
<div onchange=o.textContent=g(f.value,w.value,+h.value)><input id=f type=number min=0 max=7 placeholder=Offset><input id=w type=number min=0 placeholder=Width><input id=h type=number min=0 placeholder=Height></div><pre id=o>

स्पष्टीकरण: दोहराए गए 7 रिक्त स्थान प्लस |पैटर्न या बस दोहराया _एस के एक स्ट्रिंग बनाता है , लेकिन wप्रत्येक पंक्ति के लिए आवश्यक वर्ण निकालने में सक्षम होने के लिए कम से कम लंबे समय तक । पहली तीन पंक्तियाँ स्थिति में शुरू होती हैं f^7और फिर अगली तीन पंक्तियाँ स्थिति में शुरू होती हैं f^3, इसलिए मैं 1 की बचत के लिए 6 के प्रत्येक ब्लॉक की अंतिम दो पंक्तियों पर विपरीत बिट 2 का उपयोग करके हर तीसरी पंक्ति पर बिट 2 से टॉगलf करके इसे प्राप्त करता हूं। बाइट।


7

MATL, 42 36 33 बाइट्स

:-Q'_ | |'[DClCl]Y"8et4YShwi:3$)!

इनपुट प्रारूप है: nCols, offset,nRows

इसे ऑनलाइन आज़माएं

यहां दृष्टिकोण यह है कि हम एक "टेम्पलेट" सेटअप करते हैं जिसे हम [1 2 ... nRows]पहले इनपुट ( [1 2 ... nCols] - shift) द्वारा स्थानांतरित किए गए पंक्ति सूचकांकों ( ) और स्तंभ सूचकांकों का उपयोग करके अनुक्रमित करते हैं । MATL के मॉड्यूलर इंडेक्सिंग के लिए धन्यवाद, यह स्वचालित रूप से टाइल वाले आउटपुट में परिणाम देगा। साइड-नोट के रूप में, कुछ स्थान को बचाने के लिए, तकनीकी रूप से मैं टेम्पलेट के ट्रांसपोज्ड संस्करण के साथ काम करता हूं और फिर !अंत में केवल ट्रांसपोज़ ( ) लेता हूं ।

टेम्प्लेट यह है:

________
       |
       |
________
  |     
  |     

1
पैटर्न बनाने के लिए रन-लेंथ कोडिंग का अच्छा उपयोग
लुइस मेंडो

6

पायथन 2, 93 88 बाइट्स

2 इंडेंटेशन लेवल टैब है जो कुछ बाइट्स को लीक कर रहा है जिसकी वजह लीकी नून और कुछ खुद के संशोधन हैं, अब यह भी सही है:

def f(F,W,H):
 for h in range(H):print["_"*W,((("|"+7*" ")*W)[8-F+h%6/3*4:])[:W]][h%3>0]

पिछला कोड:

def f(F,W,H,x="|"+7*" "):
 for h in range(H):
    print ["_"*W,(x[F+4*(h%6>3):]+x*W)[:W]][h%3>0]

अनाम लम्बाई के समान लंबाई:

lambda F,W,H,x="|"+7*" ":"\n".join(["_"*W,(x[F+4*(h%6>3):]+x*W)[:W]][h%3>0]for h in range(H))

F,W,H=input()
लीक


का उपयोग करें h/3%2*4या h%6/3*4इसके बजाय4*(h%6>3)
लीक

आपको दूसरे इंडेंटेशन स्तर की आवश्यकता नहीं है। बस printस्टेटमेंट को उसी लाइन पर रखें जैसे forस्टेटमेंट
लीक नं

"| "("|"+7*" ")यदि मैं सही ढंग से गिनता हूं तो इससे कम है
लीक नून

6

QBasic, 121 109 बाइट्स

(QB64 पर परीक्षण किया गया)

IFएक गणितीय समतुल्य के साथ मेरे बयान पर नज़र रखने के लिए @DLosc को धन्यवाद । इसकी कीमत 12 बाइट्स थी।

सामान्य विधि:

एक समय में प्रत्येक कोशिका एक के माध्यम से लूप और निर्धारित करेंगे कि यह एक होना चाहिए _, या |अपने स्थान के आधार पर। MODबयान और बुलियन लॉजिक का उपयोग ईंट की सीमाओं और ईंटों को डगमगााने के लिए किया जाता है।

कोड:

INPUT F,W,H
FOR y=0TO H-1:FOR x=0TO W-1
?CHR$((y MOD 3>0)*(((x-(y MOD 6>3)*4)MOD 8=F)*92+63)+95);
NEXT:?:NEXT

उपयोग नोट:

QBasic कॉमा से अलग होने वाले इनपुट की अपेक्षा करता है।


1
गणित का प्रयोग IF/ के बजाय और THENभी कोष्ठक जोड़ता है लेकिन 12 बाइट्स बचाता है:?CHR$((y MOD 3>0)*(((x-(y MOD 6>3)*4)MOD 8=F)*92+63)+95);
DLosc

टिप्पणी के लिए धन्यवाद। मेरे सिर के पीछे मैंने गणित की खोज करने पर विचार किया था, लेकिन ऐसा नहीं किया। मैंने हाल के सबमिशन में एक इमेज को कलर करने के लिए इसी तरह का कुछ किया था , लेकिन मैंने जो इम्प्लिमेंट किया था, उसमें MOD ऑपरेटर नहीं था।
गिटारपरिकेटर

5

जावा, 149 , 147 , 146 , 143 बाइट्स

golfed:

String f(int o,int w,int h){String s="";for(int y=0,x;y<h;++y){for(x=0;x<w;++x){s+=y%3>0?(x-o+(y-1)/3%2*4)%8==0?'|':' ':'_';}s+='\n';}return s;}

Ungolfed:

public class AllInAllItsJustUhAnotherTrickInCodeGolf {

  public static void main(String[] args) {
    int offset = 6;
    int width = 44;
    int height = 11;
    System.out.println(new AllInAllItsJustUhAnotherTrickInCodeGolf()
        .f(offset, width, height));
  }

  // Begin golf
  String f(int o, int w, int h) {
    String s = "";
    for (int y = 0, x; y < h; ++y) {
      for (x = 0; x < w; ++x) {
        s += y % 3 > 0 ? (x - o + (y - 1) / 3 % 2 * 4) % 8 == 0 ? '|' : ' ' : '_';
      }
      s += '\n';
    }
    return s;
  }
  // End golf

}

1
हो सकता है कि आप तुलना करके टर्नरी के क्रम को बदल > 0सकते हों जिससे दो वर्णों को बचाया जा सके। और निश्चित रूप से आप घोषणाओं को जोड़ सकते हैं int y=0,x
फ्रोज़न

के रूप में द्वारा कहा जा रहा है Frozn , आप निकाल सकते हैं int से पहले xऔर उपयोग int y=0,xके बजाय पहले के लिए लूप में 2 बाइट्स को बचाने के लिए। इसके अलावा, वर्तमान में आपके बदल सकते हैं y%3==0करने के लिए y%3<1। (यह संभव नहीं है ...%8==0करने के लिए ...&8<1हालांकि, के बाद से अपने ऑपरेशन के एक ऋणात्मक संख्या लौट सकते हैं।)
केविन Cruijssen

किया और किया। आप सही हैं, कि दूसरा मोड्यूल नकारात्मक वापस आ सकता है और यह डिबगिंग के दौरान हुआ जब मैंने मूल रूप से इस फ़ंक्शन को लिखा था।

1
सुनिश्चित नहीं हैं कि हम इस याद किया, लेकिन आप -2 बाइट्स के लिए अपने मानकों पर रिक्त स्थान को हटा सकते हैं .. वैकल्पिक रूप से, का उपयोग कर int...oपैरामीटर के रूप में और बदलते wकरने के लिए o[1], hकरने के लिए o[2]और oकरने के लिए o[0]-3 बाइट्स के बजाय है।
केविन क्रूज़सेन

4

माणिक, 72 66 बाइट्स

->f,w,h{h.times{|i|puts i%3<1??_*w:((?|+' '*7)*w)[8-f+i%6/4*4,w]}}

6 बाइट्स के लिए धन्यवाद @Value इंक!

सरल स्ट्रिंग गुणा और टुकड़ा करना।

रूबी 2.3.0 में काम करता है (Ideone के संस्करण 2.1 फेंक दिया वाक्यविन्यास त्रुटि)।


2
का प्रयोग करें i%6/4*4बजाय (i%6>3?4:0)और प्रयोग ?_के बजाय '_', ?|की बजाय '|'
वैल्यू इंक

धन्यवाद। मैं ?सिंगल चर चाल के बारे में भूल गया , और "गणित" भाग वास्तव में प्रभावशाली है!
लेब्रुग

1
मुझे लगता ((' '*7+?|)*w)[f^7^i%6&4,w]है कि आप दो बाइट्स बचाता है।
नील

शुक्रिया @Neil मैं कोड संपादित करूँगा ... जैसे ही मैं समझ जाता हूँ कि आपका सुझाव कैसे काम करता है :)
Lebrug

4

जूलिया: 150 128 116 116 108 107 बाइट्स

# in codegolf.jl
r=repmat;b=r([' '],6,8);b[[1,4],:]='_';b[[2,3,23,24]]='|';b=r(b,h,w)[1:h,o+=1:o+w];b[:,end]=10;print(b'...)

तर्कों के साथ चलने के लिए: julia -e 'o=2;h=18;w=40;include("codegolf.jl")'

अगर आपको लगता है कि बैश से कॉल करना धोखा है और आप दुभाषिया के अंदर एक फ़ंक्शन चाहते हैं, तो फ़ंक्शन संस्करण 117 बाइट्स है :)

f(o,h,w)=(r=repmat;b=r([' '],6,8);b[[1,4],:]='_';b[[2,3,23,24]]='|';b=r(b,h,w)[1:h,o+=1:o+w];b[:,end]=10;print(b'...))

डेमो

(धन्यवाद, @ अतिरिक्त-बचत टिप के लिए ग्लेन-ओ!)


PPCG में आपका स्वागत है! आपको यहाँ देखकर अच्छा लगा!
लुइस मेंडू

ध्यान दें कि इनपुट को स्पष्ट रूप से लिया जाना चाहिए, अर्थात आपको उन तीन चर के लिए किसी प्रकार के इनपुट स्टेटमेंट की आवश्यकता है। या आप एक फ़ंक्शन का उपयोग कर सकते हैं जो उन्हें तर्क और आउटपुट के रूप में लेता है या परिणाम प्रदर्शित करता है। जब आप कर लिए जाते हैं, तो आप इसे ऑनलाइन आज़माकर
लुइस मेंडो


आह। हाँ, मैंने किया! : p
Tasos Papastylianou

1
आप ( repmat([32],6,8)) और बाद में किसी अन्य चरित्र को शेव करने के लिए repmat का नाम बदलकर ( g=repmat;b=g([32],6,8)और बाद में b=g(b,h,w)[1:h,o+1:o+w+1]) का उपयोग करके कुछ वर्णों को सहेज सकते हैं । तब की जगह reinterpretके साथ map। मेरी गिनती से, आप इन परिवर्तनों के बीच 9 बाइट्स बचाएंगे।
ग्लेन ओ

3

जावास्क्रिप्ट, 172 168 165 157 147 142 137 बाइट्स

(O,W,H)=>{t='_'.repeat(W),x='|       '.repeat(W),f=t+`
`;for(i=0;++i<H;)f+=(!(i%3)?t:(i%6)>3?x.substr(O,W):x.substr(8-O,W))+`
`;return f}

N = (O,W,H)=>{t='_'.repeat(W),x='|       '.repeat(W),f=t+`
`;for(i=0;++i<H;)f+=(!(i%3)?t:(i%6)>3?x.substr(O,W):x.substr(8-O,W))+`
`;return f}

let test_data = [[6,44,11],
                 [2,20,10],
                 [1,1,1],
                 [1,2,3],
                 [3,80,21]];

for (test of test_data)
    console.log(N(...test));


के s.repeat(w)बजाय का उपयोग क्यों नहीं Array(w).fill(s).join``?
नील

@ नील: अच्छा विचार है, लेकिन मैंने कुछ बेहतर सोचा।
Yay295

और फिर महसूस किया कि आपका समाधान मेरे विचार से बेहतर है। धन्यवाद!
Yay295

3

दिल्लोग एपीएल, 29 बाइट्स

↑⎕⍴⎕⍴¨a,4⌽¨a←'_',2⍴⊂⌽⎕⌽¯8↑'|'

परीक्षण: 6 44 11, 2 20 10, 1 1 1, 1 2 3, 3 80 21

मूल्यांकन किया गया इनपुट है; के रूप में अभिव्यक्ति दाएं से बाएं कार्यान्वित करता है, इसके लिए संकेत देता है F, Wऔर Hइसी क्रम में

¯8↑'|' है ' |'

⎕⌽ बारी बारी से, यह सामने से एफ चार को काटता है और उन्हें स्ट्रिंग के अंत में डालता है

दूसरे का मतलब है उल्टा

'_',2⍴⊂ '_' का 3-टुपल बनाता है और उसके बाद स्ट्रिंग की दो अलग-अलग प्रतियाँ बनाता है

a,4⌽¨a← अब तक सब कुछ 4 के रोटेशन को जोड़ते हैं, हम 6-ट्यूपल के साथ समाप्त होते हैं

⎕⍴¨ प्रत्येक तत्व को चौड़ाई में फेरबदल करें

⎕⍴ ऊँचाई तक पहुँचना

वेक्टर के वेक्टर को एक मैट्रिक्स में मिलाएं


2

दरअसल , 44 43 40 बाइट्स

यह नील के जेएस उत्तर में एल्गोरिथ्म का वास्तव में एक बंदरगाह है । गोल्फ सुझाव का स्वागत करते हैं। इसे ऑनलाइन आज़माएं!

╗╝r⌠;6(%4&╜7^^╛'|7" "*+*t╛@H╛'_*3(%YI⌡Mi

Ungolfing:

          Takes implicit input in the order h, w, f.
╗╝        Save f to register 0. Save w to register 1.
r⌠...⌡M   Map over range [0..h-1]. Call this variable i.
  ;         Duplicate i
  6(%       i%6...
  4&        ...&4
  ╜7^^      ...^i^7. Call it c.
  ╛         Push w.
  '|7" "*+  The string "       |"
  *t╛@H     (("       |" * w)[c:])[:w]
  ╛'_*      Push "_" * w
  3(%       Push 3, move duplicate i to TOS, mod.
  YI        If not i%3, take "_"*w, else (("       |" * w)[c:])[:w]
            Function ends here.
i         Flatten the resulting list and print the bricks implicitly.


1

ऑक्टेव 80 76 बाइट्स

% in file codegolf.m
c(6,8)=0;c([1,4],:)=63;c([2,3,23,24])=92;char(repmat(c+32,h,w)(1:h,o+1:o+w))

टर्मिनल से चलाने के लिए: octave --eval "o=2;h=18;w=44; codegolf"

(वैकल्पिक रूप से, यदि आपको लगता है कि टर्मिनल कॉल धोखा है: पी तो एक अनाम फ़ंक्शन कार्यान्वयन 86 बाइट्स लेता है :)

c(6,8)=0;c([1,4],:)=63;c([2,3,23,24])=92;f=@(o,h,w)char(repmat(c+32,h,w)(1:h,o+1:o+w))

f(2,18,44)सप्तक दुभाषिया पर कॉल करें ।


1

बैश + सैड, 411 395 381 370 बाइट्स:

F=`printf '_%.s' $(eval echo {1..$2})`;V="       |";(($[($2-$1)/8]>0))&&L=`printf "$V%.s" $(eval echo {1..$[($2-$1)/8]})`||L=;Z=`printf "%$1.s|%s\n" e "$L"`;I=$[($2-(${#Z}-4))/8];(($I>0))&&W=`printf "$V%.s" $(eval echo {1..$I})`||W=;J=${Z:4}$W;for i in `eval echo {1..$[$3/3+1]}`;{ (($[$i%2]<1))&&O+="$F\n$J\n$J\n"||O+="$F\n$Z\n$Z\n";};echo "`echo -e "$O"|sed -n 1,$3p`"

खैर, यहाँ बैश में मेरा पहला जवाब है, या उस मामले के लिए किसी भी शेल स्क्रिप्टिंग भाषा है। यह भी अब तक का सबसे लंबा जवाब है। प्रारूप में अंतरिक्ष-पृथक कमांड लाइन तर्कों के अनुक्रम में ले जाता है Offset Width Height। यह वर्तमान में हो सकता है की तुलना में बहुत कम हो सकता है, इसलिए इसे नीचे और अधिक गोल्फिंग के लिए किसी भी सुझाव और चाल की सराहना की जाती है।


1

डेल्फी / ऑब्जेक्ट पास्कल, 305 , 302 , 292 बाइट्स

पूर्ण कंसोल प्रोग्राम जो 3 मापदंडों को पढ़ता है।

uses SySutils,Math;var i,q,o,w,h:byte;begin o:=StrToInt(paramstr(1));w:=StrToInt(paramstr(2));h:=StrToInt(paramstr(3));for q:=0to h-1do begin for i:=1to w do if q mod 3=0then Write('_')else if IfThen(Odd(q div 3),((i+o)mod 8),((i-o)mod 8))=1then Write('|')else Write(' ');Writeln('');end end.

ungolfed

uses
  SySutils,
  Math;
var
  i,q,o,w,h:byte;
begin
  o:=StrToInt(paramstr(1));
  w:=StrToInt(paramstr(2));
  h:=StrToInt(paramstr(3));

  for q := 0 to h-1 do
  begin
    for i := 1 to w do
      if q mod 3 = 0  then
        Write('_')
      else
        if IfThen(Odd(q div 3),((i+o)mod 8),((i-o)mod 8)) = 1 then
          Write('|')
        else Write(' ');
    Writeln('');
  end
end.

अफसोस की बात है, डेल्फी के पास एक टर्नरी ऑपरेटर नहीं है और यह काफी वाचाल भाषा है।

परीक्षण का मामला

D:\Test\CodeGolfWall\Win32\Debug>Project1.exe 2 20 10
____________________
  |       |       |
  |       |       |
____________________
      |       |
      |       |
____________________
  |       |       |
  |       |       |
____________________

D:\Test\CodeGolfWall\Win32\Debug>Project1.exe 6 44 11
____________________________________________
      |       |       |       |       |
      |       |       |       |       |
____________________________________________
  |       |       |       |       |       |
  |       |       |       |       |       |
____________________________________________
      |       |       |       |       |
      |       |       |       |       |
____________________________________________
  |       |       |       |       |       |

संपादित करें: सभी चर के लिए प्रकार के रूप में बाइट का उपयोग करके 3 बाइट्स दाढ़ी कर सकते हैं।

संपादन 2: और कंसोल अनुप्रयोगों को कार्यक्रम घोषणा की आवश्यकता नहीं है , -10

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