GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - erwanCherel/python-algorithm-challenges: 6 exercices algorithmiques en Python (Master 1, ETNA — module IDV-ALG4).

BranchesTags
Open more actions menu

Latest commit

 

History

1 Commit
1 Commit

Folders and files

NameName
Last commit message
Last commit date
flowrent_pagny
flowrent_pagny
 
 
money_for_nothing
money_for_nothing
 
 
morning_sunshine
morning_sunshine
 
 
pattern_particulier
pattern_particulier
 
 
schools_out
schools_out
 
 
tweety_one_pilots
tweety_one_pilots
 
 
.gitignore
.gitignore
 
 
README.md
README.md
 
 
technology.txt
technology.txt
 
 

Repository files navigation

Mystery Machine — Algorithmes Python

6 exercices algorithmiques en Python (Master 1, ETNA — module IDV-ALG4).

Chaque programme lit des données JSON en entrée et écrit le résultat sur la sortie standard.


Exercices

morning_sunshine — Ensoleillement et loyers

Un promoteur veut savoir quel profit il peut dégager en augmentant de 5% les loyers des appartements exposés à l'Est. Les bâtiments plus hauts font de l'ombre à leurs voisins côté Ouest.

Approche : parcours des bâtiments de droite à gauche (Est→Ouest), en gardant la hauteur maximale rencontrée pour déterminer les étages exposés de chaque bâtiment.
Complexité : O(n × m) — n bâtiments, m appartements par étage

python morning_sunshine/morning_sunshine.py '[{"height": 15, "floor_layout": [{"monthly_rent": 1200, "orientations": ["E","N"]}]}]'

money_for_nothing — Stratégie boursière

Trouver la séquence optimale d'achats/ventes sur une série de prix pour maximiser le profit. On doit vendre avant de racheter.

Approche : parcours unique — on identifie les creux locaux (achat) et les pics locaux (vente) successifs.
Complexité : O(n)

python money_for_nothing/money_for_nothing.py '[108, 45, 216, 215, 213, 96, 167, 245]'
# → [1, 2, 5, 7]

schools_out — Allocation de salles

Calculer le nombre minimum de salles pour accueillir un planning de sessions qui se chevauchent.

Approche : on génère deux événements par session (+1 à l'ouverture, -1 à la fermeture), on trie par heure, et le pic du compteur donne la réponse. Les fins et débuts simultanés se traitent correctement grâce au tri secondaire sur le delta.
Complexité : O(n log n)

python schools_out/schools_out.py schools_out/data.json

tweety_one_pilots — Hashtags fréquents

Identifier les hashtags Twitter dont la fréquence dépasse un seuil (en % du nombre total de hashtags).

Approche : Counter sur l'ensemble des hashtags collectés, filtre sur le seuil calculé.
Complexité : O(n) — n = nombre total de hashtags

python tweety_one_pilots/tweety_one_pilots.py tweety_one_pilots/data/data.json

flowrent_pagny — Exécution de workflows

Exécuter un graphe de tâches : les primitives retournent le hash MD5 de leur input, les workflows enchaînent des sous-tâches et hashent la concaténation de leurs résultats.

Approche : résolution récursive avec mémoïsation par (task_id, input) pour éviter les recalculs à l'intérieur d'une même exécution. Le graphe est acyclique par construction (garanti par le sujet).
Complexité : O(w × t) — w exécutions, t tâches uniques

python flowrent_pagny/flowrent_pagny.py "$(cat flowrent_pagny/tasks_1.json)" "$(cat flowrent_pagny/workflow_1.json)"

pattern_particulier — Recherche dans des fichiers

Chercher des chaînes de caractères dans des fichiers texte et retourner leur position (offset).

Approche : re.finditer pour chaque motif sur le contenu de chaque fichier. Résultat trié par fichier puis par motif.
Complexité : O(F × M × N) — F fichiers, M motifs, N taille du fichier

python pattern_particulier/pattern_particulier.py -e dolor -e volupta pattern_particulier/lipsum.txt

Prérequis

Python 3.7+, aucune dépendance externe.

About

6 exercices algorithmiques en Python (Master 1, ETNA — module IDV-ALG4).

Topics

algorithmiquecomplexitepython

Resources

Readme
Activity

Stars

0 stars

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.