गतिशील रूप से बक्से बनाएँ


22

चुनौती:

ASCII बक्से की एक आयत बनाएं: []

नियम:

एक चौड़ाई और एक ऊंचाई इनपुट लेता है

आप मान सकते हैं कि ये दोनों संख्याएँ हैं

Newline वर्ण, \ n के साथ एक स्ट्रिंग का उत्पादन करना चाहिए

उदाहरण:

2, 2:

[][]
[][]

2, 3:

[][]
[][]
[][]

सबसे कम बाइट्स जीतता है।


2
अच्छी पहली पोस्ट! PPCG में आपका स्वागत है!
एमडी एक्सएफ

1
क्या मैं मान सकता हूं कि संख्याएं सकारात्मक हैं? क्या नई अनुगामी बन सकती है?
द्विजिमा

@ दज़ीमा पॉजिटिव पूर्णांक, कोई अनुगामी या प्रमुख सामान नहीं
रॉबिनलमन

क्या हम कंसोल को प्रिंट कर सकते हैं या हमें स्ट्रिंग को वापस करने की आवश्यकता है?
ग्यूसेप

5
क्या होगा अगर हम सचमुच नई अनुगामी प्रिंट नहीं कर सकते हैं? यह एक अनुगामी न्यूलाइन की अनुमति देने के लिए अच्छा अभ्यास करता है
विनाशकारी नींबू

जवाबों:



4

गणितज्ञ, 26 बाइट्स

Grid@Table["[]",{#2},{#}]&

क्या एक गणितज्ञ Gridऑब्जेक्ट को "न्यूलाइन वर्णों के साथ एक स्ट्रिंग" के रूप में गिना जाता है?
डेविड झांग


4

पायथ - 7 5 बाइट्स

सम्मिलित करने के लिए एक चालाक चाल द्वारा -2 बाइट्स

VE*`Y

इसे यहाँ आज़माएँ

स्पष्टीकरण:

VE*`Y
V      # Loop
 E     # <input> number of times
   `Y  # String representation of empty list (used to be "[]", but insert_name_here pointed out this shorter alternative)
  *    # repeat string implicit input number of times
       # implicit print

3
आप `Yइसके बजाय (खाली सूची के स्ट्रिंग प्रतिनिधित्व) का उपयोग करके 2 बाइट्स बचा सकते हैं "[]"
डालें_नाम_जहाँ

@insert_name_here जन्मजात !! मैंने जवाब अपडेट किया। यह बात बताने के लिए धन्यवाद!
मारिया

1
स्वतंत्र रूप से इस सटीक कोड के साथ आया था। अच्छी तरह से किया।
इसहाक

4

सी, 47 46 बाइट्स

f(w,h){for(h*=w;h--;)printf(h%w?"[]":"[]\n");}

या

f(w,h){for(h*=w;h--;)printf("[]%c",h%w?0:10);}

मेरा पहला कोड गोल्फ प्रयास, क्या मुझे कुछ स्पष्ट याद आया?


यह 45 के लिए है, लेकिन इसकी शुरुआत में एक नई रूपरेखा है:f(w,h){h*=w;while(h--)printf("\n[]"+!(h%w));}
कॉनर ओ'ब्रायन

यह केवल तभी काम करता है जब चौड़ाई 2 हो
dbandstra

तो यह मेरी गलती है
कॉनर ओ'ब्रायन

महान पहले गोल्फ! साइट पर आपका स्वागत है!
एमडी एक्सएफ

1
एक forलूप का उपयोग नहीं होगा और भी अधिक कोड छोटा?
स्पिकैट्रिक्स


3

; # + , 197 बाइट्स

>;;;;;;~++++++++:>~;;;;:>~*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)-::<-::::>-::(;)::>-::*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)-:<~<;;;;;-+>-:<-:-(-:::~<-:::(~<#<-;;-#~;)-:<#-::<;>-:-)

इसे ऑनलाइन आज़माएं! प्रत्येक इनपुट नंबर के बाद एक शून्य बाइट की आवश्यकता होती है।

मुझे नहीं पता कि यह कैसे काम करता है। मैं आपको बता सकता हूं कि यह कोड का हिस्सा है:

 *(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)-::<-::::>-::(;)::>-::*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)

इनपुट संख्या को पार्स कर रहा है।


3

ब्रेनफक, 145 बाइट्स

+++++++++[>++++++++++<-]>+[>+>+<<-]>>++>,>+++++++++[<----->-]<--->>>,>+++++++++[<----->-]<--->++++++++++<[<<<[>+>+<<-]>[<<<.>.>>-]>[<<+>>-]>>.<-]

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

मेरी पहली बार कोड गोल्फ! वाह!

इनपुट ascii + 48 में है, इसलिए 50, 50 करने के लिए आपको इनपुट b, b (ascii ऑफ़र के लिए) पर इनपुट करना होगा

व्याख्या

+++++++++[>++++++++++<-]>+ Get the opening square bracket into first position
[>+>+<<-] Get it into the second and third position
>>++ Get the third position to be the closing bracket
>
,>+++++++++[<----->-]<--- Get first number into fourth cell
>>>
,>+++++++++[<----->-]<--- Get second number into seventh cell
>++++++++++ get newline into 8th position
<

[ Start our height loop
<<<[>+>+<<-] Get the width into the fifth and sixth positions
>[ Start our width loop at the fifth position
<<<.>. Print the second and third positions
>>-] Decrement the fifth position
>
[<<+>>-] copy the sixth position into the fourth position
>>. print newline
<-]

प्रभावशाली। साइट पर आपका स्वागत है! :)
DJMcMayhem

इनपुट ASCII + 48 क्यों है? आप बस ASCII + 0 इनपुट का उपयोग करके बहुत सारे बाइट्स बचा सकते हैं (संभवतः प्रयोज्य के लिए ASCII + 48 संस्करण से लिंक कर रहे हैं)
कैलक्यूलेटरफैनलाइन

मैं सिर्फ इनपुट के मापदंड को पूरा करना चाहता था, @calculatorFeline
vityavv

...अरे हाँ। : |
कैलक्यूलेटरफल

2

जे , 12 बाइट्स

'[]'$~],+:@[

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

व्याख्या

'[]'$~],+:@[   input: y, x
        +:@[   double y
      ],       pair with x
               this gives (x, 2y)
    $~         shape the left argument into the right argument's shape
'[]'           2-length character string

यह हमें एक देता xद्वारा 2yदोहराने की स्ट्रिंग []अक्षर।




2

जेली , 7 बाइट्स

ẋ⁾[]ẋ$Y

वर्णों की सूची लौटाने वाला एक डायडिक लिंक (या परिणाम को प्रिंट करने वाला पूरा कार्यक्रम)।

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

कैसे?

ẋ⁾[]ẋ$Y - Main link: number w, number h          e.g. 2, 3
ẋ       - repeat w h times                            [2,2,2]
     $  - last two links as a monad:
 ⁾[]    -   literal ['[',']'],                        "[]"
    ẋ   -   repeat list (vectorises)                  ["[][]","[][]","[][]"]
      Y - join with newlines                          "[][]\n[][]\n[][]"
        - if a full program, implicit print






2

जाप , १३ १२ + १ = १४ १३ बाइट्स

-Rझंडे के लिए +1 ।

"[]"pN× òU*2

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

  • 1 बाइट ने ओबरकॉन को धन्यवाद दिया।

थोड़ा नशे में होने के कारण कभी-कभी आपके प्रोग्रामिंग कौशल में मदद मिल सकती है : P
ETHproductions

@ETHproductions: मैं जिस कार्टून की तलाश कर रहा था, लेकिन वह बहुत नशे में था!
झबरा

हाहा, आशा है कि आप लोग एक मजेदार रात बिता रहे होंगे। फी, U*Vको छोटा किया जा सकता है
ओलिवर

1
@obarakon: Nकल रात के साथ काम करने के 2 अवसर हैं । कभी नहीं पीना और गोल्फ, बच्चों!
शैगी


2

चारकोल , 8 7 बाइट्स

EN×[]Iη

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

 N      First input as a number
E       Map over implcit range
      η Second input
     I  Cast to number
   []   Literal string
  ×     Repeat
        Implicitly print on separate lines

वैसे इसके लिए आदिम आरेखण हैं लेकिन फिर भी 8 बाइट्स : P
ASCII-only

@ ASCII- केवल क्षमा करें, मुझे महसूस नहीं हुआ कि ओबलोंग ने मनमाने तार पर काम किया। साफ!
नील

@ ASCII- केवल ओह, और पूर्वनिर्धारित रिक्त स्ट्रिंग चर का क्रिया नाम क्या है?
नील


@ ASCII- केवल तब मैं यहां क्या गलत कर रहा हूं: इसे ऑनलाइन आज़माएं!
नील

1

आर , 70 बाइट्स

p=paste
function(w,h)p(rep(p(rep('[]',w),collapse=''),h),collapse='
')

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

एक अनाम फ़ंक्शन देता है जो स्ट्रिंग का निर्माण और रिटर्न करता है।

45 बाइट्स, गैर-अनुरूपण

function(w,h)write(matrix('[]',w,h),'',w,,'')

एक अनाम फ़ंक्शन जो वांछित प्रारूप में स्ट्रिंग को प्रिंट करता है।

यह ऑनलाइन प्रयास करें


1

जाप , 7 बाइट्स

-Rध्वज के लिए कोड के 6 बाइट्स, +1 ।

VÆç"[]

बग के साथ नवीनतम संस्करण में काम नहीं करता है ç, लेकिन यह कमिटf619c52 में काम करता है । इसे ऑनलाइन टेस्ट करें!

व्याख्या

VÆ   ç"[]
VoX{Uç"[]"}  // Ungolfed
             // Implicit: U, V = input integers
VoX{      }  // Create the range [0...V) and replace each item X with
    Uç"[]"   //   U copies of the string "[]".
-R           // Join the result with newlines.
             // Implicit: output result of last expression


1

QBIC , 14 बाइट्स

[:|?[:|?@[]`';

स्पष्टीकरण:

[:|     FOR a = 1 to (read input from cmd line)
?       PRINT a newlne
[:|     FOR c = 1 to (read input from cmd line)
?@[]`   PRINT A$ (containing the box)
';         and inject a semicolon in the compiled QBasic code to suppress newlines

यह # तीर, # रंग के क्रम में अपने तर्क देता है। आउटपुट एक नई पंक्ति से शुरू होता है।



1

बैश , 55 बाइट्स

seq $(($1*$2))|sed s/.*/[]/|tr -d "
"|fold -w $(($1*2))

इसे ऑनलाइन आज़माएं! खिड़कियों को चलाने के बाद से मैं बैश के TIO स्वाद का उपयोग करता हूं।


1
मुझे नहीं लगता कि यह मल्टी-डिजिट नंबरों के लिए काम करता है
कृतिका लिथोस

@KritiiLithos यह अब काम करना चाहिए
कॉनर ओ'ब्रायन

1

सी #, 78 बाइट्स

(w,h)=>"".PadLeft(h).Replace(" ","".PadLeft(w).Replace(" ","[]")+'\n').Trim();

सी # पैड में चलाएं

यह छोरों के साथ की तुलना में कम है और मुझे C # में किसी भी फ़ंक्शन के बारे में पता नहीं है जो कम कोड के साथ दोहरा सकता है।



1

जावास्क्रिप्ट (ES6), 43 36 बाइट्स

टिप्पणियों से, एक अनुगामी न्यूलाइन अब अनुमत है।

w=>h=>("[]".repeat(w)+`
`).repeat(h)

कोशिश करो

f=
w=>h=>("[]".repeat(w)+`
`).repeat(h)
oninput=_=>o.innerText=f(+i.value)(+j.value);o.innerText=f(i.value=2)(j.value=2)
*{font-family:sans-serif;}
input{margin:0 5px 0 0;width:50px;}
<label for=i>w: </label><input id=i type=number><label for=j>h: </label><input id=j type=number><pre id=o>



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