Python 3.5 - 262 236 220 byte:
-16 byte terima kasih kepada @CatsAreFluffy! Seluruh fungsi saya sekarang akhirnya bisa dalam satu baris! :)
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)]
Mungkin agak panjang, dan mungkin mencetak baris baru di antara membangun, tetapi dalam melakukan apa yang dibutuhkan. Anda dapat mengujinya sendiri untuk mengonfirmasi.
EDIT:
Kode golf saya sebelumnya tidak mencetak pola yang tepat sama sekali. Namun, sekarang yang ditunjukkan di atas tidak, dan itu baik menurut saya. Anda juga dapat menjalankannya sendiri untuk mengonfirmasi hal itu.
Catatan: Program ini mencetak semua huruf kecil di belakang setiap "bangunan". Saya harap tidak apa-apa.
Versi tidak dikolomisasi dengan Penjelasan:
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! :) )
Pada dasarnya apa yang saya lakukan adalah pertama-tama mengimpor fungsi Kamus Urutan modul koleksi, dan kemudian membuat kamus berurutan, dengan masing-masing huruf kecil dalam daftar "j" ditugaskan ke bangunan yang sesuai, dengan panjang yang sesuai di garis bawah. Kemudian saya menghitung urutan, berdasarkan input pengguna, menggunakan f=lambda w:"a"[w:]or f(w-1)+j[w]+f(w-1)
fungsi, dan kemudian berdasarkan urutan yang dikembalikan oleh itu, bangunan, dengan huruf yang sesuai masing-masing di belakangnya, dicetak.