Я ищу треугольник Паскаля с использованием скрипта 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:
Вот правильный путь , чтобы сделать треугольник Паскаля.
http://ptri1.tripod.com/
http://en.wikipedia.org/wiki/Pascal%27s_triangle
Вы должны взять последнюю строку в треугольнике и создать следующую:
Вы также можете вычислить новые числа, используя биномиальные коэффициенты , хотя это, вероятно, немного больше работы, чтобы получить право.
На самом деле следующая строка пересекается с суммой осей последней строки. Например, если последняя строка [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]))
попробуйте модуль 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)
// 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); }
вот мое решение для создания треугольника Паскаля
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)]