2009-11-16 8 views
1

Je cherche un triangle Pascals en utilisant un script pythontriangle de Pascal

Je l'ai fait jusqu'à ici et ne savent pas comment ajouter le

numstr= raw_input("please enter the height:") 
height = int() 

tri = [] 

row1 = [1] 
row2 = [1, 1] 
tri.append(row1) 
tri.append(row2) 

while len(tri) < height: 
+2

Sans vouloir rien enlever à vos efforts, jusqu'à présent, il était * * Code Triangle de Pascal Golf: http://stackoverflow.com/questions/1242073/code -golf-generate-pascals-triangle – pavium

Répondre

3

Vous devez prendre la dernière ligne, il est le triangle et créer le prochain comme ceci:

  1. Mettez un 1 au début de la nouvelle ligne
  2. Pour chaque numéro dans la dernière ligne, sauf la dernière, calculer la somme du nombre et de son voisin de droite et de le mettre dans la nouvelle ligne
  3. Mettez une autre 1 à la fin de la nouvelle ligne

Vous pouvez également calculer les nouveaux numéros en utilisant binomial coefficients, bien que ce soit probablement un peu plus de travail pour bien faire les choses.

2

En fait, la ligne suivante est la somme de l'axe croisé de la dernière rangée. Par exemple, si la dernière ligne est [1, 1], la ligne suivante serait:

 [1, 1] 
+ [1, 1] 
----------- 
= [1, 2, 1] 

    [1, 2, 1] 
+ [1, 2, 1] 
-------------- 
= [1, 3, 3, 1] 

Ainsi, le corps de la boucle peut être comme ceci:

tri.append(map(lambda x, y: x + y, [0] + tri[-1], tri[-1] + [0])) 
0

ici est ma solution pour générer un triangle pascals

def factorial(x): 

    return 1 if x == 0 else x * factorial(x - 1) 

def triangle(n): 

    return [[factorial(i)/(factorial(j) * factorial(i - j)) for j in range(i + 1)] for i in range(n)] 
1

essayer le module scipy pascal:

from scipy.linalg import pascal 
pascal(6, kind='lower') 

sortie:

array([[ 1, 0, 0, 0, 0, 0], 
    [ 1, 1, 0, 0, 0, 0], 
    [ 1, 2, 1, 0, 0, 0], 
    [ 1, 3, 3, 1, 0, 0], 
    [ 1, 4, 6, 4, 1, 0], 
    [ 1, 5, 10, 10, 5, 1]], dtype=uint64) 
0
// C++ code for pascal triangle 
#include<stdio.h> 
#include<ctype.h> 
#include<conio.h> 
#include<time.h> 
#include<stdlib.h> 

long unsigned int Factorial(long unsigned int Number) 
{ 
long unsigned int Fact=0; 
if (Number==0) 
    return (long unsigned int) 1; 
    else 

     { Fact=Number*Factorial(Number-1); 
     return Fact; 
     } 

    } 


    long unsigned int Combination(long unsigned int num1,long unsigned int num2) 
    { 
    long unsigned int Comb,num3; 
    long unsigned int Factor1, Factor2,Factor3; 
    Factor1=Factorial(num1); 
    Factor2=Factorial(num2); 
    num3=num1-num2; 
    Factor3=Factorial(num3); 
    Comb=Factor1/(Factor2*Factor3); 

    return(Comb); 

    } 

    int main() 
    { 

    long unsigned int i,j,Num=0; 
    long unsigned int **Matrix; 
    clrscr(); 
    printf(" %d\n " ,sizeof(long unsigned int)); 
    printf("Enter Index of Square Matrix Num =: "); 
    scanf ("%lu",&Num); 



    Matrix=(long unsigned int **) malloc(Num*Num*sizeof(long unsigned int *)); 

    for(i=0;i<Num;i++) 
    { for (j=0;j<Num;j++) 
    { *(*(Matrix+i)+j)=0; 
     } 
    } 

    for(i=0;i<Num;i++) 
{ for(j=0;j<=i;j++) 
    { printf(" %lu " , *(*(Matrix+i)+j)); } 

    printf("\n"); 

    } 


    for(i=0;i<Num;i=i+1) 
    { 
    for(j=0;j<=i;j=j+1) 
    { 


    *(*(Matrix+i)+j)=Combination(i,j); 

     } 
     printf("\n"); 
    } 

     for(i=0;i<Num;i++) 
     { 
      for(j=0;j<=i;j++) 
     { 

    // printf(" \n %lu %lu \n",i,j); 
    printf(" %lu ",*(*(Matrix+i)+j)); 

    } 
    printf("\n"); 
    } 





     getch(); 
     return(0); 

      }