पायथन 3.5 - 262 236 220 बाइट्स:
-16 बाइट्स @CatsAreFluffy की बदौलत! अब मेरा पूरा कार्य एक ही पंक्ति में हो सकता है! :)
from collections import*
def a(v):o=OrderedDict;j=[chr(i+97)for i in range(26)];d=o((j[i],(' '+'_'*(i+1)+'\n'+j[i]+'|'+'_'*(i+1)+'|'))for i in range(26));f=lambda w:'a'[w:]or f(w-1)+j[w]+f(w-1);[print(d[g])for g in f(v)]
यह थोड़ा लंबा हो सकता है, और यह इमारत के बीच में नई लाइनें प्रिंट कर सकता है, लेकिन इसमें उसे क्या करना चाहिए। इसकी पुष्टि के लिए आप स्वयं इसका परीक्षण कर सकते हैं।
संपादित करें:
मेरे पिछले गोल्फ कोड ने सही पैटर्न को प्रिंट नहीं किया। हालाँकि, अब ऊपर दिखाया गया है, और यह मेरी राय में अच्छा करता है। इसकी पुष्टि के लिए आप इसे अपने लिए भी चला सकते हैं।
नोट: कार्यक्रम हर "बिल्डिंग" के पीछे सभी निचले अक्षरों को प्रिंट करता है। मुझे लगता है कि यह ठीक है।
स्पष्टीकरण के साथ अनप्लग्ड संस्करण:
from collections import*
def a(v):
o=OrderedDict # Assign the OrderedSict function to "o"
j=[chr(i+97)for i in range(26)] # Create a list with all 26 lowercase letters of the alphabet
d=o((j[i],(' '+'_'*(i+1)+'\n'+j[i]+'|'+'_'*(i+1)+'|'))for i in range(26)) # Create a dict assigning each letter it's corresponding building with its corresponding length
f=lambda w:'a'[w:]or f(w-1)+j[w]+f(w-1) # Return the ABACABA sequence based on the user input
[print(d[g])for g in f(v)] # Print out the building according to the sequence returned by the above lambda function (thanks to @CatsAreFluffy for this method to print it! :) )
मूल रूप से मैं जो कर रहा हूं, वह पहले संग्रह मॉड्यूल के ऑर्डर किए गए डिक्शनरी फ़ंक्शन को आयात कर रहा है, और फिर सूची में प्रत्येक निचले मामले पत्र के साथ एक ऑर्डर किए गए शब्दकोश का निर्माण कर रहा है, जिसे "ज" अपनी संबंधित इमारत को सौंपा गया है, जिसकी लंबाई अंडरस्कोर में है। फिर मैं अनुक्रम का उपयोग करता हूं, उपयोगकर्ता के इनपुट के f=lambda w:"a"[w:]or f(w-1)+j[w]+f(w-1)
आधार पर, फ़ंक्शन का उपयोग करते हुए , और फिर उस अनुक्रम के आधार पर, उसके पीछे प्रत्येक संबंधित पत्र के साथ इमारतों को मुद्रित किया जाता है।