diff --git a/recurivite/TD1.py b/recursivite/TD1.py similarity index 100% rename from recurivite/TD1.py rename to recursivite/TD1.py diff --git a/recurivite/exercice_MJoannic/dichotomie/iteratif/main.py b/recursivite/exercice_MJoannic/dichotomie/iteratif/main.py similarity index 100% rename from recurivite/exercice_MJoannic/dichotomie/iteratif/main.py rename to recursivite/exercice_MJoannic/dichotomie/iteratif/main.py diff --git a/recurivite/exercice_MJoannic/dichotomie/iteratif/sort_list.py b/recursivite/exercice_MJoannic/dichotomie/iteratif/sort_list.py similarity index 100% rename from recurivite/exercice_MJoannic/dichotomie/iteratif/sort_list.py rename to recursivite/exercice_MJoannic/dichotomie/iteratif/sort_list.py diff --git a/recurivite/exercice_MJoannic/dichotomie/iteratif/tester.py b/recursivite/exercice_MJoannic/dichotomie/iteratif/tester.py similarity index 100% rename from recurivite/exercice_MJoannic/dichotomie/iteratif/tester.py rename to recursivite/exercice_MJoannic/dichotomie/iteratif/tester.py diff --git a/recurivite/exercice_MJoannic/dichotomie/recursif/correction/V1.py b/recursivite/exercice_MJoannic/dichotomie/recursif/correction/V1.py similarity index 100% rename from recurivite/exercice_MJoannic/dichotomie/recursif/correction/V1.py rename to recursivite/exercice_MJoannic/dichotomie/recursif/correction/V1.py diff --git a/recurivite/exercice_MJoannic/dichotomie/recursif/myself/idx/main.py b/recursivite/exercice_MJoannic/dichotomie/recursif/myself/idx/main.py similarity index 100% rename from recurivite/exercice_MJoannic/dichotomie/recursif/myself/idx/main.py rename to recursivite/exercice_MJoannic/dichotomie/recursif/myself/idx/main.py diff --git a/recurivite/exercice_MJoannic/dichotomie/recursif/myself/idx/sort_list.py b/recursivite/exercice_MJoannic/dichotomie/recursif/myself/idx/sort_list.py similarity index 100% rename from recurivite/exercice_MJoannic/dichotomie/recursif/myself/idx/sort_list.py rename to recursivite/exercice_MJoannic/dichotomie/recursif/myself/idx/sort_list.py diff --git a/recurivite/exercice_MJoannic/dichotomie/recursif/myself/idx/tester.py b/recursivite/exercice_MJoannic/dichotomie/recursif/myself/idx/tester.py similarity index 100% rename from recurivite/exercice_MJoannic/dichotomie/recursif/myself/idx/tester.py rename to recursivite/exercice_MJoannic/dichotomie/recursif/myself/idx/tester.py diff --git a/recurivite/exercice_MJoannic/dichotomie/recursif/myself/main.py b/recursivite/exercice_MJoannic/dichotomie/recursif/myself/main.py similarity index 100% rename from recurivite/exercice_MJoannic/dichotomie/recursif/myself/main.py rename to recursivite/exercice_MJoannic/dichotomie/recursif/myself/main.py diff --git a/recurivite/exercice_MJoannic/dichotomie/recursif/myself/sort_list.py b/recursivite/exercice_MJoannic/dichotomie/recursif/myself/sort_list.py similarity index 100% rename from recurivite/exercice_MJoannic/dichotomie/recursif/myself/sort_list.py rename to recursivite/exercice_MJoannic/dichotomie/recursif/myself/sort_list.py diff --git a/recurivite/exercice_MJoannic/dichotomie/recursif/myself/tester.py b/recursivite/exercice_MJoannic/dichotomie/recursif/myself/tester.py similarity index 100% rename from recurivite/exercice_MJoannic/dichotomie/recursif/myself/tester.py rename to recursivite/exercice_MJoannic/dichotomie/recursif/myself/tester.py diff --git a/recurivite/exercice_MJoannic/palindrom.py b/recursivite/exercice_MJoannic/palindrom.py similarity index 100% rename from recurivite/exercice_MJoannic/palindrom.py rename to recursivite/exercice_MJoannic/palindrom.py diff --git a/recursivite/exercice_MJoannic/sqrt/main.py b/recursivite/exercice_MJoannic/sqrt/main.py new file mode 100644 index 0000000..6e8c921 --- /dev/null +++ b/recursivite/exercice_MJoannic/sqrt/main.py @@ -0,0 +1,68 @@ +### D'après WIKIPEDIA +def racine_raphson(number: float, precision: float) -> float: + assert number > 0, "La racine du nombre n'est pas réelle." + + y = (number / 3)+ 1 + diff = precision + 1 + + while diff > precision: + y_next = (y + number / y) / 2.0 + diff = abs(y_next - y) + y = y_next + + return y + +if __name__ == "__main__": + print(racine_raphson(36, 0.000000000000001)**2 == 36) + + +def dichotomie(liste: list[any], element: any, start: int = 0, end: int = None, bypass_sorting: bool = False) -> int: + """Recherche la partie entière de la racine carrée d'un nombre en utilisant une recherche dichotomique. + + Args: + liste (list[any]): Liste de nombres simulée pour la recherche. + element (any): Le nombre dont on cherche la racine carrée entière. + start (int, optional): Index de départ. Defaults to 0. + end (int, optional): Index de fin. Defaults to None. + bypass_sorting (bool, optional): Ignoré dans cette version. + + Returns: + int: La partie entière de la racine carrée. + """ + if end is None: + end = len(liste) - 1 + + if start > end: + return end # Retourne la partie entière trouvée. + + middle = (start + end) // 2 + squared = middle * middle + + if squared == element: + return middle + elif squared < element: + return dichotomie(liste, element, middle + 1, end, bypass_sorting=True) + else: + return dichotomie(liste, element, start, middle - 1, bypass_sorting=True) + +def racine_dich(number: int) -> int: + """ + Calcul de la partie entière de la racine carrée d'un nombre entier. + + Args: + number (int): Nombre dont on cherche la racine carrée. + + Returns: + int: La partie entière de la racine carrée. + """ + assert number >= 0, "Le nombre doit être positif ou nul." + liste = [i for i in range(number // 2 + 2)] # Simule une "liste" pour la dichotomie + return dichotomie(liste, number) + + + +if __name__ == "__main__": + print(racine_dich(36)) # Retourne 6 + print(racine_dich(20)) # Retourne 4 + print(racine_dich(0)) # Retourne 0 + print(racine_dich(1)) # Retourne 1 \ No newline at end of file