From 44977b48d66ee773dfd03df067ffbcd894ec3dcb Mon Sep 17 00:00:00 2001 From: Tiago Garcia Date: Mon, 23 Sep 2024 11:09:56 +0100 Subject: [PATCH] Add Ex1 Signed-off-by: Tiago Garcia --- aula1.py | 96 ++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 62 insertions(+), 34 deletions(-) diff --git a/aula1.py b/aula1.py index ac61157..06e4a9e 100644 --- a/aula1.py +++ b/aula1.py @@ -1,68 +1,96 @@ -#Exercicio 1.1 +# Exercicio 1.1 def comprimento(lista): - pass + return comprimento(lista[1:]) + 1 if lista else 0 -#Exercicio 1.2 + +# Exercicio 1.2 def soma(lista): - pass + return soma(lista[1:]) + lista[0] if lista else 0 -#Exercicio 1.3 + +# Exercicio 1.3 def existe(lista, elem): - pass + return False if not lista else ( + True if lista[0] == elem else existe(lista[1:], elem)) -#Exercicio 1.4 + +# Exercicio 1.4 def concat(l1, l2): - pass + return l1 if not l2 else concat(l1 + [l2[0]], l2[1:]) -#Exercicio 1.5 + +# Exercicio 1.5 def inverte(lista): - pass + return [lista[-1]] + inverte(lista[:-1]) if lista else [] -#Exercicio 1.6 + +# Exercicio 1.6 def capicua(lista): - pass + return lista[0] == lista[-1] and capicua(lista[1:-1]) if lista else True -#Exercicio 1.7 + +# Exercicio 1.7 def concat_listas(lista): - pass + return lista[0] + concat_listas(lista[1:]) if lista else [] -#Exercicio 1.8 + +# Exercicio 1.8 def substitui(lista, original, novo): - pass + if not lista: + return [] + if lista[0] == original: + lista[0] = novo + return [lista[0]] + substitui(lista[1:], original, novo) -#Exercicio 1.9 + +# Exercicio 1.9 def fusao_ordenada(lista1, lista2): - pass + if not lista1: + return lista2 + if not lista2: + return lista1 + if lista1[0] < lista2[0]: + return [lista1[0]] + fusao_ordenada(lista1[1:], lista2) + return [lista2[0]] + fusao_ordenada(lista1, lista2[1:]) -#Exercicio 1.10 + +# Exercicio 1.10 def lista_subconjuntos(lista): - pass + if not lista: + return [[]] + return lista_subconjuntos(lista[1:]) + [lista[:1] + x for x in lista_subconjuntos(lista[1:])] -#Exercicio 2.1 +# Exercicio 2.1 def separar(lista): - pass + pass -#Exercicio 2.2 + +# Exercicio 2.2 def remove_e_conta(lista, elem): - pass + pass -#Exercicio 3.1 + +# Exercicio 3.1 def cabeca(lista): - pass + pass -#Exercicio 3.2 + +# Exercicio 3.2 def cauda(lista): - pass + pass -#Exercicio 3.3 + +# Exercicio 3.3 def juntar(l1, l2): pass -#Exercicio 3.4 -def menor(lista): - pass -#Exercicio 3.6 +# Exercicio 3.4 +def menor(lista): + pass + + +# Exercicio 3.6 def max_min(lista): - pass + pass