top of page

Voici l'accès à mes programmes

def fonction1(x,y):

     if x!=0 and y!=0:

         return 1/(x*y)

     else:

          return None

print (fonction1(2,3))

def fonction2(x,y):

     if x==0 or y==0:

          return None

     else:

          1/(x*y)

Fonctions booléennes

Addition binaire

#n=[True,False,True,True,False,True,True,False,True]
#p=[True,False,True,True,False,True,True,False,True]

n=[1,0,1,0,1,0,1,0,1,0]
p=[1,0,1,0,1,0,1,0,1,0]
r=[0,0,0,0,0,0,0,0,0,0,0]
c=0


for i in range(9,-1,-1):
  a = n[i]
  b = p[i]
  print(i)
  r[i+1] =(a
and not b and not b) or (not a and b and not c) or (not a and not b and c) or (a and b and c)
  c = (a
and b) or (b and c) or (a and c)

r[0]=c
print(r)

a=
"1010101010"
b="1010101010"
sum=bin(int(a,2)+int(b,2))
print(sum)


console python:
>>>
9
8
7
6
5
4
3
2
1
0
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0]
0b10101010100

Conversion d'un nombre binaire

def bin(n):
 
  """Convertit un nombre en binaire"""
    q = -1
    res =
''
    while q != 0:
        q = n // 2
        r = n % 2
        res =
'r' + res
        n = q
   
return res
print (bin(3))

def conversion(n):
   
if n > 1:
        conversion(n//2)
    print(n%2,end=
"")
#Demander à l'utilisateur d'entrer un nombre
nbr = int(input("Entrer un nombre decimal:"))
conversion(nbr)


Console:
>>>

rr
Entrer un nombre decimal:13

1101

Programme de popularité de sites webs

import random
PageWeb=[
"A","B","C","D","E","F"]
Hypertexte={}
Hypertexte={(
"A"):("B","C","D"),
(
"B"):("C"),
(
"C"):("A","E","D"),
(
"D"):("F","E","C","A","B"),
(
"E"):("C","F","D"),
(
"F"):("E")}
Nb_clic={}
Nb_clic={
"A":0,"B":0,"C":0,"D":0,"E":0,"F":0}
Total_clic=0

for i in range(1000):
    z=random.random()
    x=random.choice(PageWeb)
   
while z <0.80:
        Nb_clic[x] = Nb_clic[x]+1
        Total_clic[x] = Total_clic[x]+1
print(x,Nb_clic)

from math import *
x=[0, 54, -15, -23, 47, 12, 28, 30, 14, -88, 2, 92, -6, 13,-27]
y=[0, 41, 99, -40, -20, 0, -99, -5, 14, -98, 16, 97, 55, 43, 3]
distances=[]
maisons=[]

def distance_entre_deux_points (xa,xb,ya,yb):
   
return sqrt((xb-xa)**2+(ya-yb)**2)

for j in range (1,len(x)):
    dist_inter=[]
   
for i in range (1,len(x)):
        dist_inter.append(distance_entre_deux_points(x[i-1],x[i],y[i-1],y[i]))
        distances.append(min(dist_inter))
        maisons.append(dist_inter.index(min(dist_inter)))

Algorithme Glouton (ma version)

# Créé par j.laclaverie, le 15/12/2023 en Python 3.7
from math import *
x=[0, 54, -15, -23, 47, 12, 28, 30, 14, -88, 2, 92, -6, 13,-27]
y=[0, 41, 99, -40, -20, 0, -99, -5, 14, -98, 16, 97, 55, 43, 3]
distances=[0]
# stocke toutes les distances minimales
maisons=[0] # Stocke tous les indices des maisons les plus proches

def distance_entre_deux_points (xa,xb,ya,yb):
   
return sqrt((xb-xa)**2+(ya-yb)**2)

for j in range (1,len(x)):
    dist_inter=[]
# stocke toutes les distances entre le point central et les maisons
    for i in range (1,len(x)):
       
if i not in maisons:
            dist_inter.append(distance_entre_deux_points(x[maisons[-1]],x[i],y[maisons[-1]],y[i]))
       
else : dist_inter.append(10000)
    distances.append(min(dist_inter))
    maisons.append(dist_inter.index(min(dist_inter)))

Algorithme Glouton (Correction)

Nombreux problèmes d'indentation sur cette partie qui m'ont causés beaucoup d'erreurs tel que:

Temps total estimé: environ 2 heures

difficulté: moyenne

Tri à bulles

Pour tester les tris à sélection, insertion et à bulle j'ai uniquement tester les listes avec seulement 100 éléments, puis quand j'étais sur que ça à marcher j'ai remis les listes à 200,400,800 et 1000 éléments.

Traceback (most recent call last):
  File "U:\SNT\NSI\(n)automatisation_et_trace_mesure_duree_tri_selection_insertion_sort_sorted.py", line 100, in <module>
  tracer_figure (duree_sort,duree_sorted,duree_insertion, duree_selection,duree_bulle,n)
  File "U:\SNT\NSI\(n)automatisation_et_trace_mesure_duree_tri_selection_insertion_sort_sorted.py", line 93, in tracer_figure
  plt.plot(n,duree_bulle,"o", color='green', label= 'bulle', marker="3")
  File "C:\EduPython\App\lib\site-packages\matplotlib\pyplot.py", line 2796, in plot
  is not None else {}), **kwargs)
  File "C:\EduPython\App\lib\site-packages\matplotlib\axes\_axes.py", line 1665, in plot
  lines = [*self._get_lines(*args, data=data, **kwargs)]
  File "C:\EduPython\App\lib\site-packages\matplotlib\axes\_base.py", line 225, in __call__
  yield from self._plot_args(this, kwargs)
  File "C:\EduPython\App\lib\site-packages\matplotlib\axes\_base.py", line 391, in _plot_args
  x, y = self._xy_from_xy(x, y)
  File "C:\EduPython\App\lib\site-packages\matplotlib\axes\_base.py", line 270, in _xy_from_xy
  "have shapes {} and {}".format(x.shape, y.shape))
ValueError: x and y must have same first dimension, but have shapes (1,) and (284500,)

Tri sort: le plus efficace de tous les tris, capable de trier des millions d'éléments en quelques dixièmes de secondes. Ce tri existe dans Python, j'ai seulement ajouté la variable 'duree' pour calculer le temps.

Tri sorted: le second tri le plus efficace des tris, capable de trier des millions d'éléments en quelques dixièmes de secondes. Comme le précédent, ce tri existe dans Python, j'ai seulement ajouté la variable 'duree' pour calculer le temps.

Tri insertion: beaucoup plus lent que les autres, ce programme a été fait manuellement dans Python à l'aide de plusieurs boucles. La variable 'duree' est toujours présente pour pouvoir évaluer le temps de tri.

Tri sélection : le plus lent, fait manuellement dans Python à l'aide de boucles et conditions. La variable 'duree' est encore là pour le temps.

import random
from time import *
import matplotlib.pyplot as plt
n=
[200,400,800,1000]
duree_insertion=[]
duree_selection=[]
duree_sort=[]
duree_sorted=[]
duree_bulle=[]


def creation_liste_aleatoire(n):
  liste = []

  for k in range(n):
       liste.append(random.randint(0,100))

  return liste

def duree_tri_bulle(liste):
  t1=time()
  m = len(liste)

  for i in range(m):
       for j in range(
0, m-i-1):
           if liste[j] > liste[j+1] :
               liste[j], liste[j+1] = liste[j+1], liste[j]
               for i in range(len(liste)):
                   t2=time()
                   duree=t2-t1
  print("
Tri à bulle,           durée = " ,duree)
  duree_bulle.append(duree)

  random.shuffle(liste)


def duree_tri_sort(liste):
  t1=time()
  liste.sort()
  t2=time()
  duree=t2-t1
  print(
"Tri sort,           durée = " ,duree)
  duree_sort.append(duree)
  random.shuffle(liste)


def duree_tri_sorted(liste):
  t1=time()
  liste2=sorted(liste)
  t2=time()
  duree=t2-t1
  print(
"Tri sorted,         durée = " ,duree)
  duree_sorted.append(duree)
  random.shuffle(liste)


def duree_tri_insertion(A):
  t1=time()
  for j in range (1,len(A)):
       key=A[j]
       i=j-1

       while i>=0 and A[i]>key:
           A[i+1]=A[i]
           i=i-1

       A[i+1]=key
  t2=time()
  duree=t2-t1
  print(
"Tri par insertion, durée = " ,duree)
  duree_insertion.append(duree)
  random.shuffle(liste)


def duree_tri_selection(A):
  t1=time()

  for i in range (len(A)):
       min = i

       for j in range(i+1, len(A)):
           if A[min]>A[j]:
               min=j
           tmp=A[i]
           A[i]=A[min]
           A[min]=tmp
  t2=time()
  duree=t2-t1
  print("
Tri par sélection, durée = " ,duree)
  duree_selection.append(duree)
  random.shuffle(liste)



for element in n:
  liste= creation_liste_aleatoire(element)
  print(element)
  duree_tri_insertion(liste)
  duree_tri_selection(liste)
  duree_tri_sort(liste)
  duree_tri_sorted(liste)
  duree_tri_bulle(liste)


def tracer_figure(duree_sort,duree_sorted,duree_insertion, duree_selection,duree_bulle,n):
  plt.figure(figsize = (16, 10))
  plt.plot(n,duree_sort,"o", color='green', label = 'sort', marker="+")
  plt.plot(n,duree_sorted,"o", color='blue', label= 'sorted', marker="x")
  plt.plot(n,duree_insertion,"o", color='red', label= 'insertion', marker="1")
  plt.plot(n,duree_selection,"o", color='yellow', label= 'selection', marker="2")
  plt.plot(n,duree_bulle,"o", color='grey', label= 'bulle', marker="3")
  plt.xlabel
(
'n')
  plt.ylabel(
'Durée')
  plt.title(
"Durée versus nombre d'éléments à trier ")
  plt.legend()
  plt.grid(True)
  plt.show()
tracer_figure(duree_sort,duree_sorted,duree_insertion, duree_selection,duree_bulle,n)

Algorithmes de tris

Fonctions Booléenes
Addition Binaire
Conversion d'un nombre binaire
Programme de popularité de sites webs
Algorithme Glouton
Algorithme Glouton (Correction)
Algorithmes de Tris
bottom of page