This repository has been archived by the owner on Oct 31, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFuncaomatriz.py
141 lines (118 loc) · 3.67 KB
/
Funcaomatriz.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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
def geramatriz(l=2, c=2):
'''
:param l: Linhas
:param c: Colunas
:return: A matriz gerada com o valor escolhido
'''
mat = [[0] * c for z in range(l)]
return mat
def testadiagonal(mat):
# Testa Diagonal principal
# diagonal=False
for d in range(len(velha) - 1):
if mat[d][d] == mat[d + 1][d + 1]: # and (mat[d][d] in 'XO'):
diagonal = True
else:
diagonal = False
break
# Testa contradiagonal
for d in range(len(mat) - 1):
if mat[d][len(mat) - 1 - d] == mat[d + 1][d - 2]: # and (mat[d][d] in 'XO'):
contradiagonal = True
else:
contradiagonal = False
break
if contradiagonal:
return True
return False
def testalinha(mat, linha):
for c in range(len(mat) - 1):
if mat[linha][c] == mat[linha][c + 1]: # and mat[linha][linha] in 'XO':
continue # Continua o loop
else:
return False # Se falhar uma vez retorna False
return True # Caso não falhe retorna True
def testacoluna(mat, coluna):
for c in range(len(mat[0]) - 1):
if mat[c][coluna] == mat[c + 1][coluna]: # and mat[linha][coluna] in 'XO':
continue # Continua o loop
else:
return False # Se falhar uma vez retorna False
return True # Caso não falhe retorna True
def imprimematriz(mat, space=10): # *Mostra* a matriz formatada
for i in range(len(mat)): # Percorre as linhas
print(i + 1, end=' ') # Printa o número da linha
for j in range(len(mat[i])): # Percorre cada termo da linha
if j < len(mat[i]) - 1: # Enquanto j n for o ultimo termo da linha
print(f'{mat[i][j]:<{space}}', end=' ')
else:
print(f'{mat[i][j]}')
def preenchematriz(mat, r1=0, r2=50):
from random import randint
'''
:param mat: Qual matriz
:param r1: valor minimo
:param r2: valor máximo
:return: a matriz preenchida
'''
for j in range(len(mat[0])):
for k in range(len(mat)):
mat[k][j] = randint(r1, r2)
def organizatudo(mat): # Organiza internamente todas as linhas da matriz *Alterar para escolher
''''''
bubblesort(mat)
for i in range(len(mat)):
bubblesort(mat[i])
def bubblesort(Vet):
troca = True
topo = len(Vet) - 2
while troca and topo >= 0:
troca = False
for j in range(0, topo + 1):
if Vet[j] > Vet[j + 1]:
aux = Vet[j]
Vet[j] = Vet[j + 1]
Vet[j + 1] = aux
troca = True
topo = j - 1
def organizadireto(Vet):
# Classifica o vetor em ordem crescente por Seleção Direta
# Método otimizado
for i in range(0, len(Vet) - 1):
for j in range(i + 1, len(Vet)):
if Vet[i] > Vet[j]:
Vet[i],Vet[j] = Vet[j],Vet[i]
def buscabinaria(k, vet):
'''
:param k: O número a ser procurado
:param vet: Em qual vetor será procurado
:return: O Numero de repetições e a casa encontrada')
'''
print(f'Por busca binária:')
# Teste
'''lista = geramatriz(6, 6)
preenchematriz(lista)
imprimematriz(lista)
organizalinhas(lista)
print()
print(f'Organiza linhas')
imprimematriz(lista)
print()
print(f'Organiza tudo')
organizatudo(lista)
imprimematriz(lista)'''
'''velha=geramatriz(3,3)
preenchematriz(velha,0,1)
print('Velha')
imprimematriz(velha)
print('Para linha')
for linha in range(len(velha[0])):
k=testalinha(velha,linha)
print(k)
print('Para coluna')
for linha in range(len(velha)):
k=testacoluna(velha,linha)
print(k)
print('Para diagonais')
k=testadiagonal(velha)
print(k)'''