Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
No results found
Show changes
Commits on Source (2)
...@@ -2,10 +2,11 @@ image: gitlab.dsi.universite-paris-saclay.fr:5005/info111/computerlab/image:late ...@@ -2,10 +2,11 @@ image: gitlab.dsi.universite-paris-saclay.fr:5005/info111/computerlab/image:late
variables: variables:
ASSIGNMENT: Semaine1 ASSIGNMENT: Semaine1
STUDENT: $CI_PROJECT_NAMESPACE # CI_PROJECT_ROOT_NAMESPACE is GitLab 13.2 only STUDENT: $CI_PROJECT_ROOT_NAMESPACE
autograde: autograde:
script: script:
- STUDENT=`echo $STUDENT | sed -e 's/_travo//;s/_/./'`
- info-111 student_autograde $ASSIGNMENT $STUDENT - info-111 student_autograde $ASSIGNMENT $STUDENT
artifacts: artifacts:
paths: paths:
......
No preview for this file type
...@@ -77,3 +77,7 @@ nbgrader: ...@@ -77,3 +77,7 @@ nbgrader:
CHECK( a_gagne() ) CHECK( a_gagne() )
``` ```
```{code-cell}
```
--- ---
jupytext: jupytext:
notebook_metadata_filter: semantic
text_representation: text_representation:
extension: .md extension: .md
format_name: myst format_name: myst
...@@ -9,13 +10,22 @@ kernelspec: ...@@ -9,13 +10,22 @@ kernelspec:
display_name: C++17 display_name: C++17
language: C++17 language: C++17
name: xcpp17 name: xcpp17
semantic:
programming_language:
wikidata: Q2407
subjects:
- smglom:computing?loops
- wikidata: Q8868615
- didactic_role: initiation
--- ---
+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "b3c7b6b3dbbfe091d64d11f2af7d0074", "grade": false, "grade_id": "cell-fc82dd31f240c228", "locked": true, "schema_version": 3, "solution": false, "task": false}} +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "2e4b98b62671ffb9894c02229684a076", "grade": false, "grade_id": "cell-fc82dd31f240c228", "locked": true, "schema_version": 3, "solution": false, "task": false}}
# Laby, niveau 2a: Que c'est loin ... # Laby, niveau 2a: Que c'est loin ...
Simple pas vrai ? Mais bien répétitif, non? Le but du jeu ici est d'écrire un programme court en utilisant une boucle “while” qui dit à la fourmi d'avancer tant que la case devant lui est vide. Affichez le labyrinthe suivant. Simple pas vrai ? Mais bien répétitif, non?
Le but du jeu ici est d'écrire un programme court en utilisant une boucle `while` (tant que ... faire ...) qui dit à la fourmi d'avancer tant que la case devant lui est vide. On vous a fourni un squelette à compléter.
[Niveau précédent](1c.md), <!--[Liste des niveaux](index.md#ListeDesNiveaux), !-->[Niveau suivant](2b.md), [Documentation](0b.md#Documentation) [Niveau précédent](1c.md), <!--[Liste des niveaux](index.md#ListeDesNiveaux), !-->[Niveau suivant](2b.md), [Documentation](0b.md#Documentation)
......
...@@ -13,6 +13,10 @@ jupytext: ...@@ -13,6 +13,10 @@ jupytext:
format_name: myst format_name: myst
format_version: 0.13 format_version: 0.13
jupytext_version: 1.15.1 jupytext_version: 1.15.1
kernelspec:
display_name: Python 3 (ipykernel)
language: python
name: python3
--- ---
# TD 1: Notion d'algorithme # TD 1: Notion d'algorithme
...@@ -24,7 +28,7 @@ semaine sur l'autre.** ...@@ -24,7 +28,7 @@ semaine sur l'autre.**
::: :::
+++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "8ad448955b1ba80fb9a1ef1e85ca2fa2", "grade": true, "grade_id": "1", "locked": false, "points": 0, "schema_version": 3, "solution": true}} +++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "9cea354d1a408c25828d0da0331786be", "grade": true, "grade_id": "1", "locked": false, "points": 0, "schema_version": 3, "solution": true}}
:::{admonition} Exercice : Modélisation d'un problème et notion d'algorithme :::{admonition} Exercice : Modélisation d'un problème et notion d'algorithme
...@@ -43,12 +47,12 @@ se retrouvait seule en présence du chou. ...@@ -43,12 +47,12 @@ se retrouvait seule en présence du chou.
- `décharge(objet)` - `décharge(objet)`
- `traverse()` - `traverse()`
**Indication :** Ne cherchez pas à résoudre le problème de tête; **Indication :** Ne cherchez pas à résoudre le problème de tête;
au contraire, l'objectif est d'apprendre à raisonner sur papier au contraire, l'objectif est d'apprendre à raisonner sur papier
pour aborder ensuite des problèmes plus complexes et pouvoir pour aborder ensuite des problèmes plus complexes et pouvoir
transmettre ce raisonnement. Cherchez une manière de représenter transmettre ce raisonnement. Cherchez une manière de représenter
l'état du système, et décrivez sur votre feuille comment celui-ci l'état du système, et décrivez sur votre feuille comment celui-ci
évolue au fur et à mesure des instructions. évolue au fur et à mesure des instructions.
% REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE % REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
...@@ -61,7 +65,7 @@ se retrouvait seule en présence du chou. ...@@ -61,7 +65,7 @@ se retrouvait seule en présence du chou.
::: :::
+++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "9d1d93a1ea55a97a541a509d31763bf9", "grade": true, "grade_id": "2", "locked": false, "points": 0, "schema_version": 3, "solution": true}} +++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "00355dc3ecafb358340cc9518fb7db19", "grade": true, "grade_id": "2", "locked": false, "points": 0, "schema_version": 3, "solution": true}}
::::{admonition} Exercice : Modélisation d'un problème et notion d'algorithme ::::{admonition} Exercice : Modélisation d'un problème et notion d'algorithme
...@@ -75,16 +79,16 @@ cruches. ...@@ -75,16 +79,16 @@ cruches.
d'instructions, puis donnez une suite d'instructions permettant d'instructions, puis donnez une suite d'instructions permettant
d'atteindre une solution. d'atteindre une solution.
**Indication :** Comme dans l'exercice précédent, ne cherchez pas **Indication :** Comme dans l'exercice précédent, ne cherchez pas
à résoudre le problème de tête. à résoudre le problème de tête.
% REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE % REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
2. Peut-on trouver une suite d'instructions de façon que l'une des 2. Peut-on trouver une suite d'instructions de façon que l'une des
deux cruches contienne 1 litre? 2 litres? 3 litres? 4 litres? 5 deux cruches contienne 1 litre? 2 litres? 3 litres? 4 litres? 5
litres? 6 litres? 7 litres? litres? 6 litres? 7 litres?
% REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE % REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
:::: ::::
...@@ -107,7 +111,7 @@ pour poser les opérations (pas de calculatrice). ...@@ -107,7 +111,7 @@ pour poser les opérations (pas de calculatrice).
::: :::
+++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "9486416dcdc7b441f9f31d1461cd1d0c", "grade": true, "grade_id": "4", "locked": false, "points": 0, "schema_version": 3, "solution": true}} +++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "c2cc90b7c3c445e44612a86f1d3e1b6e", "grade": true, "grade_id": "4", "locked": false, "points": 0, "schema_version": 3, "solution": true}}
<s></s> <s></s>
...@@ -136,7 +140,7 @@ Voici un exemple d'algorithme pour le robot : ...@@ -136,7 +140,7 @@ Voici un exemple d'algorithme pour le robot :
2. Décrivez un algorithme qui permet au robot de donner l'âge exact 2. Décrivez un algorithme qui permet au robot de donner l'âge exact
de l'utilisateur. de l'utilisateur.
% REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE % REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
3. Quelles difficultés avez-vous rencontrées pour écrire les 3. Quelles difficultés avez-vous rencontrées pour écrire les
algorithmes? algorithmes?
...@@ -145,7 +149,7 @@ Voici un exemple d'algorithme pour le robot : ...@@ -145,7 +149,7 @@ Voici un exemple d'algorithme pour le robot :
::: :::
+++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "05c0255d5284a46ad7d60ba1604593f4", "grade": true, "grade_id": "5", "locked": false, "points": 0, "schema_version": 3, "solution": true}} +++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "63dbdfec0b0ae715c1378fe11451e3d0", "grade": true, "grade_id": "5", "locked": false, "points": 0, "schema_version": 3, "solution": true}}
:::{admonition} Exercice : $\clubsuit$ Un peu de logique et de booléens :::{admonition} Exercice : $\clubsuit$ Un peu de logique et de booléens
...@@ -155,29 +159,29 @@ Voici un exemple d'algorithme pour le robot : ...@@ -155,29 +159,29 @@ Voici un exemple d'algorithme pour le robot :
- `op1(a, b): (a ET (NON b)) OU ((NON a) ET b)` - `op1(a, b): (a ET (NON b)) OU ((NON a) ET b)`
- `op2(a, b): (a OU b) ET ((NON a) OU (NON b))`. - `op2(a, b): (a OU b) ET ((NON a) OU (NON b))`.
% REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE % REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
2. Que constatez-vous? 2. Que constatez-vous?
% REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE % REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
3. `op1(a, b)` est en fait une opération très courante en informatique; 3. `op1(a, b)` est en fait une opération très courante en informatique;
elle a même un nom. Savez-vous comment on l'appelle? elle a même un nom. Savez-vous comment on l'appelle?
% REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE % REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
4. Écrivez une opération `op3(a, b)` dont le résultat est vrai si et 4. Écrivez une opération `op3(a, b)` dont le résultat est vrai si et
seulement si le résultat de `op1(a, b)` est faux. Utiliser au plus seulement si le résultat de `op1(a, b)` est faux. Utiliser au plus
5 mots `OU`, `NON` et `ET` dans l'écriture de `op3(a, b)`. 5 mots `OU`, `NON` et `ET` dans l'écriture de `op3(a, b)`.
% REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE % REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
5. Expliquez pourquoi cette opération permet de déterminer si deux mots 5. Expliquez pourquoi cette opération permet de déterminer si deux mots
booléens sont identiques. booléens sont identiques.
::: :::
+++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "9c87fcfc225cd97c8857be3473d92d8b", "grade": true, "grade_id": "6", "locked": false, "points": 0, "schema_version": 3, "solution": true}} +++ {"deletable": false, "nbgrader": {"cell_type": "markdown", "checksum": "52f1d2f3511b7bce76589f0e9c606bcf", "grade": true, "grade_id": "6", "locked": false, "points": 0, "schema_version": 3, "solution": true}}
:::{admonition} Exercice : $\clubsuit$ Notion de test de programme :::{admonition} Exercice : $\clubsuit$ Notion de test de programme
...@@ -189,13 +193,13 @@ voulez tester si les résultats de ce programme sont cohérents. ...@@ -189,13 +193,13 @@ voulez tester si les résultats de ce programme sont cohérents.
1. Spécifiez le programme sans écrire l'algorithme : que va-t-il 1. Spécifiez le programme sans écrire l'algorithme : que va-t-il
prendre en entrée? renvoyer en sortie? prendre en entrée? renvoyer en sortie?
% REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE % REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
2. Donnez une série de tests dont vous connaissez le résultat sans 2. Donnez une série de tests dont vous connaissez le résultat sans
calculs: situations extrêmes (par ex : tirer verticalement), calculs: situations extrêmes (par ex : tirer verticalement),
symétries, ... symétries, ...
% REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE % REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
::: :::
...@@ -36,6 +36,22 @@ nbgrader: ...@@ -36,6 +36,22 @@ nbgrader:
LABY("counting-the-rocks") LABY("counting-the-rocks")
``` ```
```{code-cell}
---
deletable: false
nbgrader:
cell_type: code
checksum: 73e4e8dd92f614b3b9e861393d196db0
grade: false
grade_id: cell-dc0eba466ac0f399
locked: false
schema_version: 3
solution: true
task: false
---
// REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
```
```{code-cell} ```{code-cell}
--- ---
deletable: false deletable: false
......
This diff is collapsed.
...@@ -79,6 +79,49 @@ fin du TP pour que tout ce que vous avez fait soit bien sauvegardé. ...@@ -79,6 +79,49 @@ fin du TP pour que tout ce que vous avez fait soit bien sauvegardé.
+++ +++
Le jeu [`laby`](https://sgimenez.github.io/laby/) propose plusieurs
défis successifs; pour chacun d'entre eux, le but est de guider
pas-à-pas une fourmi vers la sortie d'un labyrinthe à l'aide d'un
programme. Chacun de ces défis sera l'occasion de découvrir ou
manipuler un concept de programmation.
Nous allons utiliser
[`laby-jupyter`](https://github.com/nthiery/laby-jupyter/), une
réimplantation de laby dans Jupyter.
1. Chaque feuille ci-dessous correspond à un défi. Ouvrez les
tour-à-tour dans l'ordre et suivez les instructions
incluses. Déposez votre travail après chaque feuille.
- [Laby 0b : Démonstration](0b.md)
- [Laby 1a : À vous de jouer](1a.md)
- [Laby 1b : Oh le caillou](1b.md)
- [Laby 1c : Encore un caillou!](1c.md)
- [Laby 2a : Que c'est loin ...](2a.md)
- [Laby 2b : Le couloir des cailloux](2b.md)
- [Laby 2c : Zig-Zag](2c.md)
- [Laby 2d : Le Zig-Zag des cailloux](2d.md)
- [Laby 3a : Ahhh des toiles!](3a.md)
- [Laby 3b : Toiles et cailloux](3b.md)
- [Laby 4a : La spirale infernale](4a.md)
- [Laby 4b : Par où passer?](4b.md)
2. Résoudre en Python le défi [Chou, chèvre, loup](chou-chevre-loup.md).
3. ♣ Dans l'ordre que vous souhaiterez :
- Reprendre en Python tout ou partie des défis de laby. Pour cela,
vous utiliserez le tableau de bord pour télécharger le devoir
`Semaine1Python`.
- Résoudre en Python le [jeu des cruches](cruches.md).
- Faire les feuilles laby supplémentaires en C++ :
- [Laby C++ : Counting the rocks](counting-the-rocks.md)
- [Laby C++ : C'est fou!](this-is-crazy.md)
+++
### Exercice 4 : À faire pour la semaine prochaine ### Exercice 4 : À faire pour la semaine prochaine
Deux heures supplémentaires de `Laby`! Vous pouvez par exemple Deux heures supplémentaires de `Laby`! Vous pouvez par exemple
......
...@@ -11,12 +11,19 @@ kernelspec: ...@@ -11,12 +11,19 @@ kernelspec:
name: xcpp17 name: xcpp17
--- ---
+++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "1412fa8dba22a59e78085d1ef371cf70", "grade": false, "grade_id": "cell-05f3f0bf76964094", "locked": true, "schema_version": 3, "solution": false, "task": false}} +++ {"deletable": false, "editable": false, "nbgrader": {"cell_type": "markdown", "checksum": "3ec5c74d7827a86b9563e8ea4942ea3c", "grade": false, "grade_id": "cell-05f3f0bf76964094", "locked": true, "schema_version": 3, "solution": false, "task": false}}
# Laby: C'est fou! # Laby: C'est fou!
Les obstacles se multiplient pour un défi de plus. Les obstacles se multiplient pour un défi de plus.
:::{admonition} Indication
:class: dropdown hint
Les toiles d'arraignées peuvent être neutralisées avec des cailloux
:::
[Niveau précédent](counting-the-rocks.md), <!--[Liste des niveaux](index.md#ListeDesNiveaux), !-->[Documentation](0b.md#Documentation) [Niveau précédent](counting-the-rocks.md), <!--[Liste des niveaux](index.md#ListeDesNiveaux), !-->[Documentation](0b.md#Documentation)
```{code-cell} ```{code-cell}
...@@ -37,6 +44,54 @@ nbgrader: ...@@ -37,6 +44,54 @@ nbgrader:
LABY("this-is-crazy") LABY("this-is-crazy")
``` ```
```{code-cell}
---
deletable: false
nbgrader:
cell_type: code
checksum: 5175ca859f4bf6fabf94895343e7fbf4
grade: false
grade_id: cell-6f9c72052cad1db5
locked: false
schema_version: 3
solution: true
task: false
---
// REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
```
```{code-cell}
---
deletable: false
nbgrader:
cell_type: code
checksum: 1bef98b8da2b78e6f16ebf6fefabc274
grade: false
grade_id: cell-6f9c72052cad1db6
locked: false
schema_version: 3
solution: true
task: false
---
// REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
```
```{code-cell}
---
deletable: false
nbgrader:
cell_type: code
checksum: bed78d165b165fafc71f6ac63bc707ea
grade: false
grade_id: cell-6f9c72052cad1db7
locked: false
schema_version: 3
solution: true
task: false
---
// REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
```
```{code-cell} ```{code-cell}
--- ---
deletable: false deletable: false
......