Python 3.5 - 262 236 220 Bytes:
-16 Bytes dank @CatsAreFluffy! Meine gesamte Funktion kann jetzt endlich in einer einzigen Zeile stehen! :)
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)]
Es kann ein bisschen lang sein, und es kann neue Zeilen zwischen den Gebäuden drucken, aber es tut, was es braucht. Sie können es selbst testen, um es zu bestätigen.
BEARBEITEN:
Mein vorheriger Golf-Code druckte überhaupt nicht das richtige Muster. Aber jetzt tut es der oben gezeigte und meiner Meinung nach tut es gut. Sie können es auch selbst ausführen, um dies zu bestätigen.
Hinweis: Das Programm druckt alle Kleinbuchstaben hinter jedem "Gebäude". Ich hoffe das ist okay.
Ungolfed Version mit Erklärung:
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! :) )
Grundsätzlich importiere ich zuerst die Funktion "Geordnetes Wörterbuch" des Collections-Moduls und erstelle dann ein geordnetes Wörterbuch, wobei jeder Kleinbuchstabe in der Liste "j" dem entsprechenden Gebäude mit der entsprechenden Länge in Unterstrichen zugewiesen wird. Dann berechne ich die Sequenz basierend auf den Eingaben des Benutzers unter Verwendung der f=lambda w:"a"[w:]or f(w-1)+j[w]+f(w-1)
Funktion und dann basierend auf der Sequenz, die dadurch zurückgegeben wird, werden die Gebäude mit den entsprechenden Buchstaben dahinter ausgedruckt.