Prog Caml : Coffre fort avec limite en récursif

Il s'agit d'une variante sur l'exercice du coffre fort. Pour augmenter la sécurité du coffre, on aimerait que le coffre se verrouille si l'utilisateur se trompe plus que nb_restant fois, où nb_restant est le nombre de tentatives autorisées.

Le code secret ainsi que le nombre total de tentatives autorisées sont données au début. Voici donc le code à compléter :

let read_int() = Scanf.scanf " %d" (fun x -> x);;
let code_secret = read_int() in
let nb_tentatives = read_int() in

(...définition de coffre_tres_fort avec le paramètre nb_restant...)

coffre_tres_fort nb_tentatives;
  • La fonction coffre_tres_fort prend en paramètre un entier k.
  • Si nb_restant vaut 0, cela veut dire qu'il ne reste plus de tentatives, on affiche "Coffre bloqué !".
  • Si l'utilisateur donne l'entier secret, on affiche "Coffre ouvert !".
  • Si l'utilisateur donne un autre entier, on affiche "Code non valide !", et on recommence avec un nombre de tentatives autorisés diminué de 1. Pour cela, on appelle récursivement coffre_tres_fort (nb_restant - 1).

De plus, toutes les chaînes affichées doivent être suivies d'un retour à la ligne pour que tout soit bien présenté.

Limites de temps et de mémoire (Python)

  • Temps : 4 s sur une machine à 1 GHz.
  • Mémoire : 1 000 ko.

Source : http://www.france-ioi.org/ Créé par : Arthur Charguéraud.