### Exercice 1 ### def estDedans(l,e): for el in l: if e==l: return True return False def maximum(l): max = l[0] for e in l: if e>max: max = e return max def count(l,e): s = 0 for el in l: if el==e: s+=1 return s def moyenne(l): s = 0 for el in l: s+=el return s/len(l) def var(l): s = 0 m = moyenne(l) for el in l: s+=(el-m)**2 return sqrt(s/len(l)) def majoritaire(l): cmax = 0 emax = l[0] for el in l: c = count(el,l) if c > cmax: emax = el return emax ### Exercice 2 ### # Structure: liste de 2-tuples contenant (volume,masse) # Algorithme naif: on teste tout def pasTropLourd_lourd(l,m): selection = None #list vmax=0 for i in range(2**len(l)): test = [l[k] for k in range(len(l)) if ((i>>k)%2)==1] mas = sum([t[1] for t in test]) vol = sum([t[0] for t in test]) if mas<=m and vol>vmax: selection = test vmax=vol return selection # Bernard ici présent est en O(2^n) def pasTropLourd(l,m): if(len(l)==0): return l if(len(l)==1): return l if l[0][1]<=m else [] # Avec ou sans ? reste = l[1:] (vm,ms) = l[0] if ms>m: return pasTropLourd(reste,m) else: p1 = pasTropLourd(reste,m) p2 = pasTropLourd(reste,m-ms) v1 = sum([t[0] for t in p1]) v2 = sum([t[0] for t in p2])+vm return p1 if v1>=v2 else p2+[(vm,ms)] ### Exercice 3 ### import numpy as np def bell(n): bin = np.zeros((n+1,n+1),dtype=int) bin[0,0] = 1 for i in range(1,n+1): bin[i,0]=1 bin[i,1:] = bin[i-1,1:] + bin[i-1,:-1] B = np.zeros((n+1,),dtype=int) B[0] = 1 print(bin[5,:]) for i in range(1,n+1): B[i] = np.dot(B,bin[i,:].T) return B