पहाड़ी पर छोटे बक्से


13

मूल रूप से मालवीना रेनॉल्ड्स द्वारा लिटिल बॉक्स नामक व्यंग्य गीत , उपनगरीय फैलाव के बारे में है जिसमें गीत हैं:

पहाड़ी पर छोटे बक्से,
गुदगुदी से बने
छोटे बक्से, पहाड़ी पर
छोटे बक्से, सभी समान बक्से।
वहाँ एक हरा एक और एक गुलाबी एक
और एक नीला एक और एक पीला एक है,
और वे सभी गुदगुदी से बाहर कर रहे हैं
और वे सभी बस एक ही दिखते हैं।

आपका काम यहाँ है, एक पूर्णांक इनपुट दिया n>1गया है जो घर के आकार का प्रतिनिधित्व करता है, निम्न रंगों का उपयोग करके चार "छोटे बक्से" का उत्पादन करता है (0xRRGGBB संकेतन में):

Green -- 0x00FF00
Pink --- 0xFF00FF (technically magenta)
Blue --- 0x0000FF
Yellow - 0xFFFF00

यदि आपके विशेष कंसोल में ये सटीक रंग नहीं हैं, तो आप निकटतम उपलब्ध (उदाहरण के लिए, ANSI एस्केप कोड) का उपयोग कर सकते हैं।

घरों का निर्माण n _फर्श और छत का प्रतिनिधित्व करने के साथ किया जाता है । वे दीवारों का प्रतिनिधित्व n/2करने वाले (गोल-अप) |पात्रों से घिरे हुए हैं। छतें हमेशा 2ऊंची होती हैं और /बाएं किनारे \पर दो , दाहिने किनारे पर दो और n-2 -छत के शिखर का प्रतिनिधित्व करती हैं। जैसे-जैसे मकान बड़े होते हैं, छत का तुलनात्मक आकार छोटा होता जाता है; यह इरादा है।

यहाँ आकार का एक घर है 2:

 /\
/__\
|__|

यहाँ आकार है 3:

 /-\
/___\
|   |
|___|

यहाँ आकार है 7:

 /-----\
/_______\
|       |
|       |
|       |
|_______|

इस प्रकार 7, इनपुट के चार घरों को आकार 7में दिया गया है, जैसा कि ऊपर वर्णित है, पहला हरे रंग में, दूसरा गुलाबी (मैजेंटा) में, तीसरा नीले रंग में और चौथा पीले रंग में। उस क्रम में रंगों का आउटपुट महत्वपूर्ण है।

आकार का उदाहरण चित्र 3:

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

नियम

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

जवाबों:


5

जावास्क्रिप्ट (ES6), क्रोम / फ़ायरफ़ॉक्स, 156 148 151 150 बाइट्स

सहेजे गए 8 बाइट्स @ @ धन्यवाद का धन्यवाद @
1 बाइट के लिए 1 बाइट का धन्यवाद

n=>['0f0','f0f','00f','ff0'].map(c=>console.log(`%c /${'-'[r='repeat'](n-2)}\\
/${s='_'[r](n)}\\
${(`|${' '[r](n)}|
`)[r](~-n/2)}|${s}|`,'color:#'+c))

डेमो

रंगीन आउटपुट प्राप्त करने के लिए अपने ब्राउज़र का कंसोल खोलना सुनिश्चित करें।


मेरे लिए एक स्निपेट के रूप में ठीक काम करता है, मेरे ब्राउज़र का कंसोल खुला है। 3 अंकों के हेक्स कोड का उपयोग करके 8 बाइट्स बचाएं: tio.run/##NYvRCsIgGEbv9xSDFr/…
Shaggy

@ शगुन सुझाव के लिए धन्यवाद!
अरनुलद

क्या अग्रणी 0एस आवश्यक हैं?
जोनाथन फ्रैच

@ जोनाथनफ्रेच हां। अग्रणी शून्य के बिना, यह #RGBसीएसएस रंग कोड मान्य नहीं होगा ।
अरनौल्ड

मुझे लगता है कि व्यापक घरों पर ऊंचाई गलत है।
नील

5

पायथन 2 , 123 121 119 111 109 108 बाइट्स

  • सहेजा गया दो बाइट्स के लिए धन्यवाद caird coinheringaahing ; ( \33) भागने के बजाय वास्तविक unprintable ASCII चरित्र का उपयोग
  • input()किसी फ़ंक्शन को परिभाषित करने के बजाय पूरे प्रोग्राम को लिखकर एक बाइट को बचा सकता है और कर सकता है
  • ElPedro के लिए धन्यवाद, सात बाइट्स सहेजे गए ; तथ्य यह है कि का उपयोग कर str(90+n)के साथ 0<=n<=9है"9%s"%n
  • स्ट्रिंग प्रारूपण के बजाय स्ट्रिंग स्वरूपण का उपयोग करके दो तीन बाइट्स सहेजे गए

N=input()
for(n)in"2543":Z="_"*N;print"[9%sm /"%n+~-~-N*"-"+"\ \n/%s\\\n"%Z+~-N/2*("|%s|\n"%" "*N)+"|%s|"%Z

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

घरों को रंगने के लिए ANSI एस्केप कोड का उपयोग करता है ।



1
112 "2543" लूपिंग करके और स्ट्रिंग प्रारूपण का उपयोग करके - इसे ऑनलाइन आज़माएं!
ElPedro

2
@ElPedro धन्यवाद मेरे साथ ऐसा नहीं हुआ 90और 2,5,4,3संक्षिप्त रूप से प्रभावी रूप से सहमति है।
जोनाथन फ्रेच

3

एक्सेल VBA, 243 बाइट्स

अनाम VBE तत्काल विंडो फ़ंक्शन जो इनपुट से A1और आउटपुट को श्रेणी में ले जाता हैA2:A5

[C1]=vbLf:For i=1To 4:Cells(i+1,1)=[" /"&Rept("-",A1-2)&"\"&C1&"/"&Rept("_",A1)&"\"&C1&Rept("|"&Rept(" ",A1)&"|"&C1,A1/2)&"|"&Rept("_",A1)&"|"]:Cells(i+1,1).Font.Color=Array(32768,&HFF00FF,rgbBlue,65535)(i-1):Next:Cells.Font.Name="Courier New"

उत्पादन

उत्पादन


2

जाप , 79 76 74 73 72 बाइट्स

3#²¤r1'f ò3 w £Ol"%c /{ç- ¤}\\
/{ç'_}\\
{/2-½ ç"|{ç}|
"}|{ç'_}|"Xi`¬l:#

इसे आज़माएं ("रन" मारने से पहले अपने ब्राउज़र का कंसोल खोलें)।

ईटीएच के लिए धन्यवाद मुझे पिछली रात को यह परीक्षण करने में मदद करने के लिए जब मैं अपने फोन पर काम कर रहा था।


व्याख्या

पूर्णांक का निहित इनपुट U

3#²¤r1'f ò3 w

पहले हम मानचित्र बनाने के लिए 3-अंकीय हेक्स रंगों की एक सरणी बनाते हैं। की charcode ²178 इतना है 3#²हमें 3178. देता है हम साथ एक आधार -2 स्ट्रिंग के लिए कि कन्वर्ट ¤और फिर की सभी घटनाओं की जगह 1के साथ fò3स्ट्रिंग को लंबाई 3 के स्ट्रिंग्स के एक सरणी में विभाजित करता है और wउस सरणी को उलट देता है।
(मुझे किसी तरह से इसे छोटा करने का तरीका निकालने की जरूरत है।)

£Ol

हम वर्तमान तत्व होने के £साथ सरणी पर नक्शा बनाते हैं X- और Olकंसोल को लॉग करते हैं। हम उस पर 2 स्ट्रिंग्स पास करेंगे, जिसमें एक घर और एक सीएसएस युक्त होगा।

Xi`¬l:#

दूसरी स्ट्रिंग का निर्माण संपीड़ित स्ट्रिंग के साथ प्रस्तुत iकरने के लिए Xकिया जाता है color:#

"%c /{ç- ¤}\\

%cसांत्वना सीएसएस के रूप में दूसरी स्ट्रिंग का उपयोग करने के लिए कहता है। घर की शीर्ष रेखा दोहराई जाती है ( ç) -चरित्र Uबार और फिर दूसरे तत्व (0-अनुक्रमित) से टुकड़ा करके ¤। ब्रेसिज़ स्ट्रिंग सुगमता के लिए, एक प्रकार का शॉर्टकट के रूप में कार्य करता है।

/{ç'_}\\

दूसरी पंक्ति एक समान तरीके से बनाई गई है, इस बार _चरित्र Uबार दोहरा रही है।

{/2-½ çRi|²iUç 1}

घर के शरीर को पहले |चरित्र के साथ दो बार दोहराकर बनाया जाता है ²और फिर Uसूचकांक 1 में उस स्ट्रिंग में बार - बार एक स्थान डाला जाता है। परिणामी स्ट्रिंग को फिर एक नई रेखा ( R) में रखा जाता है और उस स्ट्रिंग को बार- U/2-0.5बार दोहराया जाता है।

|{ç'_}|"

अंत में, दूसरी के समान ही अंतिम पंक्ति बनाई गई है।


1

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

n=input()
for i in'2543':s='_'*n;print'[1;3'+i+('m /'+'-'*(n-2)+'\ \n/%s\\\n'%s+(-~n/2-1)*('|'+' '*n+'|\n')+'|%s|\n'%s)

इसे ऑनलाइन आज़माएं! (स्थानीय टर्मिनल पर परीक्षण किए गए वास्तविक रंगों के बजाय एस्केप चार्ज़ दिखाता है)


मुझे लगता है कि इनपुट के लिए आपके घर बहुत अधिक हैं n=2
जोनाथन फ्रीच

@JonathanFrech हां, मैं ठीक कर दूंगा ... गलत छत दृष्टिकोण जाहिरा तौर पर संपादित करें: तय किया गया
एरिक आउटग्राफर

सवाल यह कहता है use the closest available, हालांकि आप चमकीले रंगों के बजाय सामान्य रंगों का उपयोग करने लगते हैं। चमकीले रंग - मुझे लगता है - हालांकि, वांछित रंगों के करीब होगा।
जोनाथन फ्रेच

@JonathanFrech हम्म, तुम्हारा भी सामान्य रंगों का उपयोग करने लगता है, लेकिन हाँ उज्ज्वल लोग करीब हैं।
आउटगॉल्फ

1
@ElPedro वैसे भी उनके लिए मेरी तुलना में बेहतर हो गया है: पी
एरिक द आउटग्राफर

1

याबेसिक , 220 बाइट्स

एक अनाम फ़ंक्शन जो एक पूर्णांक के रूप में इनपुट लेता है, nऔर टर्मिनल के लिए 4 रंगीन घरों को आउटपुट करता है।

याबेसिक में एक समर्पित स्ट्रिंग दोहराने या प्रतिस्थापन कार्य की कमी वास्तव में इस प्रतिक्रिया को नुकसान पहुंचाती है।

Clear Screen
Input""n
b$="__"
c$="|  "
For i=1To n-2
a$=a$+"-"
b$=b$+"_"
c$=c$+" "
Next
c$=c$+"|\n"
For i=1To n-4
d$=d$+c$
Next
For i=0To 3
?Color(Mid$("gremagbluyel",1+3*i,3))" /"+a$+"\\\n/"+b$+"\\\n"+d$+"|"+b$+"|"
Next

इस संस्करण में ग्राफिक्स मोड की आवश्यकता होती है और इस प्रकार यह TIO पर काम नहीं करता है।

उत्पादन

नीचे के लिए इनपुट मूल्य है n=7

उत्पादन


1

स्माइलबासिक, 115 बाइट्स

INPUT N
H.H 6H 4H 2DEF H C
COLOR C+5?" /";"-"*(N-2);"\
?"/";"_"*N;"\
FOR I=3TO N?"|";" "*N;"|
NEXT?"|";"_"*N;"|
END

एक और जो 115 बाइट्स भी है:

INPUT N
FOR J=0TO 3COLOR!!J*8-J*2+5?" /";"-"*(N-2);"\
?"/";"_"*N;"\
FOR I=3TO N?"|";" "*N;"|
NEXT?"|";"_"*N;"|
END

मुझे जिन रंग कोडों की आवश्यकता है (4-बिट RGBI में) 5, 11, 9, 7 हैं। यह !!J*8-J*2+5J का उपयोग नहीं करने पर उत्पन्न होता है, यह 0 नहीं है, 13-J*2( यह 11,9,7 दे रहा है), और यदि यह है, तो परिणाम है सिर्फ 5।

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