Elementos de Programação - LMAC, MEBiom 2017/18

Ficha 2 - Enunciado A (1 valor, 10 minutos)

Número:

Nome:

Defina imperativamente em Python uma função todascolQ que dada uma matriz m e um valor k devolva True se k ocorre em todas as colunas de m, e False caso contrário.

Por exemplo, todascolQ([[1,2,3],[0,0,1],[1,1,5]],1) deve dar como resultado True, mas todascolQ([[1,2,3],[0,0,0],[1,1,5]],1) deve dar como resultado False.

Neste exercício não pode usar definições por compreensão nem métodos. As únicas operações sobre listas permitidas são: lista vazia ([]), acesso aos elementos da lista por posição (lista[posição]), seccionamento da lista (lista[posição:posição]), concatenação (+), comparação com a lista vazia (==[]) e cálculo do comprimento (len).

In [2]:
def todascolQ(m,k):
    j=0
    r=True
    while r and j<len(m[1]):
        i=0
        ja=False
        while not(ja) and i<len(m):
            if m[i][j]==k:
                ja=True
            else:
                i=i+1
        r=ja
        j=j+1
    return r
In [3]:
todascolQ([[1,2,3],[0,0,1],[1,1,5]],1)
Out[3]:
True

Elementos de Programação - LMAC, MEBiom 2017/18

Ficha 2 - Enunciado B (1 valor, 10 minutos)

Número:

Nome:

Defina imperativamente em Python uma função linunQ que dada uma matriz m devolva True se existe uma linha de m em que só uma entrada é não nula, e False caso contrário.

Por exemplo, linunQ([[1,2,3],[0,0,7],[1,1,5]]) deve dar como resultado True, mas linunQ([[1,1,1],[0,0,0],[0,5,-3]]) deve dar como resultado False.

Neste exercício não pode usar definições por compreensão nem métodos. As únicas operações sobre listas permitidas são: lista vazia ([]), acesso aos elementos da lista por posição (lista[posição]), seccionamento da lista (lista[posição:posição]), concatenação (+), comparação com a lista vazia (==[]) e cálculo do comprimento (len).

In [6]:
def linunQ(m):
    i=0
    r=False
    while (not r) and i<len(m):
        j=0
        nn=0
        while (nn<2) and j<len(m[1]):
            if m[i][j]!=0:
                nn=nn+1
            j=j+1
        r=(nn==1)
        i=i+1
    return r
In [7]:
linunQ([[1,2,3],[0,0,7],[1,1,5]])
Out[7]:
True

Elementos de Programação - LMAC, MEBiom 2017/18

Ficha 2 - Enunciado C (1 valor, 10 minutos)

Número:

Nome:

Defina imperativamente em Python uma função algcolposQ que dada uma matriz m devolva True se existe uma coluna de m cujas entradas são todas positivas, e False caso contrário.

Por exemplo, algcolposQ([[1,2,3],[0,-1,7],[1,1,5]]) deve dar como resultado True, mas algcolposQ([[1,1,1],[0,-1,0],[0,5,3]]) deve dar como resultado False.

Neste exercício não pode usar definições por compreensão nem métodos. As únicas operações sobre listas permitidas são: lista vazia ([]), acesso aos elementos da lista por posição (lista[posição]), seccionamento da lista (lista[posição:posição]), concatenação (+), comparação com a lista vazia (==[]) e cálculo do comprimento (len).

In [8]:
def algcolposQ(m):
    j=0
    r=False
    while not(r) and j<len(m[1]):
        i=0
        p=True
        while p and i<len(m):
            if m[i][j]>0:
                i=i+1
            else:
                p=False
        r=p
        j=j+1
    return r
In [9]:
algcolposQ([[1,2,3],[0,-1,7],[1,1,5]])
Out[9]:
True

Elementos de Programação - LMAC, MEBiom 2017/18

Ficha 2 - Enunciado D (1 valor, 10 minutos)

Número:

Nome:

Defina imperativamente em Python uma função lincresQ que dada uma matriz m devolva True se todas as linhas de m são estritamente crescentes, e False caso contrário.

Por exemplo, lincresQ([[1,2,3],[-1,0,7],[-1,1,5]]) deve dar como resultado True, mas lincresQ([[1,1,1],[0,1,2],[-3,0,5]]) deve dar como resultado False.

Neste exercício não pode usar definições por compreensão nem métodos. As únicas operações sobre listas permitidas são: lista vazia ([]), acesso aos elementos da lista por posição (lista[posição]), seccionamento da lista (lista[posição:posição]), concatenação (+), comparação com a lista vazia (==[]) e cálculo do comprimento (len).

In [12]:
def lincresQ(m):
    i=0
    r=True
    while r and i<len(m):
        j=1
        cr=True
        while cr and j<len(m[1]):
            if m[i][j]>m[i][j-1]:
                j=j+1
            else:
                cr=False
        r=cr
        i=i+1
    return r
In [13]:
lincresQ([[1,2,3],[-1,0,7],[-1,1,5]])
Out[13]:
True