EPFL CS-112(j) POO

Course Website

Cours : Jeudi 8h15–9h00, CM 1 4

Exercices : Jeudi 9h15–11h, INF 3, BC 07-08

Accueil

Site Moodle

Tutoriels

Références

Séries

Projet

Série 5 : Structures de données

Solutions

Cette série a pour objectif de pratiquer l’usage des différentes structures de données disponibles en Python, ainsi que les list comprehenions.

Avant de commencer cette série, il est prévu que vous ayez suivi le tutoriel de cette semaine :

Nous vous recommandons de créer un nouveau projet Python pour chaque série d’exercices. Cela vous permettra d’isoler plus facilement le contenu des différentes semaines.

Cette série contient 2 exercices :

Jeu de société

Dans le jeu de société Brass: Birmingham, on construit des industries sur des villes, ainsi que des chemins de fer pour connecter les villes entre elles. Quand on construit une industrie, elle n’est pas encore “rentabilisée”. C’est seulement si on la vend plus tard qu’elle rapportera des points.

En fin d’ère, on gagne des points en fonction :

Plus précisément :

On compte les points comme suit. Chaque joueur ou joueuse gagne :

Modélisez la situation de jeu ci-dessus. Puis implémentez la fonction compute_score(player: Player) -> int qui calcule le nombre de points gagnés par un joueur ou joueuse. Essayez de réaliser cette implémentation sans boucle (ni fonction récursive), donc en exploitant au maximum les comprehensions.

La fonction sum() de Python calcule la somme des éléments d’une liste d’entiers.

Compteur de mots

Pour des analyses lexicographiques, on veut produire un graphe du nombre d’occurrences des mots dans un texte. Il y a deux fichiers, dont on peut supposer qu’on reçoit le contenu sous forme d’une seule str chacun :

Vous devez découper le texte à analyser en mots :

Ensuite, vous devez compter combien de fois apparaît chaque mot dans le texte. Vous devez éviter de compter les mots à ignorer. On suppose que le texte a été écrit entièrement en minuscules.

Présentez les résultats en ordre décroissants sous la forme suivante :

1234 je
 932 tu
 456 mange
  23 pomme
   1 alambique

à savoir :

N’hésitez pas à consulter la documentation de Python, par exemple la fonction sorted et la classe str. Si vous n’êtes pas convaincu-e par l’aspect “tout en minuscule”, je vous invite à consulter la fonction str.casefold en particulier.

Faites une analyse de complexité de votre implémentation.

Testez votre programme sur le texte complet de l’Odyssée d’Homer. Téléchargez la version “Unicode (664K)”.