2009-11-16 3 views
1

Я ищу Треугольник Паскаля с помощью Python скриптатреугольник Паскаль

я сделал до здесь и не имею ни малейшего представления о том, как добавить на

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

Пока не желая взять что-нибудь от ваших усилий, до сих пор, там * был * Паскаля Треугольник Код гольф: http://stackoverflow.com/questions/1242073/code -golf генерировать-паскаль-треугольник – pavium

ответ

3

Вы должны взять последнюю строку есть в треугольник и создать следующий так:

  1. Поставьте 1 в начале новой строки
  2. Для каждого числа в последней строке, кроме последнего, вычислить сумму числа и его правого соседа и поместить его в новую строку
  3. Поместите еще 1 в конце новой строки

Вы также можете рассчитать новые номера с использованием binomial coefficients, хотя это скорее всего, немного больше работы, чтобы получить право.

2

На самом деле, следующая строка пересекает ось сумма последней строки. Например, если последняя строка [1, 1], следующая строка будет выглядеть так:

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

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

Таким образом, тело цикла может быть таким:

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

здесь мое решение для создания паскаля треугольник

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

попробовать scipy pascal модуль:

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

выход:

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); 

      } 
Смежные вопросы