एक टैली प्रदर्शित करें (अलग-अलग ठिकानों में)


16

टैलींग एक सरल गणना प्रणाली है जो आधार 5 में काम करती है। दुनिया भर में विभिन्न विभिन्न टैलिंग सिस्टम का उपयोग किया जाता है, लेकिन जो सबसे अधिक अंग्रेजी बोलने वाले देशों में उपयोग किया जाता है, वह शायद सबसे सरल है - ऊर्ध्वाधर लाइनों को चिह्नित करके गिनती इकाइयों प्रत्येक 5 वें निशान ने चार के पिछले संग्रह के माध्यम से एक क्षैतिज रेखा डाली। यह समूहों को 5 के समूहों में चिह्नित करता है (और उन्हें आसानी से गिनना आसान बनाता है)।

आप एक प्रोग्राम लिखने जा रहे हैं, जो दिए गए मान तक टैली मार्क्स प्रदर्शित करता है। लेकिन, केवल बेस 5 में टैली करना उबाऊ है! इसलिए, आपके कार्यक्रम को विभिन्न आधारों में लम्बे प्रदर्शित करने में सक्षम होना चाहिए।

इनपुट

इनपुट या तो एक या दो गैर-नकारात्मक पूर्णांक मानों को अल्पविराम (जैसे 9या 8,4) द्वारा अलग किया जाएगा । पहली संख्या वह मान है जिसे टैली द्वारा प्रदर्शित किया जाना चाहिए। दूसरा मान टैली का आधार है। यदि दूसरा मान नहीं दिया गया है, तो आधार 5 का उपयोग करें

उत्पादन

आउटपुट इनपुट इनपुट मान होगा जिसे ASCII आर्ट टैली मार्क्स के रूप में दर्शाया गया है। यहां कुछ उदाहरण दिए गए हैं, जिनसे आप अपने कार्यक्रम का परीक्षण कर सकते हैं - आपका आउटपुट उन्हें बिल्कुल मेल खाना चाहिए

इनपुट: 12या12,5

 | | | |   | | | |   | |
-+-+-+-+- -+-+-+-+-  | |
 | | | |   | | | |   | |

इनपुट: 7,3

 | |   | |   |
-+-+- -+-+-  |
 | |   | |   |

इनपुट: 4,2

 |   |
-+- -+-
 |   |

इनपुट: 6,1या 6,10(प्रमुख स्थानों को नोटिस करें)

 | | | | | |
 | | | | | |
 | | | | | |

ध्यान दें कि आधार 1 का उद्देश्य असंगत है - केवल ऊर्ध्वाधर लाइनों का उपयोग किया जाना चाहिए।

यदि या तो इनपुट किए गए मान 0 हैं, तो कोई आउटपुट नहीं होना चाहिए (और आपका प्रोग्राम इनायत से समाप्त होना चाहिए)।

नियम

  • यह , इसलिए सबसे कम सही कार्यान्वयन (बाइट्स में) जीतता है।
  • इनपुट / आउटपुट किसी भी उपयुक्त माध्यम में हो सकता है (जैसे स्टडिन / स्टडआउट, फ़ाइल ...)।
  • इनपुट कई कमांड-लाइन तर्कों के रूप में हो सकता है या रिक्त स्थान से अलग हो सकता है, आदि यदि यह आपकी लक्षित भाषा के लिए अधिक उपयुक्त है।
  • आउटपुट में अनुगामी न्यूलाइन्स की अनुमति है। ट्रेलिंग स्पेस नहीं हैं। यह नियम केवल तब लागू होता है जब कोई आउटपुट होता है (अर्थात इनपुट किए गए मान 0 होने पर नहीं)।
  • जब कोई आधार इनपुट न हो तो आपका कोड आधार 5 के लिए डिफ़ॉल्ट होना चाहिए।

3
क्या 6,1लुक का आउटपुट अधिक पसंद नहीं होना चाहिए -+- -+- -+- -+- -+- -+-?
पीटर टेलर

3
यदि आप कहते हैं "इनपुट या तो एक या दो सकारात्मक पूर्णांक मानों को अल्पविराम द्वारा अलग किया जाएगा (उदाहरण 9 या 8,4)।" तब हमें एक के रूप में लेने में सक्षम होना चाहिए, और इसके बारे में चिंता करने की ज़रूरत नहीं है कि "आपका कार्यक्रम मजबूत होना चाहिए - आपको इनपुट को मान्य करना चाहिए ..." एक या दो नंबरों को संभालने से परे।
एंडोडा

1
@PeterTaylor -+-दो का प्रतिनिधित्व करेगा, क्योंकि इसके माध्यम से एक ऊर्ध्वाधर रेखा और एक क्षैतिज स्कोर है। बेस 1 में केवल ऊर्ध्वाधर रेखाएँ होंगी। @AndoDaan संशोधित।
सीन लैथम

ठीक है, --- --- --- --- --- ---तब। अन्य आधारों के साथ संगतता के लिए आपको b-1ऊर्ध्वाधर लाइनों के माध्यम से क्षैतिज हड़ताल करना चाहिए । यदि यह असंगत होने का इरादा है तो आपको स्पष्ट रूप से बताना चाहिए।
पीटर टेलर

मैंने उसे किया। क्षमा करें, मुझे लगा कि यह निहित है।
सीन लाथम

जवाबों:


4

CJam 103 85 72 वर्ण

इसे http://cjam.aditsu.net/ पर आज़माएं ।

मूल

q","/(i:A\_,{~i}{;5}?:B_@*{(_{" |"*S"l"++AB/*AB%}{;MA}?\:J" |l""-+ "er\" |"*N+_J\+@2$+@J\+++"l"Ser}{;}?

रिक्त स्थान के लिए रिक्त स्थान, लाइनों और एल के साथ टैली के एक सेट को परिभाषित करके काम करता है जो रिक्त स्थान रहना चाहिए। फिर दूसरी पंक्ति बनाने के लिए एर (ट्रांसलिट्रेशन) फ़ंक्शन का लाभ उठाता है। अधिकांश अक्षम भाग 1 और 0 विशेष मामलों से निपट रहे हैं। जैसे ही मैं इसे सुधारूंगा, इसे संपादित करूंगा। युक्ति मुझे यह महसूस करने में बहुत लंबा समय लगा: क्योंकि दूसरा इनपुट 1 अनंत जैसा है या पहला इनपुट +1 है, जब यह 1 के बराबर होता है तो इसे पुनर्परिभाषित करता है।

अल्पविराम सीमांकित के साथ अब तक सबसे बेहतर

l",":G/(i:A\_5a?~i:B_@*{(_" |":K*\{SG++AB/*AB%}{A}?\_KG+"-+ "er[\GSer_@@M]\K*N+*}{;}?

अंतरिक्ष में सीमांकित इनपुट के साथ अब तक सबसे बेहतर

स्वाभाविक रूप से CJam वास्तव में अंतरिक्ष सीमांकित इनपुट के लिए डिज़ाइन किया गया है। इनपुट को 20,3 के बजाय 20 3 पर रखना एक बहुत बड़ा लाभ है।

ri:Aq_5s?S-i(_)A)?:B*{B(" |":K*STs++ABmd@@*_K"-+"er[\_@@M]\K*N+*TsSer}M?

5

अजगर 2 - 111 108 119 144 140 136 135 134 - यह कोशिश करो

ठीक है, चलो इसे आजमाएँ:

i=input()
n,b=[(i,5),i][i>[]]
o=b-1
a=[n,n%b][b>1]*' |'
m=(b>1)*n/b
s=(' |'*o+'  ')*m+a
print(s+'\n'+('-+'*o+'- ')*m+a+'\n'+s)*(b*n>0)

संपादित करें: मैं अनदेखी की है कि वहाँ कोई उत्पादन होना चाहिए, अगर n==0या b==0। इससे मुझे 11 किरदार निभाने हैं। :(

संपादित करें: ठीक है, टिप्पणियों में उल्लिखित दूसरे मुद्दे को ठीक करने के बाद मेरा समाधान मूल रूप से बीटडिम्यूज से एक में परिवर्तित हो गया।


यह तब नया संकेत देता है जब या तो इनपुट (या दोनों) शून्य होते हैं जो चुनौती के अनुसार अवांछित होते हैं। इसके अलावा, क्या होगा अगर केवल एक ही नंबर प्रोग्राम में इनपुट हो?
बीटडिम्यूज

1
यह तब विफल हो जाता है जब दूसरा मान छोड़ा जाता है ( bइस मामले में 5 होना चाहिए)। मैं प्रश्न में इसे और स्पष्ट कर दूंगा। संपादित करें: ओह, कोई बात नहीं, आपने इसे ठीक कर दिया जैसे मैंने यह टिप्पणी की थी!
सीन लाथम

यह कौन सा पायथन है?
बीटा डेके

यह पायथन 2.7.8 है। - ओह, बहुत अंत में एक छोटी सी गलती थी ...
फाल्को

1
यदि यह अजगर 2.x है तो क्या आप n/bइसके बजाय का उपयोग करके एक और चरित्र को नहीं बचा सकते हैं n//b?
एमिल

5

दे घुमा के, 239 228 199 189 188

यहाँ मेरा प्रयास है, इसे बहुत बड़ा किया जा सकता है।

नोट: दूसरी पंक्ति घटाना नहीं है 2 से 5, यह एक सेट डिफ़ॉल्ट मान है, तो $2खाली है!

n=$1
b=${2-5}
((n<1&b<1))&&exit
while ((n>b&b>1));do
n=$[n-b]
x+=\
y+=-
for i in `seq $[b-1]`;{
x+='| '
y+=+-
}
x+=\
y+=\
done
for j in `seq $n`;{
x+=' |'
y+=' |'
}
echo -e "$x\n$y\n$x"

के {1..$n}बजाय काम करता है `seq $n`?
फ़ूजएक्सएक्सएल

@FUZxxl दुर्भाग्य से नहीं, h=8;echo {1..$h}आउटपुट{1..8}

यह अच्छा नहीं है।
फूजएक्सएक्सएल

3

पायथन - 171 143

i=input();t,b=i if[0]<i else(i,5);b=[b,t+1][b==1];l,d,m,o=' |',t/b,t%b,b-1;r=(l*o+'  ')*d+l*m
if t*b>0:print r,'\n',('-+'*o+'- ')*d+l*m,'\n',r

कार्यक्रम बहुत सीधा-आगे है:

  • इनपुट प्राप्त करें और अनपैक करने का प्रयास करें t,b। यदि वह विफल रहता है, तो बस सही मान निर्दिष्ट करें।
  • यदि आधार था 1, तो उसके मूल्य को ऐसी चीज़ में बदलें जो सभी ऊर्ध्वाधर लाइनों को आसानी से संभाल सके ( t+1)।
  • कुछ चर सेट करें और नीचे और ऊपर के खंडों को बनाएं।
  • बाहर प्रिंट हिसाब अगर दोनों tऔर bगैर शून्य हैं।

EDIT 1: कुछ खेलने के आसपास के inputबजाय फ़ंक्शन का उपयोग करें raw_input

संपादित करें 2: मेरी गैर-शून्य जाँच के साथ एक छोटे बग को इंगित करने के लिए फल्को को धन्यवाद। अब हमारा कोड मूल रूप से समान है, कुछ चर नाम और कुछ छोटे तर्क।

संपादित करें 3: के लिए धन्यवाद कैसे अजगर दृश्यों और विभिन्न प्रकार के तुलना में, हम तुलना कर सकते हैं iएक करने के लिए listहमारे के संक्षिप्त संस्करण प्राप्त करने के लिए try...exceptब्लॉक।

यहाँ ungolfed संस्करण है:

i=input()

# If True, `i` must be a list
if [0]<i:
    t,b=i
# Otherwise, we know its a number (since `list` comes after `int` lexicographically.)
else:
    b=5
    t=i

b = b if b==1 else t+1
l=' |'
d=t/b
m=t%b
o=b-1

r=(l*o+'  ')*d+l*m
if t and b:
    print r,'\n',('-+'*o+'- ')*d+l*m,'\n',r

मुझे लगता t&bहै कि False10,5 के लिए है। अन्यथा हमारे समाधान जुट रहे हैं! ;)
फाल्को

@ फालो तुम दोनों मायने में सही हो! आप जानते हैं कि वे महान दिमाग के बारे में क्या कहते हैं।
BeetDemGuise 13

यह वास्तव में बहुत अच्छा होगा अगर हम परीक्षण करने के लिए एक छोटा रास्ता मिल सकता है अगर iअदिश या एक सूची है। तब हम try ... exceptराक्षस को गिरा सकते थे ।
फाल्को

@ फाल्को मुझे लगता है कि मुझे 1 बार बेहतर जांच मिली। A listहमेशा एक इंट से बड़ा होता है। इसके अलावा, listलिपिक क्रम में तुलना की जाती है। इसलिए यदि हम तुलना [0]<iकरते हैं Falseतो iयह हमेशा वापस आ जाएगी यदि एक संख्या है और Trueयदि iएक सूची है (गैर-शून्य प्रथम तत्व के साथ)।
बीटडिम्यूज

1
महान! मैंने आपके दृष्टिकोण को और छोटा कर दिया। अच्छा सामूहिक कार्य! :)
फाल्को

3

जावा, 343

class C{public static void main(String[]a){long n=new Long(a[0])+1,b=a.length>1?new Long(a[1]):5;if(b>0){if(b<2)b=(int)2e9;int i;for(i=1;i<n;i++)p(i%b>0?" |":"  ");p("\n");for(i=1;i<n-n%b;i++)p(i%b>0?"-+":"- ");if(n>b)p("- ");for(i=1;i<n%b;i++)p(" |");p("\n");for(i=1;i<n;i++)p(i%b>0?" |":"  ");}}static void p(String s){System.out.print(s);}}

कम गोल्फ वाला:

class C {
  public static void main(String[] a) {
    long n=new Long(a[0])+1, b=a.length>1 ? new Long(a[1]) : 5;
    if(b>0) {
      if(b<2) b=(int)2e9; // if the base is 1, pretend the base is 2 billion
      int i;
      for(i=1;i<n;i++) p(i%b>0 ? " |" : "  ");
      p("\n");
      for(i=1;i<n-n%b;i++) p(i%b>0 ? "-+" : "- ");
      if(n>b) p("- ");
      for(i=1;i<n%b;i++) p(" |");
      p("\n");
      for(i=1;i<n;i++) p(i%b>0 ? " |" : "  ");
    }
  }
  static void p(String s) {
    System.out.print(s);
  }
}

आप बनाकर कुछ बचा सकता है iएक longतो आप इसे अलग से घोषित करने के लिए नहीं है। i++%b>0अपने छोरों में इसे अलग से बढ़ाने के बजाय (और i++<n%bतीसरे लूप में) करके कुछ और । एक और एक का उपयोग करके b=b<2?(int)2e9:b
Geobits

3

पर्ल - 167 165 156

my($n,$b)=($ARGV[0]=~/(\d+)(?:,(\d+))?/,5);print$b>1?map{join(" ",($_ x($b-1))x int($1/$b)," | "x($1%$b))."\n"}(" | ","-+-"," | "):join" ",("---")x$1if$1*$b

ungolfed

my($n,$b) = ($ARGV[0] =~ /(\d+)(?:,(\d+))?/, 5);
print($b>1 ?
    map{ 
        join(" ",($_ x ($b-1)) x int($1/$b)," | " x ($1%$b))."\n"
    } (" | ","-+-"," | ") :
    join " ", ("---") x $1
) if $1 * $b

बेस 1 :( के लिए ऊर्ध्वाधर वाले के बजाय क्षैतिज रेखाएं प्रदर्शित करता है:
चीनी पर्ल गोथ

@chineseperlgoth हाँ, यह आवश्यकताओं में से एक है। Q.
Fozi

3

सी - 193

मुझे खेद है। 1 के लिए विशेष मामले से निपटना एक बुरा हैक था, इसलिए मुझे लगता है कि यह एक बेहतर दृष्टिकोण के साथ अधिक गोल्फ हो सकता है। साथ ही, इस कोड में आउटपुट की शुरुआत में एक नई लाइन शामिल है, इसलिए यदि इसकी अनुमति नहीं है, तो कृपया मुझे बताएं।

बेशक, बहुत बदसूरत दिखने वाले परिभाषित हमेशा मदद करते हैं :)

वर्ण गणना में केवल आवश्यक स्थान और नई लाइनें शामिल हैं।

#define P printf(
#define L P" |")
#define A P"\n");for(i=0;i<a;)b==1?i++,L:i++&&i%b==0?P
i;
main(a,b)
{
    scanf("%d,%d",&a,&b)<2?b=5:!b?a=0:a;
    if(a){
    A"  "):L;
    A"- "):a%b&&i>a/b*b?L:P"-+");
    A"  "):L;}
}

मानों में से एक शून्य होने पर आपका कोड नई सूचियों को मुद्रित करता है। यह कथित रूप से अस्वीकृत है। आपका समाधान अनुरूप नहीं है।
फूजएक्सएक्सएल

@FUZxxl तुम सही हो, मुझे याद है! यह बुरा जल्दी ठीक करने के लिए अब करना होगा। मुझे उम्मीद है कि मेरे पास बेहतर रास्ता खोजने के लिए जल्द ही समय होगा।
ऑलबेर्ट

मैं बहुत यकीन है कि आप को बदल कर कुछ वर्ण बचा सकता है printfके साथ puts, और जगह returnएक त्रिगुट ऑपरेटर के साथ।
मिलिनन

@millinon के साथ समस्या putsयह है कि यह हर बार एक नई लाइन जोड़ता है :( और ternary ऑपरेटर के लिए, उनके अंदर returns या fors जोड़ना संभव नहीं है ! आपकी टिप्पणी ने मुझे कुछ और पात्रों को बचाने का विचार दिया है। returnहालांकि निकालकर आसानी से । धन्यवाद!
Allbeert

2

C # 271bytes

सबसे कम नहीं, मैं इनपुट रीडिंग को गोल्फ नहीं कर सकता क्योंकि इसे इनपुट के रूप में 0 स्वीकार करने की आवश्यकता है।

using C=System.Console;class P{static void Main(){var L=C.ReadLine().Split(',');int t=int.Parse(L[0]),f=L.Length>1?int.Parse(L[1]):5,r=3,i;for(var R="";t*f>0&r-->0;C.WriteLine(R.TrimEnd()))for(R="",i=0;i<t;R+=r==1&i++<t-t%f?(i%f<1?"- ":"-|"):i%f<1?"  ":" |")f+=f<2?t:0;}}

प्रारूपित कोड:

using C=System.Console;

class P
{
    static void Main()
    {
        var L=C.ReadLine().Split(',');
        int t=int.Parse(L[0]),f=L.Length>1?int.Parse(L[1]):5,r=3,i;

        for(var R="";t*f>0&r-->0;C.WriteLine(R.TrimEnd()))
            for(R="",i=0;i<t;R+=r==1&i++<t-t%f?(i%f<1?"- ":"-|"):i%f<1?"  ":" |")
                f+=f<2?t:0;
    }
}

1

लुआ - 219 203 बाइट्स

मैं "|" की बी प्रतियों की डी प्रतियां बनाने के लिए गया, फिर "आर" की प्रतियां जोड़ें। अतं मै। मुझे ऐसा लग रहा है कि शायद मुझे "tally up" "|" के साथ एक समय में एक स्ट्रिंग में जाना चाहिए था।

l=' |'s=string.rep _,_,a,b=io.read():find'(%d+)%D*(%d*)'b=tonumber(b)or 5 d=(a-a%b)/b f=b>1 and s(s(l,b-1)..'  ',d)g=b>1 and s(s('-+',b-1)..'- ',d)r=b>1 and a%b or a e=s(l,r)..'\n'print(f..e..g..e..f..e)

ungolfed:

l=' |'          --the base string
s=string.rep    --string.rep will be used a lot, so best shorten it

_,_,a,b=io.read():find'(%d+)%D*(%d*)' --reads a,b I'm probably way of the mark with this one

b=tonumber(b)or 5

d=(a-a%b)/b -- shorter than math.floor(a/b), d equal the vertical mark

f=b>1 and s(s(l,b-1)..'  ',d) or '' --creates d multiples of b multiples of "|" more or less
g=b>1 and s(s('-+',b-1)..'- ',d)or''--same as above but with the middle "-+-"

r=b>1 and a%b or a --idk maybe i should set r before d(a- a%b )/b

e=s(l,r)..'\n'  -- makes the remainder string, notice that if b==1  then e will output all the "|" 

print(f..e..g..e..f..e) -- here's where the real magic happens!

नमूना:

c:\Programming\AnarchyGolfMine>lua test.lua
13,5
 | | | |   | | | |   | | |
-+-+-+-+- -+-+-+-+-  | | |
 | | | |   | | | |   | | |


c:\Programming\AnarchyGolfMine>lua test.lua
6,2
 |   |   |
-+- -+- -+-
 |   |   |


c:\Programming\AnarchyGolfMine>lua test.lua
18,1
 | | | | | | | | | | | | | | | | | |
 | | | | | | | | | | | | | | | | | |
 | | | | | | | | | | | | | | | | | |

1
क्या आप थोड़ा और अधिक पठनीय और अधूरा संस्करण पोस्ट कर सकते हैं? लुआ में गोल्फ दिलचस्प लगता है!

@Aalandro ने किया। और धन्यवाद, इसने मुझे याद किया कुछ चीजें मिल गईं।
एंडोआन

1

जावास्क्रिप्ट (193)

यह अत्यधिक जटिल हो सकता है।

s=prompt().split(",");a=+s[0];b=s[1];b=b?+b:5;o=b>1;v=" | ";q=w="";for(g=~~(a/b),c=o?a-g:a;g+1;g--,q+=" ",w+=" ")for(i=o;c&&i<b;i++)c--,q+=v,w+=g&&o?"-+-":v;if(a&&b)console.log(q+'\n'+w+'\n'+q)

टिप्पणी संस्करण

s=prompt().split(",");
a=+s[0];
b=s[1];
b=b?+b:5;   // convert b to int and default to 5
o=b>1;      // special handling for b0 and b1
v=" | ";
q=w="";
// calculate number of lines and number of groups
for(g=~~(a/b),c=o?a-g:a;g+1;g--,q+=" ",w+=" ")
    for(i=o;c&&i<b;i++)
        c--,  // decrease line count
        q+=v,
        w+=g&&o?"-+-":v; // use " | " for last group and "-+-" for others
if(a&&b) // handle b0
    console.log(q+'\n'+w+'\n'+q)

1

अजगर - 127 123 122

बस थोड़ा सा अजगर संस्करण के साथ चुपके।

संपादित करें: फिक्स्ड 0 कुछ भी नहीं मुद्रण और rejigger, एक ही लंबाई को समाप्त कर दिया

k=input()
k=i,j=((k,5),k)[k>[]]
for m in[' |','-+',' |']*all(k):
 print(m*(j-1)+m[0]+' ')*(i/j*(j>1))+' |'*(i%(j+(j<2)*i))

0

सी (207 अक्षर)

पहले की न्यूलाइन exitकेवल सुपाठ्यता के लिए है।

#define P printf(
#define t(v)for(a=c;b<=a;a-=b)a-c&&P" "),P v+1),q(b,v);q(a," |");P"\n");
q(n,c){while(n--)P c);}a;b;c;main(){scanf("%d,%d",&c,&b)<2?b=5:0;b&&c||
exit();b==1?b=32767:0;t("| ")t("+-")t("| ")}

scanfAllbert से चोरी बेशर्मी का उपयोग करें। ध्यान दें कि यह समाधान gcc के साथ संकलित नहीं करता है क्योंकि यह किसी भी के लिए एक noxistant प्रोटोटाइप को लागू करने की कोशिश करता हैexit । एक काम कर रहे सी कंपाइलर जैसे संकलनtcc । साथ ही, यह फ़ंक्शन 64 बिट प्लेटफार्मों पर काम कर भी सकता है और नहीं भी। देखभाल के साथ उपयोग करें।

यहाँ मूल ungolfed कार्यान्वयन है जो इस पर आधारित है:

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

static void
tally_line(int base, int count, const char *str)
{
     int follower = 0, i;

     /* full tallies first */
     for (; count >= base; count -= base) {
          if (follower++)
               putchar(' ');

          /* only print second character */
          printf(str + 1);

          for (i = 0; i < base; i++)
               printf(str);
     }

     /* partial tally */
     for (i = 0; i < count; i++)
          printf(" |");

     /* newline */
     puts("");
}

extern int
main(int argc, char **argv)
{
     int base, count;

     /* do away with program name */
     count = atoi(*++argv);

     base = argc - 3 ? 5 : atoi(*++argv);

     /* remove 0 later */
     base | count || exit(0);

     /* a crossed-out tally never appears for large numbers */
     if (base == 1)
          base = 32767;

     tally_line(base, count, "| ");
     tally_line(base, count, "+-");
     tally_line(base, count, "| ");

     return (EXIT_SUCCESS);
}

0

पायथन 2 , 134 126 123 114 बाइट्स

lambda i,j=5,a=" |":"\n".join(("",(a*~-j+"  ","-+"*~-j+"- ")[x%2]*(i/j))[j>1]+a*(i,i%j)[j>1]for x in(0,1,2)if i*j)

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

पुराना सवाल जो मुझे पता है, लेकिन वैसे भी जाने के लिए मजेदार है। जॉइन करने के बाद मैंने जो कुछ ट्रिक्स सीखी हैं, उन्हें आजमाने का मौका।

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