Skip to content
Snippets Groups Projects
Commit f7e1a545 authored by orestis.malaspin's avatar orestis.malaspin
Browse files

Mdbnook exercises

parent 43a13e9f
No related branches found
No related tags found
No related merge requests found
......@@ -71,6 +71,13 @@ build:book:
- mdbook test
- mdbook build
build:exercises:
stage: build
script:
- cd exercises
- mdbook test
- mdbook build
build:slides:
stage: build
script:
......@@ -87,6 +94,16 @@ deploy:book:
- mdbook build
- rsync -avz book/html/* ur1bg_malas@ur1bg.ftp.infomaniak.com:web/malaspinas/rust-101/book/
deploy:exercises:
stage: deploy
only:
- main
- merge_request
script:
- cd exercises
- mdbook build
- rsync -avz book/html/* ur1bg_malas@ur1bg.ftp.infomaniak.com:web/malaspinas/rust-101/exercises/
deploy:slides:
stage: deploy
only:
......
[book]
authors = ["Orestis Malaspinas, Michaël El Kharroubi"]
language = "fr"
multilingual = false
src = "src"
title = "Rust-101: Université d'automne"
[output.html]
mathjax-support = true
[output.html.playground]
editable = true
[output.html.print]
enable = true
[output.pdf]
[output.linkcheck]
# Should we check links on the internet? Enabling this option adds a
# non-negligible performance impact
follow-web-links = false
# How should warnings be treated?
#
# - "warn" will emit warning messages
# - "error" treats all warnings as errors, failing the linkcheck
# - "ignore" will ignore warnings, suppressing diagnostic messages and allowing
# the linkcheck to continuing
warning-policy = "warn"
# Résumé des exercices
- [Exercices introductuifs](exercices_intro.md)
- [Exercices avancés](exercices_avances.md)
<!-- - [Les bases du Rust 1](./bases1.md) -->
<!-- - [Les bases du Rust 2](./bases2.md) -->
<!-- - [Les types avancés](./types_avances.md) -->
<!-- - [La généricité et des types composés](./gen_types_composes.md) -->
<!-- - [La propriété](./propriete.md) -->
<!-- - [Modules et visibilité](./modules_visibilite.md) -->
<!-- - [Les petits trucs sympas qui aident au développement](./tooling.md) -->
<!-- - [La gestion des erreurs en Rust](./gestion_erreurs.md) -->
<!-- - [Les closures](./closures.md) -->
<!-- - [Les itérateurs](./iterateurs.md) -->
<!-- - [Les collections](./collections.md) -->
<!-- - [Lifetimes](./lifetimes.md) -->
<!-- - [CLI](./cli.md) -->
<!-- - [Unsafe](./unsafe.md) -->
# Exercices avancés
Les exercices que nous proposons ici sont très vagues. L'objectif est de vous donner des thèmes,
de choses que vous connaissez du cours de programmation et d'algorithmique de l'année passée
et de les implémenter un peu comme vous voulez sans contraintes particulières pour
que vous expérimentiez avec le langage (oui vous êtes des grand·e·s maintenant).
Essayez au maximum d'utiliser les concepts de Rust vus en classe.
Vous trouverez une liste ci-dessous, avec un degré de difficulté croissant (plus ou moins).
L'idée est d'avancer à votre rythme (ce qui n'est pas équivalent à regarder le plafond
en attendant que ça passe) et vous donner des idées d'exercices devenant plus complexes
au fur et à mesure de votre périple.
- Le nombre secret: implémenter le jeu du nombre secret qui serait joué par des IAs utilisant des stratégies différentes.
- Calculer pi: avec la méthode des fléchettes.
- Une pile simple: implémenter une pile utilisant un tableau statique comme structure de données.
- Un tri: un tri à bulles, tri à deux piles et/ou un quicksort ça fait l'affaire.
- Couverture de la reine: écrire un code qui permet de trouver pour une position de départ aléatoire toutes les solutions de couverture de la reine pour un tableau 8x8.
- Les fractions: écrire une librairie de fractions en utilisant les trait `Add`, `Sub`, etc.
- Les vecteurs: écrire une librairie de vecteurs en utilisant les trait `Add`, `Sub`, etc.
- Le jeu du pendu: implémenter le jeu du pendu où les mots sont des chaînes de caractères aléatoires et les lettres tirées sont également tirées au hasard.
- Compter différemment: écrire un programme qui permet de compter comme au tennis où chaque joueur gagne un point avec une probabilité donnée.
- Le puissance 4: simulez le jeu du puissance 4.
- Le jeu de la bataille: simulez le jeu de carte de la bataille entre deux machines.
## Aller plus haut
- Ascii art: écrire un convertisseur d'image en ASCII art.
- Simulation du système solaire: écrire un simulateur de système solaire.
......@@ -20,10 +20,10 @@ Un nombre Armstrong est un nombre qui est la somme de ses propres chiffres, chac
Par exemple, un nombre d'Armstrong est un nombre qui est la somme de ses propres chiffres :
* $9$ est un nombre d'Armstrong, car $9 = 9^1 = 9$,
* $10$ n'est pas un nombre Armstrong, car $10 \neq 1^2 + 0^2 = 1$,
* $153$ est un nombre Armstrong, car : $153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153$,
* $154$ n'est pas un nombre d'Armstrong, car : $154 \neq 1^3 + 5^3 + 4^3 = 1 + 125 + 64 = 190$
* \\(9\\) est un nombre d'Armstrong, car \\(9 = 9^1 = 9\\),
* \\(10\\) n'est pas un nombre Armstrong, car \\(10 \neq 1^2 + 0^2 = 1\\),
* \\(153\\) est un nombre Armstrong, car : \\(153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153\\),
* \\(154\\) n'est pas un nombre d'Armstrong, car : \\(154 \neq 1^3 + 5^3 + 4^3 = 1 + 125 + 64 = 190\\)
Écrivez un programme qui détermine si un nombre est un nombre d'Armstrong.
......@@ -100,33 +100,3 @@ Quels sont les facteurs premiers de 60 ?
Nos diviseurs réussis dans ce calcul représentent la liste des facteurs premiers de 60 : 2, 2, 3 et 5.
Si cela vous amuse vous pouvez vérifier qu'ils sont bien premiers en utilisant l'exercice précédent.
# Exercices avancés
Les exercices que nous proposons ici sont très vagues. L'objectif est de vous donner des thèmes,
de choses que vous connaissez du cours de programmation et d'algorithmique de l'année passée
et de les implémenter un peu comme vous voulez sans contraintes particulières pour
que vous expérimentiez avec le langage (oui vous êtes des grand·e·s maintenant).
Essayez au maximum d'utiliser les concepts de Rust vus en classe.
Vous trouverez une liste ci-dessous, avec un degré de difficulté croissant (plus ou moins).
L'idée est d'avancer à votre rythme (ce qui n'est pas équivalent à regarder le plafond
en attendant que ça passe) et vous donner des idées d'exercices devenant plus complexes
au fur et à mesure de votre périple.
- Le nombre secret: implémenter le jeu du nombre secret qui serait joué par des IAs utilisant des stratégies différentes.
- Calculer pi: avec la méthode des fléchettes.
- Une pile simple: implémenter une pile utilisant un tableau statique comme structure de données.
- Un tri: un tri à bulles, tri à deux piles et/ou un quicksort ça fait l'affaire.
- Couverture de la reine: écrire un code qui permet de trouver pour une position de départ aléatoire toutes les solutions de couverture de la reine pour un tableau 8x8.
- Les fractions: écrire une librairie de fractions en utilisant les trait `Add`, `Sub`, etc.
- Les vecteurs: écrire une librairie de vecteurs en utilisant les trait `Add`, `Sub`, etc.
- Le jeu du pendu: implémenter le jeu du pendu où les mots sont des chaînes de caractères aléatoires et les lettres tirées sont également tirées au hasard.
- Compter différemment: écrire un programme qui permet de compter comme au tennis où chaque joueur gagne un point avec une probabilité donnée.
- Le puissance 4: simulez le jeu du puissance 4.
- Le jeu de la bataille: simulez le jeu de carte de la bataille entre deux machines.
## Aller plus haut
- Ascii art: écrire un convertisseur d'image en ASCII art.
- Simulation du système solaire: écrire un simulateur de système solaire.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment