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
variables:
ASSIGNMENT: Semaine1
STUDENT: $CI_PROJECT_NAMESPACE # CI_PROJECT_ROOT_NAMESPACE is GitLab 13.2 only
STUDENT: $CI_PROJECT_ROOT_NAMESPACE
autograde:
script:
- STUDENT=`echo $STUDENT | sed -e 's/_travo//;s/_/./'`
- info-111 student_autograde $ASSIGNMENT $STUDENT
artifacts:
paths:
......
No preview for this file type
......@@ -77,3 +77,7 @@ nbgrader:
CHECK( a_gagne() )
```
```{code-cell}
```
---
jupytext:
notebook_metadata_filter: semantic
text_representation:
extension: .md
format_name: myst
......@@ -9,13 +10,22 @@ kernelspec:
display_name: C++17
language: C++17
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 ...
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)
......
......@@ -13,6 +13,10 @@ jupytext:
format_name: myst
format_version: 0.13
jupytext_version: 1.15.1
kernelspec:
display_name: Python 3 (ipykernel)
language: python
name: python3
---
# TD 1: Notion d'algorithme
......@@ -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
......@@ -43,12 +47,12 @@ se retrouvait seule en présence du chou.
- `décharge(objet)`
- `traverse()`
**Indication :** Ne cherchez pas à résoudre le problème de tête;
au contraire, l'objectif est d'apprendre à raisonner sur papier
pour aborder ensuite des problèmes plus complexes et pouvoir
transmettre ce raisonnement. Cherchez une manière de représenter
l'état du système, et décrivez sur votre feuille comment celui-ci
évolue au fur et à mesure des instructions.
**Indication :** Ne cherchez pas à résoudre le problème de tête;
au contraire, l'objectif est d'apprendre à raisonner sur papier
pour aborder ensuite des problèmes plus complexes et pouvoir
transmettre ce raisonnement. Cherchez une manière de représenter
l'état du système, et décrivez sur votre feuille comment celui-ci
évolue au fur et à mesure des instructions.
% REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
......@@ -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
......@@ -75,16 +79,16 @@ cruches.
d'instructions, puis donnez une suite d'instructions permettant
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.
% 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
deux cruches contienne 1 litre? 2 litres? 3 litres? 4 litres? 5
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).
:::
+++ {"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>
......@@ -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
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
algorithmes?
......@@ -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
......@@ -155,29 +159,29 @@ Voici un exemple d'algorithme pour le robot :
- `op1(a, b): (a ET (NON b)) OU ((NON a) ET 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?
% 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;
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
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)`.
% 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
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
......@@ -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
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
calculs: situations extrêmes (par ex : tirer verticalement),
symétries, ...
% REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
% REMPLACER CETTE LIGNE PAR VOTRE RÉPONSE
:::
......@@ -36,6 +36,22 @@ nbgrader:
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}
---
deletable: false
......
This diff is collapsed.
......@@ -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
Deux heures supplémentaires de `Laby`! Vous pouvez par exemple
......
......@@ -11,12 +11,19 @@ kernelspec:
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!
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)
```{code-cell}
......@@ -37,6 +44,54 @@ nbgrader:
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}
---
deletable: false
......