Hướng dẫn pascals triangle in python - tam giác pascals trong python

Tam giác Pascal sườn là một mô hình của tam giác dựa trên NCR, dưới đây là biểu diễn hình ảnh của Tam giác Pascal.

Show

    Example:

    Input: N = 5
    Output:
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1

    Phương pháp 1: Sử dụng công thức NCR, tức là N!/(N-R)! R!Using nCr formula i.e. n!/(n-r)!r!

    Sau khi sử dụng công thức NCR, biểu diễn hình ảnh trở thành:

              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3

    Algorithm:

    • Lấy một số hàng để được in, giả sử nó là n
    • Làm cho phép lặp bên ngoài I từ 0 đến n lần để in các hàng.
    • Tạo lần lặp bên trong cho J từ 0 đến (n ​​- 1).
    • In không gian trống đơn.
    • Đóng vòng bên trong (vòng J) // nó cần thiết cho khoảng cách bên trái.
    • Tạo lần lặp bên trong cho J từ 0 đến i.
    • In NCR của I và J.
    • Đóng vòng bên trong.
    • In ký tự dòng mới (\ n) sau mỗi lần lặp bên trong.

    Implementation:

    Python3

    from math import

              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    0

              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    1
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    2
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    3

              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    4
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    5
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    6
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    7
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    8

              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    9
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    4
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    1
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    6
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    7
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    4
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    5
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    6
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    7
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    8
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    9

    C(line, i) = C(line, i-1) * (line - i + 1) / i
    0
    C(line, i) = C(line, i-1) * (line - i + 1) / i
    1
    C(line, i) = C(line, i-1) * (line - i + 1) / i
    2
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    2
    C(line, i) = C(line, i-1) * (line - i + 1) / i
    4
    C(line, i) = C(line, i-1) * (line - i + 1) / i
    5

              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    9
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    4
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    1
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    6
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    7
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    1
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    7
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    8
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    9

    C(line, i) = C(line, i-1) * (line - i + 1) / i
    0
    C(line, i) = C(line, i-1) * (line - i + 1) / i
    1
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    7
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    8
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    8
    11**0 = 1
    11**1 = 11
    11**2 = 121
    11**3 = 1331
    0
    11**0 = 1
    11**1 = 11
    11**2 = 121
    11**3 = 1331
    1
    11**0 = 1
    11**1 = 11
    11**2 = 121
    11**3 = 1331
    2
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    5
    11**0 = 1
    11**1 = 11
    11**2 = 121
    11**3 = 1331
    4
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    2
    C(line, i) = C(line, i-1) * (line - i + 1) / i
    4
    C(line, i) = C(line, i-1) * (line - i + 1) / i
    5

              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    9
    C(line, i) = C(line, i-1) * (line - i + 1) / i
    1
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    0

    Output:

          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1

    Độ phức tạp về thời gian: O (N2) Không gian phụ trợ: O (1) O(N2)
    Auxiliary space: O(1)

    Phương pháp 2: Chúng ta có thể tối ưu hóa mã trên bằng khái niệm sau đây về hệ số nhị thức, mục nhập I'th trong một dòng dòng là hệ số nhị thức c (dòng, i) và tất cả các dòng bắt đầu với giá trị 1. Ý tưởng là tính toán C (dòng, i) sử dụng C (dòng, I-1).We can optimize the above code by the following concept of a Binomial Coefficient, the i’th entry in a line number line is Binomial Coefficient C(line, i) and all lines start with value 1. The idea is to calculate C(line, i) using C(line, i-1).

    C(line, i) = C(line, i-1) * (line - i + 1) / i

    Implementations:

    Python3

              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    1
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    2
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    3

              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    4
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    5
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    6
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    7
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    8

              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    9
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    4
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    1
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    6
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    7
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    4
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    5
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    6
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    7
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    8
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    9

    C(line, i) = C(line, i-1) * (line - i + 1) / i
    0
    C(line, i) = C(line, i-1) * (line - i + 1) / i
    1
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    8import0import1
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    2import3

              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    9
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    4
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    1
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    6
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    7
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    1
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    7
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    8
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    9

    Độ phức tạp về thời gian: O (N2) Không gian phụ trợ: O (1)

    C(line, i) = C(line, i-1) * (line - i + 1) / i
    0
    C(line, i) = C(line, i-1) * (line - i + 1) / i
    1
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    8import0
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    13
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    2
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    15
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    16
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    17

    Phương pháp 2: Chúng ta có thể tối ưu hóa mã trên bằng khái niệm sau đây về hệ số nhị thức, mục nhập I'th trong một dòng dòng là hệ số nhị thức c (dòng, i) và tất cả các dòng bắt đầu với giá trị 1. Ý tưởng là tính toán C (dòng, i) sử dụng C (dòng, I-1).

              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    9
    C(line, i) = C(line, i-1) * (line - i + 1) / i
    1
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    0

    Output:

          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1

              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    4
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    5
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    6
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    7
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    8
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    8from0
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    7
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    8
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    9
    O(N2)
    Auxiliary Space: O(1)

              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    9
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    4
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    1
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    6
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    7
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    8math 0from0
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    5
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    6
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    7__28____29
    This is the most optimized approach to print Pascal’s triangle, this approach is based on powers of 11.

    11**0 = 1
    11**1 = 11
    11**2 = 121
    11**3 = 1331

    Implementation:

    Python3

              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    1
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    2
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    3

              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    4
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    5
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    6
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    7
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    8

              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    9
    C(line, i) = C(line, i-1) * (line - i + 1) / i
    1
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    8import0
    11**0 = 1
    11**1 = 11
    11**2 = 121
    11**3 = 1331
    1
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    4
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    5
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    47
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    2import3

              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    9
    C(line, i) = C(line, i-1) * (line - i + 1) / i
    1
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    8import0
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    54
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    55
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    8
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    57
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    58
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    57
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    8
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    61
    11**0 = 1
    11**1 = 11
    11**2 = 121
    11**3 = 1331
    1
    11**0 = 1
    11**1 = 11
    11**2 = 121
    11**3 = 1331
    1
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    64

    Output:

          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1

              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    9
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    4
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    1
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    6
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    7
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    4
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    5
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    6
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    7
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    8
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    9
    O(N)
    Auxiliary Space: O(1)

              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    9
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    4
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    1
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    6
              0C0
           1C0   1C1
        2C0   2C1   2C2
     3C0   3C1   3C2    3C3
    7
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    1
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    7
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    8
          1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
    9