Programmer avec le langage Linotte
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Programmer avec le langage LinotteConnexion

Besoin d'un conseil sur la programmation en Linotte ?

Le deal à ne pas rater :
TCL C74 Series 55C743 – TV 55” 4K QLED 144 Hz Google TV (Via ODR ...
499 €
Voir le deal

descriptionUn tour de magie pour impressionner les élèves... EmptyUn tour de magie pour impressionner les élèves...

more_horiz
Voici l'adaptation en linotte d'un tour de magie assez connu : on choisit 5 cartes au hasard dans un jeu de 52. On annonce la première à l'ordinateur, puis la 2e, puis la 3e, puis la 4e... et le programme annonce lui-même la 5e !

Le "truc" consiste bien sûr à jouer sur l'ordre des cartes (qui est libre), de façon à ce que la succession des 4 premières donne assez d'informations pour coder complètement la dernière. Et évidemment, il faut connaître le code choisi pour utiliser le programme (et ainsi épater une classe de 35 élèves). L'explication (ci-dessous) est un peu longue mais je crois qu'elle en vaut la peine.

Première idée : parmi les 5 cartes tirées au sort, deux seront forcément de la même couleur. Notons-les A et B. L'une d'entre elles sera la première que l'on abattra et l'autre la dernière, autrement dit celle que le programme devra deviner ;
ainsi il en connaîtra d'emblée la couleur : ce sera la même que celle de la première carte annoncée.

Deuxième idée : pour décider laquelle des cartes A et B on abattra en premier, on définit un ordre "circulaire" sur les numéros de cartes (le 1 est suivi du 2, le 2 du 3, ... la dame du roi, le roi du 1, etc...) et on choisit la première carte de façon à ce que l'autre s'en déduise en "ajoutant" un nombre inférieur ou égal à 6 ;
par exemple si on a un 2 et un 5, on commencera par abattre le 2 et on finira par le 5 (car il suffit d'additionner 3 pour passer du 2 au 5) ;
si on a tiré un 4 et une dame, on commencera par la dame (on passe de la dame au 4 en "ajoutant" 5 puisqu'après la dame viennent dans l'ordre le roi, le 1, le 2, le 3 et enfin le 4 ;
dans l'autre sens ça ne marcherait pas, car la dame est seulement la 8e carte en partant du 4).

Troisième idée : les trois cartes du milieu vont coder le nombre nécessaire pour passer de la première à la dernière carte (nombre qui est donc compris entre 1 et 6) ;
pour cela on définit, outre l'ordre naturel sur les numéros (du 1 au roi ;
l'as est donc ici la carte la plus petite), un ordre sur les couleurs (ici trèfle <
carreau <
coeur <
pique) de façon à pouvoir comparer n'importe quelles cartes du jeu : d'abord par le numéro, puis par la couleur (en cas d'égalité de numéro). Ainsi, le 2 de coeur est plus petit que le 3 de trèfle (car 2 <
3), qui est lui-même plus petit que le 3 de coeur (car trèfle <
coeur).

Notant alors C, D et E les 3 cartes du milieu, supposons par exemple que C <
D <
E ;
alors on choisit de les poser dans l'ordre suivant :

C puis D puis E pour coder 1 ;

C puis E puis D pour coder 2 ;

D puis C puis E pour coder 3 ;

D puis E puis C pour coder 4 ;

E puis C puis D pour coder 5 ;

E puis D puis C pour coder 6.

(Remarque : c'est simplement l'ordre lexicographique)

Conclusion : avec cet algorithme, la première carte donne la couleur de la dernière, dont le numéro s'obtient en additionnant celui de la première au nombre codé par les trois du milieu.

Un exemple pour être plus clair : supposons qu'on tire le 2 et le valet de coeur, le 1 de pique, la dame de trèfle et la dame de carreau.

- Il y a deux cartes à coeur ;
on pose donc d'abord le valet de coeur et on garde le 2 pour la fin ;
il reste à coder le nombre 4 avec les 3 cartes restantes (car le 2 est la quatrième carte en partant du valet) ;


- Comme 1 <
dame et comme trèfle <
carreau, l'ordre de ces 3 cartes est : 1 de pique <
dame de trèfle <
dame de carreau ;
pour coder le nombre 4, on choisit donc de poser dans cet ordre :

--- la dame de trèfle ;


--- puis la dame de carreau ;


--- puis le 1 de pique.

L'ordinateur réfléchit alors trois secondes et annonce le 2 de coeur !

Voilà, j'espère que c'est à peu près clair... et voici le programme :

Code:

Livre :
Tour de cartes

Les grands rôles :

numéros est un casier de nombre valant -1 , -1 , -1 , -1
coul est un casier de nombre valant 0 , 0 , 0 , 0
numéros2 est un casier de texte valant "1" , "2" , "3", "4" , "5" , "6" , "7" , "8" , "9" , "10" , "valet" , "dame" , "roi"
coul2 est un casier de texte valant "trèfle" , "carreau" , "coeur" , "pique"
i est un nombre
x est un nombre
co est un texte

Paragraphe :
Cheminement
pour i de 0 à 3, lis
tant que numéros{i} est égal à -1, parcours Numéro avec i
tant que coul{i} est égal à 0, parcours Couleur avec i
ferme
parcours Calculs
affiche "La dernière carte est.
.
.
"
attends 3 secondes
si x est égal à 11 alors affiche "la " + numéros2{x} + " de " + co
sinon, affiche "le " + numéros2{x} + " de " + co
termine

Paragraphe :
Numéro
Les rôles :

*a est un nombre
b est un texte
c est un nombre
j est un nombre
Les actions :

c vaut a+1
affiche "numéro de la carte " + c + " ?"
demande b
pour j de 0 à 12, lis
si b est égal à numéros2{j} alors numéros{a} vaut j
ferme
reviens

Paragraphe :
Couleur
Les rôles :

*a est un nombre
b est un texte
c est un nombre
j est un nombre
Les actions :

c vaut a+1
affiche "couleur de la carte " + c + " ?"
demande b
pour j de 0 à 3, lis
si b est égal à coul2{j} alors coul{a} vaut 0.
2*(j+1)
ferme
si a est égal à 0 alors co vaut b
reviens

Paragraphe :
Calculs
Les rôles :

j est un nombre
k est un nombre
l est un nombre
supp est un nombre valant 0
Les actions :

j vaut numéros{1} + coul{1}
k vaut numéros{2} + coul{2}
l vaut numéros{3} + coul{3}
si j est plus grand que k alors supp vaut supp + 3
si j est plus grand que l alors supp vaut supp + 2
si k est plus grand que l alors supp vaut supp + 2
si supp est égal à 7 alors supp vaut 6
si supp est égal à 0 alors supp vaut 1
x vaut numéros{0} + supp
si x est plus grand que 12 alors x vaut x-13
reviens

descriptionUn tour de magie pour impressionner les élèves... EmptyUn tour de magie pour impressionner les élèves...

more_horiz
Bonjour,

Exemple très interessant ! Je vais regarder ça plus prêt ce soir.

Par contre, ne me dites pas qu'il y a 35 élèves dans la salle d'informatique ?

descriptionUn tour de magie pour impressionner les élèves... EmptyUn tour de magie pour impressionner les élèves...

more_horiz
[quote=ronan]Bonjour,

Exemple très interessant ! Je vais regarder ça plus prêt ce soir.

Par contre, ne me dites pas qu'il y a 35 élèves dans la salle d'informatique ?[/quote]
Non, heureusement ! On n'y va qu'en demi-groupe.

Mais avec par exemple un tableau intéractif on pourrait faire la démo devant la classe entière.

descriptionUn tour de magie pour impressionner les élèves... EmptyRe: Un tour de magie pour impressionner les élèves...

more_horiz
privacy_tip Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
power_settings_newSe connecter pour répondre