Add exercises

This commit is contained in:
engboris 2024-06-10 00:30:51 +02:00
parent 6be1fcd5c7
commit 305c35db76
2 changed files with 61 additions and 6 deletions

View File

@ -12,7 +12,7 @@ Ouvrez votre éditeur de code favori et pratiquons avec le LSC !
Une interaction simple entre deux étoiles avec transfert de la constante `a` : Une interaction simple entre deux étoiles avec transfert de la constante `a` :
``` ```
+f(X) X; 's1 +f(X) X; 's1
@-f(a); 's2 -f(a); 's2
``` ```
Les deux étoiles `s1` et `s2` se sont fusionnées en interagissant le long de Les deux étoiles `s1` et `s2` se sont fusionnées en interagissant le long de
@ -24,7 +24,7 @@ On peut étendre ce transfert en traversant plusieurs étoiles :
+f1(X1) X1; +f1(X1) X1;
-f1(X2) +f2(X2); -f1(X2) +f2(X2);
-f2(X3) +f3(X3); -f2(X3) +f3(X3);
@-f3(a); -f3(a);
``` ```
## Effacement ## Effacement
@ -35,7 +35,7 @@ conservation d'étoiles.
``` ```
+f(X) +g(X); +f(X) +g(X);
@-f(a); -f(a);
``` ```
Ci-dessus, on a bien une interaction, mais le résultat est un rayon polarisé Ci-dessus, on a bien une interaction, mais le résultat est un rayon polarisé
@ -46,7 +46,7 @@ On peut rajouter une étoile afin d'obtenir un résultat :
``` ```
-g(X) X; -g(X) X;
+f(X) +g(X); +f(X) +g(X);
@-f(a); -f(a);
``` ```
## Multi-focus ## Multi-focus

View File

@ -7,8 +7,63 @@ weight: 5
## Chemins ## Chemins
## Effacement partiel Ajouter des étoiles aux constellations suivantes de sorte à obtenir `ok` après
exécution.
1. `-1 ok;`
2. `-1; +2;`
3. `-1 ok; -2 +3;`
4. `-1 ok; -2 +3 ok;`
5. `+f(a) +f(b); +g(a); @+g(b);`
## Altération de mémoire ## Altération de mémoire
## Tables de vérité Considérons la constellation suivante représentant des registres dans lesquels
on peut stocker des données (ils sont tous initialisés à `0`) :
```
' initialisation
+ia(0); +ib(0);
@-ra(X) +a(X); ' registre a
@-rb(X) +b(X); ' registre b
```
Pour chaque question, vous pouvez soit ajouter des étoiles à la constellation
de départ ou modifier celles que vous avez ajoutées.
1. Comment relier les étoiles d'initialisation de sorte à initialiser le
registre `a` à `0` ?
2. Comment afficher la valeur de `a` et ainsi obtenir `a(0)` en sortie ?
3. Comment mettre à jour `a` à la valeur `1` ?
4. Comment copier la valeur de `a` dans `b` et afficher `b` ?
5. Comment supprimer le registre `b` et le rendre inutilisable ?
## Portes logiques
On veut simuler des portes logiques par des constellations calculant des
fonctions sur `{0,1}`.
1. Ecrire une constellation calculant la négation de telle sorte à ce qu'elle
produise `1` en sortie lorsqu'ajoutée à l'étoile `@-not(0 X) X;` et `0`
lorsqu'ajoutée à `@-not(1 X) X`.
2. Comment afficher la table de vérité de la négation avec une seule étoile,
de sorte à ce qu'on obtienne en sortie `table_not(0 1); table_not(1 0);` ?
3. Ecrire de deux manières différentes des constellations calculant la
conjonction et la disjonction et afficher leur table de vérité de la même façon
que pour la question précédente.
4. Utiliser la disjonction et la négation pour afficher la table de vérité
de l'implication sachant que `A => B = not(A) \/ B`.
5. Utiliser l'implication et la conjonction pour afficher la table de vérité
de l'équivalence logique sachant que `A <=> B = (A => B) /\ (B => A)`.