-
Notifications
You must be signed in to change notification settings - Fork 1
/
triangulo_de_pascal.py
101 lines (77 loc) · 2.48 KB
/
triangulo_de_pascal.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
"""
DATA: 15/03/2023
FONTE: https://leetcode.com/problems/pascals-triangle/
ENUNCIADO: Pascal's Triangle
Given an integer numRows, return the first numRows of Pascal's triangle.
In Pascal's triangle, each number is the sum of the two numbers directly above it as shown:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
Example 1:
Input: numRows = 5
Output: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
Example 2:
Input: numRows = 1
Output: [[1]]
Constraints:
1 <= numRows <= 30
PARTICIPANTES:
- Vitor Pestana
- Greg MASTER
- João Moreno
- Conrado
- Álisson
- Luiz
- Everton
- Fred
- Tiago Chaves
"""
import pytest
def descobrindo_proxima_linha(array_entrada):
tam_array = len(array_entrada)
lista_saida = [1]
if tam_array > 1:
for indice_atual in range(tam_array):
indice_proximo = indice_atual + 1
if indice_proximo < tam_array:
lista_saida.append(array_entrada[indice_atual] + array_entrada[indice_proximo])
lista_saida.append(1)
return lista_saida
def descobrindo_proxima_linha_2(array_entrada):
tam_array = len(array_entrada)
if tam_array == 1:
array_retorno = [1, 1]
else:
array_retorno = []
i = 0
while i <= (tam_array - 1):
if i != tam_array - 1:
soma = array_entrada[i] + array_entrada[i + 1]
array_retorno.append(soma)
i += 1
array_retorno.insert(0, 1)
array_retorno.append(1) #array_retorno.insert(tam_array, 1)
return array_retorno
def montando_triangulo_pascal(n):
retorno = [[1],]
for i in range(n - 1):
saida = descobrindo_proxima_linha(retorno[i])
retorno.append(saida)
return retorno
def test_descobrindo_proxima_linha():
assert descobrindo_proxima_linha([1]) == [1, 1]
assert descobrindo_proxima_linha([1, 1]) == [1, 2, 1]
assert descobrindo_proxima_linha([1, 2, 1]) == [1, 3, 3, 1]
assert descobrindo_proxima_linha([1, 3, 3, 1]) == [1, 4, 6, 4, 1]
assert descobrindo_proxima_linha_2([1, 1]) == [1, 2, 1]
assert descobrindo_proxima_linha_2([1, 3, 3, 1]) == [1, 4, 6, 4, 1]
assert montando_triangulo_pascal(1) == [[1]]
assert montando_triangulo_pascal(2) == [[1],[1,1]]
assert montando_triangulo_pascal(3) == [[1],[1,1],[1,2,1]]
assert montando_triangulo_pascal(4) == [[1],[1,1],[1,2,1],[1,3,3,1]]
assert montando_triangulo_pascal(5) == [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
if __name__ == "__main__":
pytest.main(['-svv', __file__])