Retour à la page d'accueil

DAIGL - projet Récursivité
Propositions de solutions

Auteur : Jean HENRI - Dernière mise à jour : 16 nov 2004


Pour m'écrire

Palindrome

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".

Tours de Hanoï

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

Dichotomie

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

Jeu du démineur

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