• Aucun résultat trouvé

TD 2 - Strings - Listes FORCE 1

N/A
N/A
Protected

Academic year: 2022

Partager "TD 2 - Strings - Listes FORCE 1"

Copied!
4
0
0

Texte intégral

(1)

TD 2 - Strings - Listes

FORCE 1

1. Création de tableau from random import * a = []

for k in range(10) : a.append(randint(-10,10)) b = []

for k in range(10):

if a[k]<=0 : b.append(a[k]) for k in range(10):

if a[k]>0 : b.append(a[k]) print(a)

print(b)

2. Evaluation de polynôme a = [7,3,4,5]

x = float(input("En quel x veux-tu évaluer P ?")) s = 0

for k in range(len(a)) : s = s + a[k] * x**k print(s)

3. Suite récurrente d'ordre 2 u = []

u.append(1) u.append(1)

for n in range(68) :

u.append ( n*u[n+1] + u[n]/(2*n+1) )

print(u[69]) # le programme affiche alors 5.463456663830753e+94 ou encore

u = [1 for k in range(70)]

for k in range(68) :

u[k+2] = ( k*u[k+1] + u[k]/(2*k+1) )

print(u[69]) # le programme affiche alors 5.463456663830753e+94

4. Fréquence d'apparition from random import * a = []

for k in range(6) : a.append(0) for k in range(600) :

d = randint(0,5) a[d] = a[d] + 1 print(a)

5. Sous-liste croissante from random import * a = []

for k in range(10) : a.append(randint(1,100)) c = 1

while c<=9 and a[c] >= a[c-1] : c=c+1 print(a)

print(c)

1

(2)

6. Récurrence forte u = []

u.append(1)

for n in range(69) :

s = 0 # on va calculer u(n+1)

for k in range(n+1):

s = s + u[k] / (n+k+2)

u.append(s) # hop, on a u(n+1)

print(u[69]) # le programme affiche alors 0.19764471643130524 7. Déplacement dans un tableau

from random import * a = [6,3,4,9,0,2,1,8,7,5]

pos = int (input ("position de départ ?")) nb = int (input ("Nb de sauts ?"))

for k in range(nb) : pos = a[pos]

print(pos)

8. Calcul de fréquences from random import * a = []

for k in range (50) : a.append(0) s = 0

c = 0

while s<50 :

de = randint(1,50) a[de-1] = 1

s = 0

for k in range(50) : s = s + a[k]

c = c + 1 print(c)

FORCE 2

9. Création d'une permutation from random import * a = []

for k in range(20) : a.append(k) for k in range(19) :

ech = randint(k,19) tmp = a[k]

a[k] = a[ech]

a[ech] = tmp print(a)

10. Plus longue séquence constante from random import * a = []

for k in range(10) : a.append(randint(1,3))

ch = 0 # longueur de la plus longue séquence for deb in range(9) :

IDX = deb +1

c = 1 # on va compter combien de fois a[deb] apparaît while (IDX < 10 and a[IDX]==a[deb]) :

c = c + 1 IDX = IDX + 1 if c > ch : ch = c print(a)

print(ch)

2

(3)

11. La moyenne des autres a = [7,13,0,1,18,16,-21]

for k in range(10) :

b = [] # nous allons créer un nouveau tableau for i in range(len(a)):

s = 0 # calculons le nouveau a[i]

for j in range(len(a)):

if i!=j : s=s+ a[j]

s = s / (len(a)-1) b.append(s)

a = b # ça y est, le nouveau tableau est prêt

print(a) # cela affiche [4.857142892581797, ... 4.85714242951299 ]

12. Fusion de tableaux ordonnés a = []

b = []

for i in range(10) :

a.append(8*i + 2*(-1)**i) b.append(7*i + 3*(-1)**i) c = []

idx_a = 0 idx_b = 0

for k in range(20) :

if idx_b==10 or a[idx_a]<=b[idx_b] : c.append(a[idx_a])

idx_a = idx_a +1 else:

c.append(b[idx_b]) idx_b = idx_b +1

print(c) # cela affiche [2, 3, 4, 6, 17, 18, 18, 22, 31, 32, 34, 38, 45, 46, 50, 54, 59, 60, 66, 70]

3

(4)

FORCE 3

13. Répétition de sous-chaîne a = input ("Ton mot ?") n = len(a)

ch = 0 # longueur championne

for i in range(n-1) :

for j in range(i+1,n) : # on cherche à partir de i+1

d = 0 # d = longueur commune à partir de i et de j

while j+d<n and a[i+d]==a[j+d] : # tant que les lettres sont égales...

d+=1 # ... d augmente

if d>ch : ch = d # si le champion est battu, on le remplace print(ch)

14. Le code secret

freq = [0 for k in range(3*3*3*3)]

for k in range(3533, 7909):

if k%7==0:

a3 = k%10

a2 = (k // 10) % 10 a1 = (k // 100) % 10 a0 = (k // 1000) % 10 x0 = a0 % 3

x1 = a1 % 3 x2 = a2 % 3 x3 = a3 % 3

code = x3 + 3*x2 + 9*x1 + 27*x0 freq[code] = freq[code] + 1 ch = 3*3*3*3

for k in range(3*3*3*3) :

if freq[k] > 0 and freq[k]<ch : code_ch = k

ch = freq[k]

x3 = code_ch % 3

x2 = (code_ch // 3) % 3 x1 = (code_ch // 9) % 3 x0 = (code_ch // 27) % 3 let = "abc"

mot = let[x0] + let[x1] + let[x2] + let[x3]

print("Le mot de passe est : ",mot)

print("Il correspond au nombre codé en base 3 : ",code_ch) print("Il est apparu ",ch," fois")

Ce programme ache :

Le mot de passe est : ccbb

Il correspond au nombre codé en base 3 : 76 Il est apparu 3 fois

4

Références

Documents relatifs

Note : use gdb, put a breakpoint on printf, run the program, and once gdb breaks in printf, use pframe to check what the stack looks like, and compare the content of the stack with

Pour toutes les planètes en orbite autour du soleil, le rapport entre le arré de leur.. période de révolution et le ube du demi-gr and axe de leur orbite a la

On peut ´ecrire une deuxi`eme fonction qui appelle la premi`ere et renvoie l’indice de la premi`ere occurence de l’´el´ement recherch´e s’il est pr´esent dans le tableau ou

Un polynˆome (creux) sera alors constitu´e d’une liste de monˆomes, cette liste n’´etant pas suppos´ee ˆetre tri´ee en fonction des degr´es des

TD de programmation fonctionnelle et logique Corrig´e du TP 1 : listes et r´ecursivit´e. Fonctions classiques sur les

Écrire une fonction DeuxiemeElement qui, à partir d’une liste ayant au moins deux éléments renvoie le deuxième élément de la liste?. Le nombre d’éléments

◊ remarque : l'inductance est plus grande avec le noyau de fer feuilleté (aimantation induite) ; elle est un peu plus faible avec un noyau de métal non feuilleté (champ magnétique

2) Le serpent qui se mord la queue.... A l'exécution, faire évaluer comptegene en prenant comme liste argument la fonction comptegene elle même : vous saurez ainsi combien vous