Error que no localizo
Publicado por Raquel (12 intervenciones) el 03/11/2017 09:55:11
hola, tengo un problema y es que he realizado un ejercicio que consiste en programar el cálculo del punto de silla de una matriz (el enunciado concreto se muestra a continuación) pero al probar los ejemplos en las matrices en las que sí hay puntos de silla en lugar de devolverlos me devuelve siempre False. Adjunto el código ya que no sé donde puede estar el error.
Gracias!
Gracias!
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
# EJERCICIO 12
# ------------
#
#
# Decimos que el elemento a_ij de una matriz cuadrada A es un punto de silla
# si es el máximo de los elementos de la fila i y el mínimo de los elementos
# de la columna j. Es posible probar que una matriz cuyos elementos son
# todos distintos tiene a lo sumo un único punto de silla.
# Definir una función silla que recibiendo como entrada una matriz A
# (representada mediante la lista de sus filas) con números distintos,
# devuelva la tupla (i, j) tal que el elemento a_ij es un punto de silla de
# A. Devolver False si la matriz no tiene puntos de silla.
# Ejemplos:
# >>> punto_de_silla([[1,2,3],[4,5,6],[7,8,9]])
# (0, 2)
# >>> punto_de_silla([[11,12],[14,9]])
# False
# >>> punto_de_silla([[1,4,3,2],[9,8,7,6],[5,10,11,13],[12,14,15,16]])
# (0, 1)
# -------------------------------------------------------------------------
#
def punto_de_silla(m):
nfilas=len(m)
ncols=len(m[0])
max_filas=[float("inf")]*len(m)
min_col=[float("-inf")]*len(m[0])
for i in range(nfilas):
for j in range(ncols):
if m[i][j]>max_filas[i]:
max_filas[i]=m[i][j]
if m[i][j]<min_col[j]:
min_col[j]=m[i][j]
for i in range(nfilas):
for j in range(ncols):
puntos_silla=[]
if max_filas[i]==min_col[j]:
puntos_silla.append((i,j))
else:
return False
return puntos_silla
Valora esta pregunta


0