CC-231012 Science des données

Notebook originel: cc_231012.ipynb

CC-231012 Science des données🔗

Date: 12 octobre 2023
Durée: 1 h 30

Consignes🔗

Créez un répertoire CC231012_NOM_Prenom/ dans lequel vous travaillerez, et où sera stocké le package python en développement, selon les instructions ci-dessous.

Vous devez alors mettre ce répertoire sous contrôle git sur un projet dédié sur le serveur https://gitlab.in2p3.fr, et en transmettre l’adresse à y.copin@ipnl.in2p3.fr.

Si, par manque de temps ou de connaissance, vous ne pouvez pas créer un dépôt git, envoyez par mail la distribution source du package à y.copin@ipnl.in2p3.fr (cette solution sera pénalisée dans la notation).

Carré magique🔗

Nous avons vu en exercice l’algorithme de création de carrés magiques d’ordre impair:

[1]:
def carremagique(n):
    """
    Retourne le carré magique d'ordre n (impair).
    """

    assert n % 2 == 1, f"L'ordre {n} n'est pas impair."

    array = [[0 for j in range(n)] for i in range(n)]

    i, j = n, (n + 1) // 2
    array[i - 1][j - 1] = 1

    for k in range(2, n**2 + 1):
        i2 = (i + 1) % n
        j2 = (j + 1) % n
        if array[i2 - 1][j2 - 1] == 0:
            i, j = i2, j2
        else:
            i = (i - 1) % n
        array[i - 1][j - 1] = k

    return array
  1. Inclure cette fonction dans un fichier carremagique.py.

  2. Y commenter succinctement ce code pour expliquer les différentes parties de l’algorithme.

  3. Dans le même fichier, écrire une fonction constante_magique(n) qui retourne la constante magique d’un carré magique d’ordre \(n\), c.-à-d. l’entier \(n\times(n^2+1)/2\).

  4. Ajouter une fonction booléenne est_carre(array) testant si un tableau 2D est carré, c.-à-d. constitué de n listes de n éléments (utiliser les fonctions python all ou any).

  5. Ajouter une fonction booléenne est_magique(array) testant si un tableau carré (pas nécessairement d’ordre impair) est magique, c.-à-d. que toutes les sommes des lignes, des colonnes et des diagonales sont égales à la constante magique du tableau.

    1. Cette fonction verifiera d’abord l’hypothèse que le tableau est carré (assert).

    2. Pour réaliser le test, calculer d’abord la somme de toutes les lignes, et vérifier qu’elles sont toutes égales à la constante magique:

      constante = constante_magique(len(array))
      somme_lignes = [ sum(ligne) for ligne in array ]
      test_lignes = all([ somme == constante for somme in somme_lignes ])
      
    3. Réaliser le même test sur les colonnes.

    4. Réaliser le même test sur les deux diagonales principales.

Packaging🔗

  1. Créer un package carre_nom_prenom constitué du seul module carremagique.py précédent, avec l’arborescence suivante:

    CC231012_Nom_Prenom/
    ├── carre_nom_prenom
    │   ├── carremagique.py
    │   └── __init__.py
    ├── setup.cfg
    └── setup.py
    

    avec les fichiers suivants (à adapter si nécessaire):

  2. Créer un fichier __main__.py à votre package pour pouvoir exécuter:

    $ python -m carre_nom_prenom 5
    11  18  25   2   9
    10  12  19  21   3
     4   6  13  20  22
    23   5   7  14  16
    17  24   1   8  15
    

    Utiliser sys.argv (ou argparse pour un bonus) pour la gestion de l’argument sur la ligne de commande.

  3. Commit/push toutes vos modifications sur votre répo central git, et envoyer l’adresse de ce répo à y.copin@ipnl.in2p3.fr.

    Si vous n’avez pas réussi à stocker votre package sous git, générer une distribution des sources de votre package avec la commande

    $ python setup.py sdist
    

    et envoyer l’archive correspondante (générée sous dist/) à y.copin@ipnl.in2p3.fr.

    Si vous n’avez pas non plus réussi à configurer votre package, générer manuellement une archive de votre package:

    $ tar cvzf CC231012_NOM_Prenom.tgz CC231012_NOM_Prenom/
    

    et envoyer le tarball.

[ ]:

Cette page a été générée à partir de cc_231012.ipynb.