![]() |
DAIGL - projet Récursivité
|
![]() Pour m'écrire |
fonction EstPalindrome (e: phrase est une chaine de car) retourne un booléen
donnée : resultat est un booléen
début
si (longueur (phrase) < 2) alors
resultat <-- VRAI
sinon
resultat <-- (phrase[1] = phrase[longueur(phrase)]) ET estPalindrome (extraireChaine(phrase, 2, longueur(phrase)-1)
fin si
retourner resultat
fin
La fonction extraireChaine retourne une sous-chaîne de caractères obtenue à partir d'une chaîne originale et des positions des premier et dernier caractères à retenir. Par exemple, extraireChaine ("Bonjour", 4, 7) retournera la chaîne "jour".
programme hanoi (e: nbPlateaux, piquetDep, piquetFin sont entiers)
début
afficher " - Programme des tours de Hanoï - "
afficher "Il faut déplacer ", nbPlateaux, " disque(s) du piquet n°", piquetDep,
" vers le piquet n°", piquetFin
si (piquetDep = piquetFin) alors
afficher "Le piquet d'arrivée ne peut pas être identique au piquet de départ)
sinon
si (nbPlateaux < 1) alors
afficher "Le nombre de plateaux doit être strictement positif"
sinon
faudraitDeplacer (nbPlateaux, piquetDep, piquetFin)
fin si
fin si
afficher "Jeu terminé."
fin
procédure faudraitDeplacer (nbPlateaux, piquetDep, piquetFin sont entiers)
début
si (nbPlateaux = 1) alors
afficher piquetDep, " -> ", piquetFin
sinon
faudraitDeplacer (nbPlateaux-1, piquetDep, 6-(piquetDep+piquetFin))
afficher piquetDep, " -> ", piquetFin
faudraitDeplacer (nbPlateaux-1, 6-(piquetDep+piquetFin), piquetFin)
fin si
fin
fonction dichotomie (e : x0, x1 sont réels, precision est réel) retourne un réel
donnée : x2, resultat est un réel
début
x2 <-- (x0 + x1)/2
si (valeurAbsolue(x1-x0) < 2*precision) alors
resultat <-- x2
sinon
si (f(x0)*f(x2) > 0) alors
resultat <-- dichotomie (x2, x1, precision)
sinon
resultat <-- dichotomie (x0, x2, precision)
fin si
fin si
retourner resultat
fin
L'algorithme donné ici est uniquement un algorithme de principe !
On suppose que le plateau de jeu est un tableau comprenant largeur colonnes et hauteur lignes pour lequel la numérotation commence à 1. Chaque cellule du tableau est donc repérée par 2 coordonnées (un numéro de colonne et un numéro de ligne) et contient, entre autres, l'indication si une mine est présente ou non.
algorithme testerCase (numCol, numLgn sont entiers)
début
si (la cellule (numCol, numLgn) contient une mine) alors
Faire Apparaitre Toutes Les Mines
Fin Du Jeu
sinon
Compter les mines dans les 8 cases adjacentes
si (il y a des mines autour) alors
afficher le nombre de mines à proximité
sinon
découvrir la cellule
testerCase (numCol-1, numLgn-1)
testerCase (numCol, numLgn-1)
testerCase (numCol+1, numLgn-1)
testerCase (numCol-1, numLgn)
testerCase (numCol+1, numLgn)
testerCase (numCol-1, numLgn+1)
testerCase (numCol, numLgn+1)
testerCase (numCol+1, numLgn+1)
fin si
fin si
fin