1P5: नेस्टेड बॉक्स


53

यह कार्य प्रथम आवधिक प्रीमियर प्रोग्रामिंग पहेली पुश का हिस्सा है ।

आपको निम्न प्रारूप में वस्तुओं का एक पदानुक्रम मिलता है:

2
Hat
1
Gloves

जिसे बॉक्स में डालने की जरूरत है, जैसे:

.------------.
| Hat        |
| .--------. |
| | Gloves | |
| '--------' |
'------------'

इनपुट फॉर्मेट में नंबर एक बॉक्स को शुरू करते हैं, जितने नंबर निर्दिष्ट होते हैं उतने आइटम के साथ। पहले बॉक्स में दो आइटम होते हैं (टोपी और वह बॉक्स जिसमें दस्ताने होते हैं), दूसरे में केवल एक ही आइटम होता है - दस्ताने।

जैसा कि देखा जा सकता है, बक्से बक्से के अंदर भी रह सकते हैं। और वे हमेशा गोल होते हैं ... जैसे (नुकीले कोने एक घाव का खतरा होते हैं और हम ऐसा नहीं चाहेंगे)।

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


विशिष्टता

  • निम्नलिखित पात्रों से बक्से बनाए जाते हैं:

    • | (U + 007C) का उपयोग ऊर्ध्वाधर किनारों के निर्माण के लिए किया जाता है।
    • - (U + 002D) का उपयोग क्षैतिज किनारों के निर्माण के लिए किया जाता है।
    • ' (U + 0027) गोल निचले कोने हैं।
    • . (U + 002E) गोल ऊपरी कोने हैं।

    एक बॉक्स इस तरह दिखता है:

    .--.
    |  |
    '--'
    

    ध्यान दें कि जबकि यूनिकोड में गोल कोने और उचित बॉक्स-ड्राइंग वर्ण हैं, यह कार्य केवल ASCII में है। जितना मैं यूनिकोड से प्यार करता हूँ मुझे एहसास है कि वहाँ भाषाएँ और वातावरण हैं जो पिछले दूसरे दशक में काफी नहीं आए थे।

  • बक्से में उन वस्तुओं का अनुक्रम हो सकता है जो या तो पाठ या अन्य आइटम हैं। एक बॉक्स में व्यक्तिगत आइटम ऊपर से नीचे तक प्रदान किए जाते हैं। अनुक्रम A, B, C इस प्रकार प्रस्तुत करता है:

    .---.
    | A |
    | B |
    | C |
    '---'
    

    यह निश्चित रूप से नेस्टेड बॉक्स पर भी लागू होता है, जो पाठ की तरह एक आइटम हैं। तो अनुक्रम ए, बी, बॉक्स (सी, बॉक्स (डी, ई)), एफ निम्नानुसार प्रस्तुत करेगा:

    .-----------.
    | A         |
    | B         |
    | .-------. |
    | | C     | |
    | | .---. | |
    | | | D | | |
    | | | E | | |
    | | '---' | |
    | '-------' |
    | F         |
    '-----------'
    
  • बक्से अपने आकार को सामग्री में समायोजित करते हैं और नेस्टेड बक्से हमेशा अपने माता-पिता के आकार तक विस्तारित होते हैं। सामग्री से पहले और बाद में हमेशा एक स्थान होता है, ताकि न तो पाठ और न ही नेस्टेड बॉक्स बाहरी बॉक्स के किनारे के बहुत करीब हों। संक्षेप में, निम्नलिखित गलत है:

    .---.
    |Box|
    '---'
    

    और निम्नलिखित सही है:

    .-----.
    | Box |
    '-----'
    

    बहुत अच्छा लग रहा है, :-)

  • पाठ आइटम ( नीचे इनपुट देखें) को बिल्कुल पुन: प्रस्तुत करना होगा।

  • हमेशा एक एकल शीर्ष-स्तरीय बॉक्स (cf. XML) होता है। हालाँकि, एक बॉक्स में कई अन्य बॉक्स हो सकते हैं।

इनपुट

  • इनपुट मानक इनपुट पर दिया गया है; किसी फ़ाइल से रीडायरेक्ट की जाने वाली आसान जांच के लिए।

  • इनपुट को लाइन-वार दिया जाता है, जिसमें प्रत्येक लाइन को वर्तमान बॉक्स में डालने के लिए टेक्स्ट आइटम का प्रतिनिधित्व करता है या एक नया बॉक्स खोलता है।

  • हर लाइन को एक लाइन ब्रेक द्वारा समाप्त किया जाता है।

  • टेक्स्ट आइटम को एक पंक्ति द्वारा चिह्नित किया जाता है जिसमें एक संख्या नहीं होती है (नीचे देखें)। पाठ वर्णमाला वर्ण, स्थान और विराम चिह्न ( .,-'"?!()) का उपयोग करता है । पाठ एक स्थान के साथ शुरू या समाप्त नहीं होगा और इसमें हमेशा कम से कम एक वर्ण होगा।

  • एक बॉक्स एकल पंक्ति से शुरू होता है जिसमें एक संख्या होती है। संख्या बॉक्स का आकार बताती है, अर्थात निम्नलिखित आइटमों की संख्या जो इसमें डाली जाती है:

    2
    A
    B
    

    दो टेक्स्ट आइटम के साथ एक बॉक्स देता है:

    .---.
    | A |
    | B |
    '---'
    

    एक बॉक्स में हमेशा कम से कम एक आइटम होगा।

  • बक्से का अंत स्पष्ट रूप से एक पंक्ति के साथ चिह्नित नहीं है; इसके बजाय बक्सों को स्पष्ट रूप से बंद कर दिया जाता है क्योंकि उनमें निर्दिष्ट संख्या में आइटम डाल दिए जाते हैं।

  • एक बॉक्स हमेशा केवल एक आइटम होता है, भले ही इसमें कितने आइटम हों। उदाहरण के लिए

    3
    A
    4
    a
    b
    c
    d
    B
    

    एक बॉक्स में तीन आइटम होंगे, जिनमें से दूसरा एक बॉक्स होगा जिसमें चार आइटम होंगे।

    नेस्टिंग इस तथ्य को भी प्रभावित नहीं करता है कि एक बॉक्स सिर्फ एक आइटम है।

सीमाएं

  • अधिकतम घोंसले का स्तर पांच है । यानी एक-दूसरे के अंदर अधिकतम पांच बक्से हैं। इसमें सबसे बाहरी भी शामिल है।

  • प्रति बॉक्स में अधिकतम दस आइटम हैं।

  • पाठ आइटम में अधिकतम 100 वर्ण हैं।

उत्पादन

  • आउटपुट रेंडर बॉक्स है जिसमें ऊपर उल्लिखित नियमों के अनुसार सभी युक्त और नेस्टेड आइटम शामिल हैं।
  • आउटपुट मानक आउटपुट पर दिया जाना चाहिए और इसे बिल्कुल मिलान करना होगा। किसी भी अग्रणी या अनुगामी व्हाट्सएप की अनुमति नहीं है।
  • प्रत्येक पंक्ति को अंतिम सहित लाइन ब्रेक के साथ समाप्त किया जाना चाहिए।

जीतने की स्थिति

  • सबसे छोटा कोड जीतता है (अर्थात स्वीकृत उत्तर मिलता है)।

नमूना इनपुट 1

3
This is some text!
Oh, more text?
Just text for now, as this is a trivial example.

नमूना उत्पादन 1

.--------------------------------------------------.
| This is some text!                               |
| Oh, more text?                                   |
| Just text for now, as this is a trivial example. |
'--------------------------------------------------'

नमूना इनपुट 2

4
Extreme
nesting
3
of
boxes
4
might
lead
to
2
interesting
1
visuals.
Indeed!

नमूना आउटपुट 2

.--------------------------.
| Extreme                  |
| nesting                  |
| .----------------------. |
| | of                   | |
| | boxes                | |
| | .------------------. | |
| | | might            | | |
| | | lead             | | |
| | | to               | | |
| | | .--------------. | | |
| | | | interesting  | | | |
| | | | .----------. | | | |
| | | | | visuals. | | | | |
| | | | '----------' | | | |
| | | '--------------' | | |
| | '------------------' | |
| '----------------------' |
| Indeed!                  |
'--------------------------'

नमूना इनपुट 3

1
1
1
1
1
Extreme nesting Part Two

नमूना आउटपुट 3

.------------------------------------------.
| .--------------------------------------. |
| | .----------------------------------. | |
| | | .------------------------------. | | |
| | | | .--------------------------. | | | |
| | | | | Extreme nesting Part Two | | | | |
| | | | '--------------------------' | | | |
| | | '------------------------------' | | |
| | '----------------------------------' | |
| '--------------------------------------' |
'------------------------------------------'

नमूना इनपुट 4

3
Foo
2
Bar
Baz
2
Gak
1
Another foo?

नमूना उत्पादन 4

.----------------------.
| Foo                  |
| .------------------. |
| | Bar              | |
| | Baz              | |
| '------------------' |
| .------------------. |
| | Gak              | |
| | .--------------. | |
| | | Another foo? | | |
| | '--------------' | |
| '------------------' |
'----------------------'

टेस्ट स्क्रिप्ट

चूंकि विवरण प्राप्त करना सही हो सकता है इसलिए कई बार हम ( वेंटरो और मेरे) ने एक परीक्षण स्क्रिप्ट तैयार की है जो आप सही है या नहीं यह जांचने के लिए अपना समाधान चला सकते हैं। यह पॉवरशेल स्क्रिप्ट और बैश स्क्रिप्ट दोनों के रूप में उपलब्ध है । मंगलाचरण है: <test-script> <program invocation>

अद्यतन: परीक्षण लिपियों को अद्यतन किया गया है; कई परीक्षण मामले थे जिन्होंने मेरे द्वारा परिभाषित सीमाओं का सम्मान नहीं किया। पॉवरशेल परीक्षण स्क्रिप्ट ने परिणाम की जाँच के लिए केस-संवेदी तुलना का उपयोग नहीं किया। मुझे उम्मीद है कि अब सब कुछ ठीक है। परीक्षण मामलों की संख्या घटाकर 156 कर दी गई, हालांकि अब अंतिम एक काफी ... बड़ा है।

अद्यतन 2: मैंने अपना परीक्षण-केस जनरेटर अपलोड किया । C # में लिखा है , .NET 2 रनटाइम को लक्षित कर रहा है। यह मोनो पर चलता है। यह लोगों को उनके कार्यान्वयन का परीक्षण करने में मदद कर सकता है। एक निश्चित सबसे खराब स्थिति के रूप में आप जिस कार्य को करने की कोशिश कर सकते हैं, उसमें सीमाएँ दी गई हैं:

nb.exe 1 10 10 5 100 100 | my invocation

जो केवल अंतरतम स्तर तक बक्से उत्पन्न करेगा और प्रति बॉक्स अधिकतम आइटम और पाठ आइटम की अधिकतम लंबाई दोनों का उपयोग करेगा। मैंने इस टेस्ट केस को टेस्ट स्क्रिप्ट में शामिल नहीं किया, हालाँकि, यह काफी बड़ा है और आउटपुट भी बड़ा है।

अद्यतन 3: मैंने पॉवरशेल परीक्षण स्क्रिप्ट को अद्यतन किया था, जो इस बात पर निर्भर करती थी कि स्क्रिप्ट में लाइन एंडिंग कैसे होती है और प्रिंट की गई समाधान क्या लाइन समाप्त होती है। अब यह दोनों के लिए अज्ञेय होना चाहिए। भ्रम के लिए फिर से क्षमा करें।


आप कहते हैं कि बक्से को उनके आकार को उनकी सामग्री में समायोजित करना चाहिए। फिर भी अंतिम उदाहरण में, पहला आंतरिक बॉक्स बाहरी बॉक्स के आकार को समायोजित करता है। तो, नेस्टेड बॉक्सिंग को अपना आकार कैसे मिलता है?
जुआन

@ जुआन: इसे पकड़ने के लिए धन्यवाद। कमाल है कि फिसल जाता है जैसे अभी भी होता है। संपादित :-)
जॉय

1
@ जोय एक बूढ़ा लेकिन एक अच्छा है। उम्मीद है कि यह हमारे कुछ नए उपयोगकर्ताओं को अच्छे, अच्छी तरह से निर्दिष्ट प्रश्न लिखने के लिए प्रेरित कर सकता है। :-)
गारेथ

@ गैरेथ, मुझे उन लोगों के बारे में फिर से लिखने के लिए निश्चित रूप से प्रयास करना चाहिए। लेकिन एक अच्छी तरह से निर्दिष्ट प्रश्न, परीक्षण मामलों, संदर्भ कार्यान्वयन और सामान (जिन चीजों को मैं एक प्रतियोगिता के लिए आवश्यक मानता हूं , लेकिन उस दृश्य को कई लोगों ने साझा नहीं किया है;)) में समय लगता है। यूनी में रहते हुए यह बहुत आसान था: डी
जॉय

जवाबों:



26

अजगर, 204 चरस

def P(n):x=raw_input();return eval('[(n+".","","-")]'+'+P(n+"| ")'*int(x))+[(n+"'",'','-')]if'0'<x<':'else[(n,x,' ')]
r=P('')
for q,t,f in r:print q+t+f*(max(len(2*x+y)for x,y,a in r)-len(2*q+t))+q[::-1]

Pत्रिकोणीय की एक सूची देता है, जिनमें से प्रत्येक एक पंक्ति उपसर्ग / प्रत्यय (प्रत्यय के पूर्ववर्ती जा रहा प्रत्यय), कुछ पंक्ति पाठ, और एक पंक्ति भरण चरित्र है। सभी त्रिभुजों की गणना करने के बाद, वे सभी रेखाओं को समान लंबाई बनाने के लिए सही वर्णों का उपयोग करके मुद्रित किए जाते हैं।

Ungolfed संस्करण:

def get_lines(prefix):
  line=raw_input()
  result=[]
  if line.isdigit():
    result.append((prefix+'.', '', '-'))
    for i in xrange(int(line)):
      result += get_lines(prefix + '| ')
    result.append((prefix+"'", '', '-'))
  else:
    result.append((prefix, line, ' '))
  return result
lines=get_lines('')
width=max(2*len(prefix)+len(text) for prefix,text,fill in lines)
for prefix,text,fill in lines:
  print prefix+text+fill*(width-2*len(prefix)-len(text))+prefix[::-1]

वाह, यह जल्दी था। और Pवहाँ के साथ दिलचस्प विचार ।
जोई

वाह, वास्तव में। यह दिलचस्प है, क्या आप अनगुल्ड संस्करण को पोस्ट कर सकते हैं? मैं यह समझना चाहता हूं कि इवेल बिट कैसे काम करता है। हे, मेरा अधूरा अजगर समाधान 1500+ वर्ण है :( हालांकि मैं एक पूरी तरह से अलग (और अक्षम) दृष्टिकोण लेता हूं
केसी

@ कैसी: eval एक लूप के लिए सिर्फ एक गोल्फ शॉर्टकट है, यह मौलिक नहीं है। मैं एक सेकंड में एक ungolfed संस्करण पोस्ट करूँगा ...
कीथ रान्डेल


6

एपीएल (78)

{∧/⎕D∊⍨I←⍞:{∆,('-'⍪⍵⍪'-'),∆←'.|'''/⍨1(⊃⍴⍵)1}⍕⍪/{⍵↑[2]⍨⌈/⊃∘⌽∘⍴¨∆}¨∆←∇¨⍳⍎I⋄⍉⍪I}⍬


मैं समाधान का परीक्षण करने के लिए tio.run पर चलने के लिए इसे प्राप्त नहीं कर सकता। अन्यथा मैं स्वीकृत उत्तर को भी बदल देता।
जॉय

5

पायथन - 355 314 259 वर्ण

w=0
def p(n,l):
 global w;f=[(l-1,0)]
 for k in' '*n:
  i=raw_input()
  try:f+=p(int(i),l+1)
  except:f+=[(l,i)];w=max(w,4*l+len(i))
 return f+[(l-1,1)]
for l,s in p(input(),1):p=w-4*l-2;print'| '*l+(".'"[s]+'-'*p+".'"[s]if s<2 else s+' '*(p+2-len(s)))+' |'*l

लगभग 100 चार कमी, अच्छी नौकरी।
केसी

5

रूबी 1.9, 229 228 226 223 222

g=->n{(1..n).map{g[Integer l=gets.chop]rescue l}}
w=->b{b.bytesize rescue b.map{|e|w[e]}.max+4}
p=->b,c{r=c-2
[?.+?-*r+?.,*b.map{|i|p[i,c-4]}.flatten.map{|k|"| #{k} |"},?'+?-*r+?']rescue[b.ljust(c)]}
puts p[b=g[1][0],w[b]]

5

C, 390 366 363 वर्ण

#define F(n)for(int i=n;i--;)
#define H(n,s,a...)F(n)printf(s);printf(a);
#define I(s)H(v,"| ",s)H(l-2,"-",s)J
#define J H(v," |","\n")
S[1<<17][26],N[1<<17],P,a;E(p){int l=strlen(gets(S[p]));if(sscanf(S[p],"%d",N+p))F(N[p])l<(a=E(++P))?l=a:l;return l+4;}R(p,v,l){if(N[p]){I(".")F(N[p])R(++P,v+1,l-4);I("'")}else{H(v,"| ","%-*s",l,S[p])J}}main(){R(P=0,0,E(0)-4);}

संकलन gcc -std=gnu99 -w file.c

कीथ के संस्करण के करीब भी नहीं है, लेकिन हे, यह अच्छा है राजभाषा


यहां 160 में से केवल 159 टेस्ट पास किए।
जॉय

आउच। मुझे लगता है कि अब यह ठीक है। मैं चरम मामले में \ 0 के लिए स्थान आवंटित करना भूल रहा था।
esneider

अभी भी वही दिखता है, टेस्ट # 142 विफल रहता है। वैसे, वास्तविक चरम मामला भी मौजूद नहीं है क्योंकि इसमें 10 MiB इनपुट और 78 MiB आउटपुट हैं। मैं नहीं चाहता था कि टेस्ट स्क्रिप्ट बड़ी हो ;-)
जॉय

अजीब, मैं कर 160/160 passedरहा हूँ (मैं 100 वर्णों की एक स्ट्रिंग का मतलब है, जो वैसे भी मौजूद नहीं है)
esneider

हम्म, अजीब है। X64 के FreeBSD 8.2-RELEASE #5: Sun Feb 27 10:40:25 CET 2011साथ gcc version 4.2.1 20070719 [FreeBSD]यहां। मैं 160 के लिए आपका शब्द ले लूंगा, फिर :-)। और वास्तव में 100 पात्रों के साथ एक परीक्षण मामला होना चाहिए (टेस्ट 143-147)।
जॉय

4

बहुत कार्यात्मक अजगर, 460 वर्ण

r=range
s=lambda x:isinstance(x,str)
w=lambda x:reduce(max,[len(i)if s(i)else w(i)+4 for i in x])
z=lambda b,x:''.join(b for i in r(x))
def g(n=1):
 t=[]
 for i in r(n):
  x=raw_input('')
  try:t+=[g(int(x))]
  except:t+=[x]
 return t
o=list.append
def y(c,m):
 f='| ';h=' |';e=z('-',m+2);a='.'+e+'.';b="'"+e+"'";t=[a]
 for i in c:
  if s(i):o(t,f+i+z(' ',m-len(i))+h)
  else:[o(t,f+j+h)for j in y(i,m-4)]
 return t+[b]
x=g()[0];m=w(x);print '\n'.join(y(x,m))

हम्म, यह मेरे लिए काम नहीं करता है |अक्षर सही ढंग से नहीं हैं। यह मेरे अजगर समाधान के समान है
केसी

2
वास्तव में, परीक्षण के किसी भी मामले को पारित नहीं करता है। eordano: हमने उन्हें शामिल किया ताकि कोई भी ऐसे उत्तर प्रस्तुत न करे जो अब सीधे गलत हैं।
जॉय

1
मुझे लगता है कि मैंने कोड का एक पुराना संस्करण चिपकाया है। अब काम करना चाहिए। अव्यवसायिक होने के बारे में क्षमा करें।
eordano

मेरे लिये कार्य करता है! अच्छा समाधान, मुझे कार्यात्मक दृष्टिकोण पसंद है।
केसी

वास्तव में, अब काम करता है।
जॉय

4

हास्केल, 297 वर्ण

f§(a,b)=(f a,b)
h c=(c,'-',c)
b l=h".":map(\(p,f,q)->("| "++p,f,q++" |"))l++[h"'"]
y[]s z=([(s,' ',"")],z)
y[(n,_)]_ z=b§foldr(\_(l,w)->(l++)§x w)([],z)[1..n]
x(a:z)=y(reads a)a z
m(p,_,q)=length$p++q
n®a@(p,c,q)=p++replicate(n-m a)c++q++"\n"
o(l,_)=l>>=(maximum(map m l)®)
main=interact$o.x.lines

जबकि गोल्फ, विधि बहुत सीधे आगे है। केवल सीमाएँ उपलब्ध स्मृति हैं।


4

सी # - 1005 859 852 782 वर्ण

using c=System.Console;using System.Linq;class N{static void Main(){new N();}N(){var i=R();c.WriteLine(i.O(0,i.G().W));}I R(){var s=c.ReadLine();int l=0,i=0;if(int.TryParse(s,out l)){var b=new I(l);for(;i<l;){b.m[i++]=R();}return b;}else{return new I(0,s);}}class P{public int W;public int H;}class I{public I[]m;bool z;string t;public I(int l,string r=""){z=l!=0;m=new I[l];t=r;}public P G(){var s=new P();if(z){var d=m.Select(i=>i.G());s.W=d.Max(y=>y.W)+4;s.H=d.Sum(y=>y.H)+2;}else{s.W=t.Length;s.H=1;}return s;}public string O(int l,int w){if(z){string s=A(l,"."+"-".PadRight(w-2,'-')+"."),e=s.Replace(".","'");foreach(var i in m){s+="\n"+i.O(l+1,w-4);}s+="\n"+e;return s;}else{return A(l,t.PadRight(w));}}}static string A(int l,string o){while(l-->0){o= "| "+o+" |";}return o;}}

मुझे इस पर एक और नज़र डालने की ज़रूरत है क्योंकि मुझे यकीन है कि इसमें सुधार किया जा सकता है, लेकिन यह मेरा शुरुआती गो थर्ड पास है।

Ungolf'd:

using c=System.Console;
using System.Linq;

class NestedBoxes
{
    static void Main()
    {
        new NestedBoxes();
    }
    NestedBoxes()
    {
        var item = ReadItem();
        c.WriteLine(item.Print(0, item.GetSize().Width));
    }
    Item ReadItem()
    {
        var line = c.ReadLine();
        int count = 0, i = 0;
        if (int.TryParse(line, out count))
        {
            var box = new Item(count);
            for (; i < count;)
            {
                box.items[i++] = ReadItem();
            }
            return box;
        }
        else
        {

            return new Item(0,line);
        }
    }
    class Size
    {
        public int Width;
        public int Height;
    }
    class Item
    {
        public Item[] items;
        bool isBox;
        string text;
        public Item(int size,string word="")
        {
            isBox = size != 0; items = new Item[size]; text = word;
        }
        public Size GetSize()
        {
            var s = new Size();
            if (isBox)
            {
                var sizes = items.Select(i => i.GetSize());
                s.Width = sizes.Max(y => y.Width) + 4; s.Height = sizes.Sum(y => y.Height) + 2;
            }
            else
            {
                s.Width = text.Length;
                s.Height = 1;
            }
            return s;
        }
        public string Print(int level, int width)
        {
            if (isBox)
            {
                string output = AddLevels(level, "." + "-".PadRight(width - 2, '-') + "."),
                        bottomLine = output.Replace(".", "'");
                foreach (var item in items)
                {
                    output += "\n" + item.Print(level + 1, width - 4);
                }
                output += "\n" + bottomLine;
                return output;
            } else {return AddLevels(level, text.PadRight(width)); }
        }
    }
    static string AddLevels(int level, string output)
    {
        while(level-->0)
        {
            output = "| " + output + " |";
        }
        return output;
    }
}

@ जॉय, हाँ, मुझे निश्चित रूप से फिर से इसके माध्यम से जाने की जरूरत है। कोशिश करने के लिए तर्क के साथ खेलने की जरूरत है और इसे भी काट दिया।
रेबेका चेर्नॉफ

मैं सी से परिचित नहीं हूँ, लेकिन जे एस में, आप कई वर बयान से एक के लिए, इस तरह संयोजित कर सकते हैं: var a = 1, b = 2, c = 3;। आप सी में एक ही बात नहीं कर सकते?
nyuszika7h

2
@ Nyuszika7H, यह C # है, C. C. आप इस varतरह अंतर्निहित बयानों को जोड़ नहीं सकते हैं । आप केवल तभी जोड़ सकते हैं जब उनके पास एक स्पष्ट प्रकार है जैसे कि जॉय का उपयोग करके उल्लेख किया गया है string b="",e=""
रेबेका चेर्नॉफ

@RebeccaChernoff: मैंने अन्य लोगों के जवाब पर काम किया, 689 अब।
निक लार्सन

@NickLarsen, अच्छा - लेकिन मैं नहीं देख रहा हूँ। q: मुझे अभी भी कुछ समय की जरूरत है खदान के माध्यम से जाने के लिए। यह मेरा प्रारंभिक तर्क था, मुझे यकीन है कि ऐसे स्थान हैं जहां मैं तर्क के बारे में होशियार हो सकता हूं, बस इसे ध्यान देने के लिए समय चाहिए।
रेबेका चेर्नॉफ

4

PHP, 403 388 306 chars

<?b((int)fgets(STDIN),'');foreach($t as $r)echo$r[0].str_pad($r[2],$w-2*strlen($r[0]),$r[1]).strrev($r[0])."\n";function b($c,$p){global$t,$w;$t[]=array($p.".","-");while($c--){if(($d=trim(fgets(STDIN)))>0)b($d,"| ".$p);else$t[]=array("| ".$p," ",$d);$w=max($w,strlen($d.$p.$p)+4);}$t[]=array($p."'","-");}

Ungolfed:

box((int)fgets(STDIN), '');

foreach($table as $row) {
    $prefix = $row[0];
    $pad = $row[1];
    $data = $row[2];
    echo $prefix . str_pad($data, ($width - 2*strlen($prefix)), $pad) . strrev($prefix)."\n";
}

function box($count,$prefix) {
    global $table, $width;
    $table[] = array($prefix.".","-");
    while($count--) {
        if(($data = trim(fgets(STDIN))) > 0) {
            box($data, "| ".$prefix);
        } else {
            $table[] = array("| ".$prefix, " ", $data);
        }
        $width = max($width,strlen($data.$prefix.$prefix)+4);
    }
    $table[] = array($prefix."'","-");
}
?>

मैंने कीथ से उपसर्ग-विचार उधार लिया है (क्या इसकी अनुमति है?), अन्यथा यह मूल रूप से बहुत अधिक है। अभी भी 300 से नीचे नहीं जा सका। इसके साथ अटक गया। आगे।


2
वैसे, कोड हर मामले में यहां सार्वजनिक है, इसलिए उधार विचारों की अनुमति है और शायद प्रोत्साहित भी किया जाता है। मुझे लगता है कि यह भी कुछ ऐसा है जो इस साइट को अन्य, समान लोगों से अलग करता है। एक व्यक्ति के रूप में हम एक ही समय में प्रतिस्पर्धा करते हैं और सहयोग करते हैं
जोए

3

PHP, 806 769 721 653 619 वर्ण

<?php function A($a,$b,$c,&$d){for($e=$b;$e>0;$e--){$f=fgets($a);if(false===$f){return;}$g=intval($f);if(0<$g){$h[]=A($a,$g,$c+1,$d);}else{$f=trim($f);$h[]=$f;$j=strlen($f)+4*$c;if($d<$j){$d=$j;}}}return $h;}$d=0;$h=A(STDIN,intval(fgets(STDIN)),1,&$d);function B($k,$c,$d){$f=str_pad('',$d-4*$c-2,'-',2);return C($k.$f.$k,$c,$d);}function C($f,$c,$d){$f=str_pad($f,$d-4*$c,' ');$f=str_pad($f,$d-2*$c,'| ',0);$f=str_pad($f,$d,' |');return $f;}function D($l,$c,$d){if(!is_array($l)){echo C($l,$c,$d)."\n";return;}echo B('.',$c,$d)."\n";foreach($l as $m){echo D($m,$c+1,$d);}echo B('\'',$c,$d)."\n";}D($h,0,$d);exit(0);?>

Ungolfed संस्करण:

<?php
function read_itemgroup($handle, $item_count, $depth, &$width) {

    //$items = array();

    for($i = $item_count; $i > 0; $i--) {
        $line = fgets( $handle );
        if(false === $line) {
            return;
        }

        $line_int = intval($line);
        if(0 < $line_int) {
            // nested group
            $items[] = read_itemgroup($handle, $line_int, $depth + 1, $width);
        }
        else {
            // standalone item
            $line = trim($line);
            $items[] = $line;

            // determine width of item at current depth
            $width_at_depth = strlen($line) + 4 * $depth;
            if($width < $width_at_depth) {
                $width = $width_at_depth;
            }
        }
    }

    return $items;
}
$width = 0;
$items = read_itemgroup(STDIN, intval(fgets( STDIN )), 1, &$width);

//var_dump($items, $width);

function render_line($corner, $depth, $width) {
    $line = str_pad('', $width - 4 * $depth - 2, '-', 2); // 2 = STR_PAD_BOTH
    return render_item($corner . $line . $corner, $depth, $width);
}

function render_item($line, $depth, $width) {
    $line = str_pad($line, $width - 4 * $depth, ' ');
    $line = str_pad($line, $width - 2 * $depth, '| ', 0); // 0 = STR_PAD_LEFT
    $line = str_pad($line, $width, ' |');
    return $line;
}

function render($item, $depth, $width) {
    if(!is_array($item)) {
        echo render_item($item, $depth, $width) . "\n";
        return;
    }
    echo render_line('.', $depth, $width) . "\n";
    foreach($item as $nested_item) {
        echo render($nested_item, $depth + 1, $width);
    }
    echo render_line('\'', $depth, $width) . "\n";
}

render($items, 0, $width);

exit(0);
?>

आप एक-अक्षर के बजाय दो-अक्षर फ़ंक्शन नामों का उपयोग क्यों कर रहे हैं?
लोजैकर

@ लोवैकलर: अच्छी पकड़, यह एक चीज है जिसे मुझे अभी भी अनुकूलित करने की आवश्यकता है। मेरे पास हाथ में कोई मिनिफायर नहीं था, इसलिए मैंने ऐसा खुद किया। मेरे पास कई विचार हैं कि क्या बढ़ाया जाए (कोडवाइज़, मिनिमाइज़ेशन नहीं), इसलिए मैं बाद में एक संशोधित संस्करण पोस्ट करूँगा।
20

1
सबसे पहले, यह <?शुरुआत में भी याद आ रही है। फिर आप स्पष्ट रूप से अंतरतम बॉक्स के लिए चौड़ाई के रूप में एक परीक्षण मामले में सभी पाठ आइटम की अधिकतम लंबाई का उपयोग कर रहे हैं । यह कोड केवल परीक्षण मामलों (लिनक्स और फ्रीबीएसडी पर परीक्षण) के 118 पास करता है। मुझे पता नहीं है कि आपने PowerShell स्क्रिप्ट का क्या किया है, हालांकि यह नहीं चलेगी :-(। इसे powershell -noprofile -file test.ps1 php boxes.phpकाम करने के रूप में आमंत्रित किया जा सकता है , वास्तव में। लेकिन मेरे पास परीक्षण करने के लिए मेरी विंडोज मशीन पर कोई PHP नहीं है।
जॉय

नवीनतम बैश स्क्रिप्ट का उपयोग करके मेरे बॉक्स पर यह परीक्षण किया गया, 118/156 मिला। मैंने आउटपुट को जिस्ट
जुआन

1
सुन कर अच्छा लगा :)। यही कारण है कि मुझे एक टेस्ट स्क्रिप्ट लिखने के लिए मिलता है जो शुरुआत में सिंगल-लाइन आउटपुट के लिए थी;;
जॉय

3

जावा - 681 668 चार्ट

import java.util.*;public class b{static int m,h,i;public static void main(String[]a)throws Throwable{for(Object o:z("")){a=(String[])o;String s=a[0]+a[1];i=a[0].length();for(h=0;h<m-i*2-a[1].length();h++){s+=a[2];}for(h=i;h>0;h--){s+=a[0].charAt(h-1);}System.out.println(s);}}static List z(String p)throws Throwable{String b="",d="";List l=new ArrayList();while((i=System.in.read())>-1){if(10==i){if(d!=""){String[]v={p+".",b,"-"},t={p+"'",b,"-"};l.add(v);for(int u=0;u<Integer.parseInt(d);u++){l.addAll(z(p+"| "));}l.add(t);}else{h=b.length()+p.length()*2;if(m<h)m=h;String[]v={p,b," "};l.add(v);}break;}else if(i>47&&i<58){d+=(char)i;}else {b+=(char)i;}}return l;}}

अनिवार्य रूप से कीथ रान्डेल के पायथन कोड के समान विधि

Ungolfed संस्करण:

import java.util.*;

public class b {
    static int m, h, i;

    public static void main(String[] a) throws Throwable {
        for (Object o : z("")) {
            a = (String[]) o;
            String s = a[0] + a[1];
            i = a[0].length();
            for (h = 0; h < m - i * 2 - a[1].length(); h++) {
                s += a[2];
            }
            for (h = i; h > 0; h--) {
                s += a[0].charAt(h - 1);
            }
            System.out.println(s);
        }
    }

    static List z(String p) throws Throwable {
        String b = "", d = "";
        List l = new ArrayList();
        while ((i = System.in.read()) > -1) {
            if (10 == i) {
                if (d != "") {
                    String[] v = { p + ".", b, "-" }, t = { p + "'", b, "-" };
                    l.add(v);
                    for (int u = 0; u < Integer.parseInt(d); u++) {
                        l.addAll(z(p + "| "));
                    }
                    l.add(t);
                } else {
                    h = b.length() + p.length() * 2;
                    if (m < h)
                        m = h;
                    String[] v = { p, b, " " };
                    l.add(v);
                }
                break;
            } else if (i > 47 && i < 58) {
                d += (char) i;
            } else {
                b += (char) i;
            }
        }
        return l;
    }
}

मुझे लगता है कि आप हर बार एक जगह से छुटकारा पा सकते हैं throws
जॉय

हाँ! कुछ और वर्णों को भी समाप्त कर दिया। (मान सकते हैं कि प्रत्येक पंक्ति को न्यूलाइन चार, निरर्थक के साथ समाप्त किया गया है break;)
ग्रेग श्यूलर

शायद charलंबे समय के लिए ascii कोड को देखकर तुलना चालाकी कर सकता है ... लेकिन मैं छुट्टी के लिए तैयार हो जाना है
ग्रेग Schueler

3

पर्ल - 200 199 चार्ट

कीथ रान्डेल की पायथन (अच्छा डिज़ाइन, कीथ) के रूप में समान एल्गोरिथ्म, लेकिन इस पर्ल में एक छोटे से अधिक कॉम्पैक्ट इसे ले जाता है।

sub P{$_=<>;chop;$m>($l=length"$_@_@_")or$m=$l;/^\d/?(["@_.","","-"],(map{P("| @_")}1..$_),["@_'","","-"]):["@_",$_," "]}map{($q,$t,$f)=@$_;print"$q$t",($f x($m-length"$q$t$q")).reverse($q),"\n"}(P);

1
$_@_@_डॉलर के चिह्न का पीछा करते हुए कोई ऐसा दिखता है
ajax333221

3

एफ # - 341 अक्षर

let rec f(x,y)=[
 let l=stdin.ReadLine()
 let q,d=Core.int.TryParse l
 if q then
  yield x+".","",'-',"."+y
  for i=1 to d do yield!f(x+"| ",y+" |")
  yield x+"'","",'-',"'"+y
 else yield x,l,' ',y]
let l=f("","")
for w,x,y,z in l do printfn"%s"(w+x.PadRight(List.max(l|>List.map(fun(w,x,y,z)->2*w.Length+x.Length))-2*w.Length,y)+z)

कीथ के समाधान का एक एफ # संस्करण। डिफ़ॉल्ट रूप से सूचियाँ अपरिवर्तनीय हैं, इसलिए यह संस्करण संपूर्ण पुनरावर्ती फ़ंक्शन को एक सूची में भर देता है, सूची लौटाता है, जिसमें से for..doलूप और ए का उपयोग करके आइटम निकाले जाते हैं yield!। मुझे पहले से उपसर्ग को उल्टा करने का कोई तरीका नहीं मिला, इसलिए मैंने सिर्फ ट्रिक्स पर प्रत्यय लगा दिया।

FYI करें, TryParse पद्धति दोहरा लाभ देती है (bool,int)


2

क्लोजर - 480 चरस

(use '[clojure.contrib.string :only (repeat)])(let [r ((fn p[%](repeatedly % #(let [x (read-line)](try(doall(p(Integer/parseInt x)))(catch Exception e x))))) 1)]((fn z[m,n,o] (let[b #( let[p(dec o)](println(str(repeat p "| ")%(repeat(- m(* 4 p)2)"-")%(repeat p " |"))))](b \.)(doseq[i n](if(seq? i)(z m i(inc o))(println(str(repeat o "| ")i(repeat(- m(count i)(* o 4))" ")(repeat o " |")))))(b \')))((fn w[x](reduce max(map(fn[%](if(seq? %)(+ (w %)4)(count %)))x)))r)(first r) 1))

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


आदमी, इस स्रोत का आधा हिस्सा व्हाट्सएप होना चाहिए। और अनिवार्य रूप से :-)। दिलचस्प है, हालांकि और मुझे आश्चर्य है कि क्या कोई लिस्प वैरिएंट को एक कोड गोल्फ जीतेगा ;-)
जॉय

मुझे यकीन है कि यह संभव है ... हालांकि जैसा मैंने कहा, मैं शायद ऐसा करने वाला नहीं हूं।
केसी

2

सी # - 472 470 426 422 398 वर्ण

using System.Linq;using y=System.Console;class W{static void Main(){var c=new int[5];var s=new string[0].ToList();int n=0,i;var l="";do{try{c[n]=int.Parse(l=y.ReadLine());l=".{1}.";n++;i=1;}catch{l+="{0}";i=0;}G:while(i++<n)l="| "+l+" |";s.Add(l);if(n>0&&--c[n-1]<0){n--;l="'{1}'";i=0;goto G;}}while(n>0);s.ForEach(z=>y.WriteLine(z,l="".PadLeft(s.Max(v=>v.Length)-z.Length),l.Replace(' ','-')));}}

अच्छा लगा। ए goto! वैसे, आप लंबोदर तर्कों के आसपास के कोष्ठकों को छोड़ सकते हैं zऔर vइसे नीचे लाकर 421 तक ले जा सकते हैं।
जोय

2

स्काला - 475 वर्ण

object N2 extends App{type S=String;def b(x:List[S],t:Int,s:S,e:S):List[S]={var l=x;o=o:+(s+".-±-."+e+"-");for(i<-1 to t)if(l.head.matches("\\d+"))l=b(l.tail,l.head.toInt,s+"| ",e+" |")else{o=o:+(s+"| "+l.head+"±"+e+" | ");l=l.drop(1)};o=o:+(s+"'-±-'"+e+"-");return l};var o:List[S]=List();val l=io.Source.stdin.getLines.toList;b(l.tail,l.head.toInt,"","");(o map(x=>x.replaceAll("±",x.last.toString*((o sortBy((_:S).length)).last.length-x.length)).dropRight(1)))map println}

1

C # 1198 1156 1142 689 671 634 वर्ण

using z=System.Console;using System.Collections.Generic;using System.Linq;
class T{bool U;List<T> a=new List<T>();string m;IEnumerable<string>R(int s){if(U){yield return ".".PadRight(s-1,'-')+".";foreach(var e in a.SelectMany(b=>b.R(s-4)))yield return ("| "+e).PadRight(s-e.Length)+" |";yield return "'".PadRight(s-1,'-')+"'";}else yield return m;}int L(){return U?a.Max(x=>x.L())+4:m.Length;}
static void Main(){var p=O(int.Parse(z.ReadLine()));z.WriteLine(string.Join("\r\n",p.R(p.L())));}
static T O(int n){var k=new T(){U=true};while(n-->0){var l=z.ReadLine();int c;k.a.Add(int.TryParse(l,out c)?O(c):new T{m=l});}return k;}}

1
Ungolfed संस्करण github पर है - github.com/paulduran/CodeGolf
घातक

के साथ \nजुड़कर अंत में दम घुटने लगता है।
जॉय

इंटरफ़ेस से छुटकारा पाने से कई पात्रों को मुक्त कर दिया गया, बाकी ज्यादातर मानक गोल्फिंग था। यहाँ बहुत कुछ किया जा सकता है, मुझे उम्मीद है कि यह 600 से नीचे हो सकता है।
निक लार्सन

अच्छा काम निक। मुझे शक था कि इंटरफ़ेस ईमानदार होने के लिए थोड़ा अधिक था। एक साधारण झंडा इस स्थिति में पर्याप्त होगा जैसा कि आपने दिखाया है।
घातक

0

पिप , 89 बाइट्स (गैर-प्रतिस्पर्धात्मक)

(भाषा चुनौती की तुलना में नई है। इसके अलावा, मैं एपीएल को बहुत आगे नहीं बढ़ा सकता।)

कोड 87 बाइट्स है, -rnझंडे के लिए +2 ।

(z:{I+YPOi{Y{Vz}M,ym:MX#*Y$ALyY'|.s._.sX++m-#_.'|MyY".."J'-X++mALyAL"''"J'-Xm}yALl}i:g)

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

फ़ंक्शन zइनपुट सूची के पहले आइटम को संसाधित करता है ( g, वैश्विक चर में कॉपी किया जाता है iताकि फ़ंक्शन कॉल के अंदर उपलब्ध हो सके)। यदि यह संख्या n है , तो यह खुद को पुनरावर्ती रूप से n बार कॉल करता है , परिणामी सूची को पूर्ण आयत में पैड करता है, प्रत्येक पंक्ति को लपेटता है "| " " |", और नई सूची को वापस करने से पहले जोड़ता है .---.और '---'रेखाएँ। यदि यह एक स्ट्रिंग है, तो यह बस एक-आइटम सूची में परिवर्तित करता है और इसे वापस करता है। अंतिम परिणाम न्यूलाइन-सेपरेटेड ( -nध्वज) मुद्रित होता है । अनुरोध पर अधिक विवरण उपलब्ध है।


मुझे आमतौर पर चुनौती की तुलना में नई भाषाओं के साथ कोई समस्या नहीं है, खासकर यह देखते हुए कि समस्या इतनी तुच्छ नहीं है कि एक नई बनाई गई भाषा में विशेष रूप से इसे हल करने के लिए संचालन होगा :-)
जॉय

यह चौथा नमूना विफल रहता है।
जॉय

0

जावा (1369 chars inc। EOLs)

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

विचार वस्तुओं (तार और बक्से) का एक पेड़ (ग्राफ) है, जिसमें एक "सिर" बॉक्स से शुरू होने वाले एक दूसरे को शामिल किया गया है। जैसा कि आप रेखीय रूप से इनपुट फ़ाइल को पार्स करते हैं, आप तार और बक्से को "चालू" बॉक्स में जोड़ते हैं और जब आप कंटेनर की अधिकतम लंबाई जोड़ रहे होते हैं, तो इसे समायोजित किया जाता है। जब एक कंटेनर पूर्वनिर्धारित वस्तुओं की मात्रा तक पहुंच जाता है कि यह आपको पिछले कंटेनर में बैकट्रैक पकड़ सकता है। इनपुट फ़ाइल के अंत में, आपके पास एक "हेड" कंटेनर होता है, जिसमें पहले से ही एक "मैक्सलिफ्ट" की गणना होती है, इसलिए आप बस इसके प्रिंट () विधि को कहते हैं।

import java.io.*;import java.util.*;
public class N{private static String rPad(String s,int l){return s+str(l-s.length(),' ');}
private static String str(int l, char c){StringBuffer sb=new StringBuffer();while(l-->0){sb.append(c);}return sb.toString();}
private static class Box {Box prnt=null;String txt=null;int items;List<Box> c=new ArrayList<Box>();int maxLength=0;
public Box(Box p,int n){prnt=p;items=n;if(p!=null){p.c.add(this);}}
public Box(Box p,String s){prnt=p;txt=s;if(p!=null){p.c.add(this);p.notify(s.length());}}
public void print(String prefix,int l,String suffix){if (txt == null){System.out.println(prefix+"."+str(l-2,'-')+"."+suffix);for(Box b:c){b.print(prefix+"| ",l-4," |"+suffix);}System.out.println(prefix+"'"+str(l-2,'-')+"'"+suffix);}else{System.out.println(prefix+rPad(txt,l)+suffix);}}
protected void notify(int l){if (l+4>this.maxLength){this.maxLength=l + 4;if (this.prnt != null){this.prnt.notify(this.maxLength);}}}}
public static void main(String[] args)throws IOException{Box head=null;Box b=null;BufferedReader in=new BufferedReader(new InputStreamReader(System.in));String s;while ((s=in.readLine()) != null){try{int n=Integer.parseInt(s);b=new Box(b, n);}catch (NumberFormatException nfe){b=new Box(b, s);}if(head == null)head=b;while ((b != null) && (b.items == b.c.size())){b=b.prnt;}}head.print("",head.maxLength,"");}}

यह वास्तव में लिखने के लिए एक सुखद समाधान है। मुझे सवाल बहुत पसंद आया। जैसा कि मैंने पहले उल्लेख किया है, मैं समाधान के लिए गया था लालित्य न्यूनतम दृष्टिकोण नहीं है, दुख की बात है कि जावा में पायथन का प्रिंट नहीं है "-" * 4 "----" का उत्पादन करने के लिए :-)

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

import java.io.*;
import java.util.*;

public class NestedBoxes
{

    private static String rPad ( String s, int l )
    {
        return s + str(l - s.length(), ' ');
    }

    private static String str ( int l, char c )
    {
        StringBuffer sb = new StringBuffer();
        while (l-- > 0)
        {
            sb.append(c);
        }
        return sb.toString();
    }

    private static class Box
    {

        Box parent = null;
        String text = null;
        int items;
        List<Box> contents = new ArrayList<Box>();

        int maxLength = 0;

        public Box ( Box p, int n )
        {
            parent = p;
            items = n;
            if (p != null)
            {
                p.contents.add(this);
            }
        }

        public Box ( Box p, String s )
        {
            parent = p;
            text = s;
            if (p != null)
            {
                p.contents.add(this);
                p.notify(s.length());
            }
        }

        public void print ( String prefix, int l, String suffix )
        {
            if (text == null)
            {
                System.out.println(prefix + "." + str(l - 2, '-') + "." + suffix);
                for (Box b : contents)
                {
                    b.print(prefix + "| ", l - 4, " |" + suffix);
                }
                System.out.println(prefix + "'" + str(l - 2, '-') + "'" + suffix);
            }
            else
            {
                System.out.println(prefix + rPad(text, l) + suffix);
            }
        }

        protected void notify ( int l )
        {
            if (l + 4 > this.maxLength)
            {
                this.maxLength = l + 4;
                if (this.parent != null)
                {
                    this.parent.notify(this.maxLength);
                }
            }
        }
    }

    public static void main ( String[] args ) throws IOException
    {
        Box head = null;
        Box b = null;
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String s;
        while ((s = in.readLine()) != null)
        {
            try
            {
                int n = Integer.parseInt(s);
                b = new Box(b, n);
            }
            catch (NumberFormatException nfe)
            {
                b = new Box(b, s);
            }

            if (head == null)
            {
                head = b;
            }

            while ((b != null) && (b.items == b.contents.size()))
            {
                b = b.parent;
            }
        }
        head.print("", head.maxLength, "");
    }
}

4
तुम्हें पता है, यह एक कोड गोल्फ है । आपको छोटे समाधान के लिए कम से कम प्रयास करना चाहिए । लालित्य सभी अच्छा और अच्छा है, लेकिन वास्तव में यहाँ की आवश्यकता नहीं है और न ही चाहते हैं।
जॉय
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.