मुझे एक टॉवर ब्लॉक प्रिंट करें


16

सबसे कम संभव कोड के साथ एक टॉवर ब्लॉक प्रिंट करें।

इनपुट:

इनपुट परिभाषित करता है कि टॉवर ब्लॉक में कितनी मंजिलें हैं। एक मंजिल में दरवाजे के दोनों ओर एक खिड़की होती है। खिड़की 3x3 हैश से बनी है।

4 मंजिला टॉवर ब्लॉक का एक उदाहरण नीचे दिया गया है:

      =====================
      )V V V V V V V V V V(
     )V V V V V V V V V V V(
    )V V V V V V V V V V V V(
   )V V V V V V V V V V V V V(
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~
   : : : : : : : : : : : : : :
   : : ### : : : : : : ### : :
   : : ### : : : : : : ### : :
   : : ### : : : : : : ### : :
   : : : : : : : : : : : : : :
   : : : : : : : : : : : : : :
   : : ### : : : : : : ### : :
   : : ### : : : : : : ### : :
   : : ### : : : : : : ### : :
   : : : : : : : : : : : : : :
   : : : : : : : : : : : : : :
   : : ### : : : : : : ### : :
   : : ### : : : : : : ### : :
   : : ### : : : : : : ### : :
   : : : : : : : : : : : : : :
   : : : : : _______ : : : : :
   : : ### : I     I : ### : :
   : : ### : I     I : ### : :
   : : ### : I     I : ### : :
   : : : : : I     I : : : : :

अपडेट करें:

इनपुट एक या एक से अधिक होना चाहिए।

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

मेरे उदाहरण में, हर पंक्ति में तीन प्रमुख स्थान हैं। यह अनिवार्य नहीं है, बस इनपुट के साथ टॉवर ब्लॉक है।


2
क्या इनपुट 1 से कम हो सकता है?
nmjcman101

2
लाइनों के अंत में रिक्त स्थान की अनुमति है?
ngenisis

आपके प्रश्नों के लिए धन्यवाद - कृपया मेरे प्रश्न का अद्यतन देखें।
बेलफिल्ड

जवाबों:


6

वी , 72 बाइट्स

13iV r(É)3ñįlxñÄ21r=GÙÒ~Ù14R: ÙÄ2w3r#7w.3ÄkdGÀpG4k5w7r_bêojrIÎfIl5r 

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

यहाँ एक हेक्सडंप है, क्योंकि इसमें अनपेक्षित वर्ण हैं:

00000000: 3133 6956 201b 7228 c929 33f1 c4af 6c78  13iV .r(.)3...lx
00000010: f1c4 3231 723d 47d9 d27e d931 3452 3a20  ..21r=G..~.14R: 
00000020: 1bd9 c432 7733 7223 3777 2e33 c46b 6447  ...2w3r#7w.3.kdG
00000030: c070 4734 6b35 7737 725f 1662 ea6f 6a72  .pG4k5w7r_.b.ojr
00000040: 49ce 6649 6c35 7220                      I.fIl5r

मैं एक अजीब बग में भाग गया। बीच में अनुभाग: dGÀpGहोना चाहिए था: ÀäGGलेकिन यह 1 के इनपुट के लिए काम नहीं करता है, और मुझे नहीं पता कि क्यों।¯\_(ツ)_/¯


8

गणितज्ञ, 301 288 258 बाइट्स

" "~(s=If[#2==0,"",#~StringRepeat~#2]&)~3<>{"="~s~21,"
",s[" ",12-#]<>{")","v "~s~#,"v(
"}&/@9~Range~12,"~"~s~27,"
",s[(x=(u=": ")~s~13<>":
")<>{y=u<>{z=": ### ",v=u~s~5,w=z<>": :
"},y,y,x},#-1],v,"_"~s~7," ",v,"
",m=u<>{z,u,n="I     I ",w},m,m,v,n,w}&

शुद्ध फ़ंक्शन जो एक सकारात्मक पूर्णांक लेता है और एक स्ट्रिंग को आउटपुट करता है। आउटपुट स्ट्रिंग सही नहीं लगेगा क्योंकि गणितज्ञ जाहिरा तौर पर मोनोस्पेस को मोनोस्पेस के रूप में प्रदर्शित नहीं करता है:

यहाँ छवि विवरण दर्ज करें

जिन कारणों से मैं काफी हद तक नहीं समझ पा रहा हूँ, यदि आप Printस्ट्रिंग को मोनोस्पेस के रूप में प्रारूपित करते हैं:

यहाँ छवि विवरण दर्ज करें

संपादित करें: " "प्रत्येक पंक्ति की शुरुआत में शामिल नहीं करके कई बाइट्स सहेजे गए । sमामले को संभालने के लिए परिभाषा बदल दी है जहां केवल एक मंजिल है ( StringRepeatएक स्ट्रिंग 0बार दोहराना पसंद नहीं है)।

संपादित करें 2: LegionMammal978 के लिए धन्यवाद और तथ्य यह StringJoinहै कि Listable, यह अब नेस्टेड सूचियों की एक अतुलनीय दुःस्वप्न है और 30 बाइट्स भी छोटी है।


1
कम से कम 26 बाइट्स की जगह बचाया जा सकता है a<>b<>...<>xके साथ a<>{b,...,x}कुछ भागों में।
लेजियम मैमल 978

4

पायथन 2 , 275 270 262 246 240 236 बाइट्स

@ Flp.Tkc से संकेत के साथ एक जोड़े को बचाया और लूप के लिए पहली बार बदलकर।

16 @ Flp.Tkc से अधिक मदद से बचाया गया

a,h,b,c,w=' ',"I  ",": "," :","#"*3;d,e,j=b*2+w+a+b+h,b*5+h,[b*14]
print'\n'.join([a*3+'='*21]+[a*(4-x)+')'+'V '*(x+8)+'V('for x in 1,2,3,4]+['-'*27]+(j+[b*2+w+c*6+a+w+c*2]*3+j)*(input()-1)+[b*5+"_"*7+c*5]+[d+a+d[::-1]]*3+[e+a+e[::-1]])

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

बस टॉवर की प्रत्येक पंक्ति को एक स्ट्रिंग के रूप में बनाता है और इसे एक सरणी में जोड़ता है जो अंत में सरणी को प्रिंट करता है। अगर कोई चाहता है कि मैं पूरी तरह से स्पष्टीकरण दूं तो अगर मैं यह याद रखूं कि यह कैसे काम करता है explanation


3

पॉवरशेल , 193 बाइट्स

"   "+"="*21
3..0|%{" "*$_+")"+"V "*(12-$_)+"V("}
"~"*27
--$args[0]..0|%{($b=": "*5)+(($a=": "*4),'_______ ')[!$_]+$b;,(': : ### : '+($a,($c='I     I '))[!$_]+': ### : :')*3;$b+($a,$c)[!$_]+$b}

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

(मुझे लगता है कि अभी भी यहाँ या वहाँ कुछ बाइट्स हो सकते हैं। उप-190 उल्लेखनीय है।)

3..0|%{...}सही संख्या और ढलान प्राप्त करने के लिए एक लूप के साथ स्ट्रिंग गुणन और संघनन का उपयोग करते हुए, पहली तीन लाइनें छत का निर्माण करती हैंV

अगली पंक्ति इनपुट से पूर्व-विघटित --$args[0]होकर 0एक लूप के रूप में चलती है (पूर्व-डिक्रीमेंट हमें बाद में कई बाइट्स !$_को $_-eq1बचाने के बजाय का उपयोग करके अनुक्रमित करने की अनुमति देता है )। प्रत्येक लूप पुनरावृत्ति, हम स्ट्रिंग्स का एक गुच्छा बना रहे हैं, चर सेट कर रहे हैं $bऔर $aरास्ते में। हम (... , ...)[...]मध्य के लिए उपयुक्त तारों को चुनने के लिए छद्म टर्नरीज़ का भी उपयोग कर रहे हैं ताकि हम पहली मंजिल पर द्वार को सही से प्राप्त कर सकें।

प्रत्येक स्ट्रिंग्स को व्यक्तिगत रूप से पाइप लाइन पर छोड़ दिया जाता है, और डिफ़ॉल्ट के Write-Outputबीच न्यूलाइंस सम्मिलित करता है, इसलिए हम उन्हें मुफ्त में प्राप्त करते हैं।


3

टी-एसक्यूएल, 378 372 353 331 325 बाइट्स

golfed:

DECLARE @ INT=3

,@h varchar(max)=REPLICATE('~',27)SELECT @h+='
: '+a+IIF(n>@*5-6,IIF(n%5=0,'_______ ','I     I '),t)+a+':'FROM(SELECT
IIF(n%5%4=0,t,': ### : ')a,*FROM(SELECT': : : : 't,number n,*FROM spt_values)x)y
WHERE type='P'and n<@*5SET @=0WHILE @<4SELECT
@h=SPACE(@)+')'+REPLICATE('V ',12-@)+'V(
'+@h,@+=1PRINT'   '+REPLICATE('=',21)+'
'+@h

Ungolfed:

DECLARE @ INT=3

,@h varchar(max)=REPLICATE('~',27)
SELECT @h+='
: '+a+IIF(n>@*5-6,IIF(n%5=0,'_______ ','I     I '),t)+a+':'
FROM
(SELECT IIF(n%5%4=0,t,': ### : ')a,*
FROM
(SELECT': : : : 't,number n,*
FROM spt_values)x)y
WHERE type='P'and n<@*5
WHILE @>=0
  SELECT @h=SPACE(3-@)+')'+REPLICATE('V ',9+@)+'V(
'+@h,@-=1
PRINT'   '+REPLICATE('=',21)+'
'+@h

कोशिश करके देखो


2

सी, 409 406 402 बाइट्स

#define P(x)p(": ",x);
#define S(x)p(x,1);
#define L P(2)p("#",3);p(" :",6);S(" ###");S(" : :\n")
#define Q p("V ",i+++9)
p(s,n)char*s;{printf(s,--n?p(s,n):0);}i;t(n){p(" ",3);p("=",21);S("\n   )")Q;S("V(\n  )")Q;S("V(\n )")Q;S("V(\n)")Q;S("V(\n")p("~",27);S("\n")for(;--n;){P(13)S(":\n")L;L;L;P(13)S(":\n")}P(5)p("_",7);p(" :",5);S("\n")p(": : ### : I     I : ### : :\n",3);P(5)S("I     I")p(" :",5);}

के साथ बुलाना:

int main()
{
    t(4);
}

1

बैच, 373 बाइट्स

@echo off
set s=###
echo    %s:#========%
for %%s in ("   )" "  )V " " )V V " ")V V V ")do echo %%~sV%s:#= V V V%(
echo %s:#=~~~~~~~~~%
set t=: : ### : I     I : ### : :
set s=%t:I     I=: : : :%
for /l %i in (2,1,%1)do echo %s:###=: :%&echo %s%&echo %s%&echo %s%&echo %s:###=: :%
set s=%t:###=: :%
echo %s:I     I=_______%
echo %t%
echo %t%
echo %t%
echo %s%

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


1

जावास्क्रिप्ट, 335 बाइट्स

y=z=>{a="   "+"=".repeat(21);for(b=9;13>b;b++)a+="\n"+" ".repeat(12-b)+")"+"V ".repeat(b)+"V(";a+="\n"+"~".repeat(27);b="\n"+": ".repeat(14);c=": : ### : : : : : : ### : :";for(d=0;d<z-1;d++)a+=b+"\n"+c+"\n"+c+b;a+="\n: : : : : _______ : : : :\n"+": : ### : I     I : ### : :\n".repeat(3)+": : : : : I     I : : : : :";console.log(a)};

एक फ़ंक्शन y()को तर्क के साथ बनाता है z, जैसे कि y(z)वांछित आउटपुट पैदा करता है।

उदाहरण उपयोग:

y=z=>{a="   "+"=".repeat(21);for(b=9;13>b;b++)a+="\n"+" ".repeat(12-b)+")"+"V ".repeat(b)+"V(";a+="\n"+"~".repeat(27);b="\n"+": ".repeat(14);c=": : ### : : : : : : ### : :";for(d=0;d<z-1;d++)a+=b+"\n"+c+"\n"+c+b;a+="\n: : : : : _______ : : : :\n"+": : ### : I     I : ### : :\n".repeat(3)+": : : : : I     I : : : : :";console.log(a)};

console.log(y(3));

मैं सामान्य जावास्क्रिप्ट से कोड-गोल्फ JS में संक्रमण कर रहा हूं। कोई भी युक्ति सराहनीय होगी।


1

कैनवस , 62 61 बाइट्स

⁶=⁵×V7× * )×4*∔/‾²m~7«× ×∔│8 ×:*5*#33*62╋│⁸*∔l4-_7× 5×Ie4*∔╋╋

यहाँ यह कोशिश करो! इनपुट 0 अपेक्षित रूप से काम करता है, हालांकि इसकी आवश्यकता नहीं है।


हे, इस स्क्रिप्ट का उपयोग करके घर की ऊंचाई को कैसे संशोधित किया गया है?
t-clausen.dk

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