Exame Tipo

Propaganda
Computação e Programação
(LEMat, MEAmb, MEBiol, MEQ)
Departamento de Matemática, IST
Exame Tipo
2016
Duração: 2h30
Curso:
Número:
não preencher
I–
II –
III –
T:
Nome:
Grupo I
[2,0+2,0+2,0]
a) Defina em Python uma função f que recebe como argumento uma lista v de números
inteiros não vazia, percorre-a posição a posição recorrendo a um ciclo e devolve o par
[p,q] tal que:
• p é a amplitude de v, isto é, a diferença entre a maior e a menor entrada de v;
• q é 1 se o vector v é decrescente e é 0 caso contrário.
b) Defina em Python uma função recursiva g que recebe como argumento uma lista de listas
de números inteiros w e devolve a soma de todos os elementos nas sublistas de w. Pode,
se achar conveniente, definir funções recursivas auxiliares.
c) Defina em Python uma função h que recebe como argumento uma lista de listas w e
devolve a lista dos máximos de cada uma das listas em w.
Grupo II
[4,0+2,0+2,0]
a) Considere grafos dirigidos em que cada arco tem associado um custo (inteiro positivo).
Desenvolva em Python uma implementação que disponibilize as operações seguintes
sobre este tipo de grafos, escolhendo uma implementação eficiente de modo a que cada
grafo seja representado por uma matriz quadrada cuja entrada na linha i, coluna j é
o custo associado ao arco do nó i para o nó j, se existir, e infinito caso contrário:
semarcos(n): grafo com n nós e sem arcos;
arco(g,o,d,k): adiciona ao grafo g um arco de o para d com custo associado k;
dim(g): número de nós do grafo g;
arcoQ(g,o,d): True sse existe em g um arco de o para d;
custo(g,o,d): custo do arco de o para d no grafo g ;
semsaida(g,o,k): True sse não existe em g um arco a partir de o com custo não
superior a k;
1
b) 1) Um caminho num grafo g, é uma lista de nós do grafo em que quaisquer dois
elementos consecutivos na lista estão ligados por um arco em g. O primeiro elemento
da lista diz-se a origem do caminho e o último diz-se o seu destino. Desenvolva
em Python, sobre a camada de abstracção acima desenvolvida e assegurando a
independência da implementação, uma função caminhoQ que recebe uma lista e um
grafo g e devolve True se essa lista for um caminho em g.
2) Desenvolva em Python, sobre a camada de abstracção acima desenvolvida e assegurando a independência da implementação, uma função itinerario que recebe um
grafo g, e dois nós o e d, e devolve, caso exista, uma lista com um caminho com
origem o e destino d e o seu custo. Caso não exista, deverá devolver [[],inf].
Grupo III
[3,0+3,0]
a) Defina, funcionalmente, em Pyhton uma função ordenadaQ que recebe como argumento
uma lista de números inteiros e devolve True se a lista está ordenada por ordem crescente
e False em caso contrário.
b) Uma matriz quadrada A diz-se uma menor da matriz quadrada B se, ao retirar uma linha
e uma coluna a B, se obtém a matriz A. Implemente em Python uma função que recebe
duas matrizes quadradas A e B e testa se A é uma matriz menor de B. Pode, se achar
conveniente, definir funções auxiliares em qualquer paradigma.
2
Download