Python 3.5 - 262 236 220 octets:
-16 octets grâce à @CatsAreFluffy! Ma fonction entière peut maintenant enfin être sur une seule ligne! :)
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)]
Il peut être un peu long et imprimer de nouvelles lignes entre les bâtiments, mais il fait ce qu'il faut. Vous pouvez le tester vous-même pour le confirmer.
ÉDITER:
Mon code de golf précédent n'a pas imprimé le bon motif. Cependant, maintenant celui montré ci-dessus le fait, et il le fait bien à mon avis. Vous pouvez également l'exécuter vous-même pour le confirmer.
Remarque: Le programme imprime toutes les lettres minuscules derrière chaque "bâtiment". J'espère que ça va.
Version non golfée avec explication:
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! :) )
Fondamentalement, ce que je fais, c'est d'abord importer la fonction Dictionnaire ordonné du module collections, puis créer un dictionnaire ordonné, chaque lettre minuscule de la liste "j" étant affectée à son bâtiment correspondant, avec sa longueur correspondante en traits de soulignement. Ensuite, je calcule la séquence, en fonction de l'entrée de l'utilisateur, en utilisant la f=lambda w:"a"[w:]or f(w-1)+j[w]+f(w-1)
fonction, puis en fonction de la séquence renvoyée par cela, les bâtiments, avec la lettre correspondante de chacun derrière, sont imprimés.