import doctest
def fk(j): # öncelikle bir faktöriyel hesaplayıcımız olmalı
    i = j # girilen değerden i isimli bir kopya oluşturalım
    while True: # doğru olduğu sürece döngüye gir
        i -= 1 # her defasında i değerini 1 eksilt
        j = i * j # j ile son i değerini çarp ve yeni j değerini oluştur
        if i <= 1: # eğer i değeri 1 'e ulaştı ise
            break # döngüden çıkmalı artık
        if j==0: # eğer j baştan 0 a eşit ise faktöriyel hesabı gereği
            j=1 # fk(0) 'i 1 e eşitle
    return j # ve faktöriyelin sonucunu döndür

def pascal(m): # şimdi asıl fonksiyonumuza gelelim
    """\
    >>> pascal(5)
    [1]
    [1, 1]
    [1, 2, 1]
    [1, 3, 3, 1]
    [1, 4, 6, 4, 1]
    """
    liste=[] # boş bir liste oluşturuyoruz
    n=m # girilen argümanın bir kopyasını oluşturuyoruz
    i , j =0 , 0 # i ve j adında 0 değerlerinde değişkenler oluşturduk
    while j<=i: # j, i den küçük veya eşit olduğu sürece döngüdeyiz
        a=fk(i)/( fk(i-j)*fk(j) ) # i değerinin kombinasyonunu aldık ve a ya eşitledik
        liste.append(a) # listeye bu a değerini ekledik
        j += 1 # j değerini 1 artırdık
        if j == i+1: # eğer j i değerinin 1 fazlasına eşit olduğunda
            i += 1
            j = 0
            print " "*n , liste # buraya dikkat n sayısı burada çok işimize yarıyor!!
            n -= 1
            liste=[]
            if i==m: # i değerimiz m değerimize eşit olduğunda
                break # artık işi bırakalım
doctest.testmod()
