Треугольник Паскаля - PullRequest
       23

Треугольник Паскаля

1 голос
/ 16 ноября 2009

Я ищу треугольник Паскаля с использованием скрипта 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:

Ответы [ 6 ]

3 голосов
/ 16 ноября 2009

Вот правильный путь , чтобы сделать треугольник Паскаля.

http://ptri1.tripod.com/

http://en.wikipedia.org/wiki/Pascal%27s_triangle

alt text

3 голосов
/ 16 ноября 2009

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

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

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

2 голосов
/ 13 июня 2012

На самом деле следующая строка пересекается с суммой осей последней строки. Например, если последняя строка [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]))
1 голос
/ 02 января 2013

попробуйте модуль 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 голосов
/ 25 августа 2013
 // 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);

          }
0 голосов
/ 11 августа 2012

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

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)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...