• Aucun résultat trouvé

Si la listelest vide, c’est qu’on a terminé les calculs

N/A
N/A
Protected

Academic year: 2022

Partager "Si la listelest vide, c’est qu’on a terminé les calculs"

Copied!
2
0
0

Texte intégral

(1)

Listes - Exercices Option informatique — MPSI

Exercice 1

1. let str_to_lst s =

let n = String.length s in let l = ref [] in

for i = n - 1 downto 0 do if s.[i] <> ' ' then

l := s.[i] :: !l done;

!l;;

2. On commence par transformer la chaîne de caractères en une liste. On écrit une fonction auxiliaire qui prend en argument une pile (initialement vide) et la liste en question et fait les opérations suivantes :

– Si la listelest vide, c’est qu’on a terminé les calculs. Normalement, la pile ne contient qu’une seule valeur, et c’est celle qu’on renvoie.

– Sinon, le premier élément de la listelpeut être :

* Un entier, auquel cas on le rajoute à la pile et on continue le traitement.

* Un opérateur, auquel cas on l’applique aux deux derniers éléments de la pile (qu’on enlève), et on rajoute à la pile le résultat obtenu. On fera attention à l’ordre dans lequel on effectue l’opération (pour la division et soustraction qui ne sont pas commutatives).

let postfixe s =

let l = str_to_lst s in

let rec aux pile l = match pile, l with

| [x], [] -> x

| x :: y :: q, z :: r when z = '+' || z = '-' || z = '*' || z = '/' -> aux ((ops z y x) :: q) r

| _, z :: r -> aux (chiffre z :: pile) r in aux [] l;;

Exercice 2

1. On procède comme suit :

– On traite les cas de base (liste vide ou avec un seul élément) qui se décodent d’une seule façon (même la liste vide ! !).

– Si le premier chiffre est 0, on renvoie 0 (car ce n’est pas possible avec notre système).

– Si les deux premiers chiffres forment un nombre entre 10 et 26, on peut soit interpréter le premier chiffre comme une lettre et compter le nombre de possibilités restantes, soit interpréter ce nombre comme une lettre et compter le nombre de possibilités restantes.

– Sinon, le premier chiffre correspond nécessairement à une lettre, et on compte le nombre de possibilités restantes

let rec compte = function

| [] -> 1

| [m] -> 1

| m :: n :: q when m = 0 -> 0

| m :: n :: q when m = 1 || (m = 2 && n < 7) -> compte (n :: q) + compte q

| m :: n :: q -> compte (n :: q);;

2. On traite tous les cas possibles :

N. Carré Louis-le-Grand

(2)

Listes - Exercices Option informatique — MPSI

let rec comptebis = function

| [] -> 1

| [-1] -> 9

| [n] -> 1

| m :: n :: q when m = -1 && n < 7

-> 9 * comptebis (n :: q) + 2 * comptebis q

| m :: n :: q when m = -1

-> 9 * comptebis (n :: q) + comptebis q

| m :: n :: q when m = 0 -> 0

| m :: n :: q when m = 1 && n = -1

-> comptebis (n :: q) + 10 * comptebis q

| m :: n :: q when m = 2 && n = -1

-> comptebis (n :: q) + 7 * comptebis q

| m :: n :: q when m = 1 || (m = 2 && n < 7) -> comptebis (n :: q) + comptebis q

| m :: n :: q -> comptebis (n :: q);;

N. Carré Louis-le-Grand

Références

Documents relatifs

• une m´ethode ajouter() dont le seul param`etre est l’entier dont une oc- currence est ` a ajouter au multi-ensemble (si celui-ci n’est pas plein), qui renvoie true si on a pu

On pourrait prouver ce dernier r´esultat, ainsi que le premier lemme de la section, hh ` a la main ii ` a partir des r´esultats d’approximation, sans utiliser le th´eor`eme de

Analyse de la descente en pression : aspect qualitatif Analyse de la descente en pression : aspect qualitatif évolution type de la composition du vide résiduel d’un.

b) ? Paul est arrivé avec sa sœur, mais il est reparti sans. Je ne reprendrai pas ici le problème dans son ensemble, mais me limiterai à quelques observations sur les représentations

 Retour sur les lignes de champ magnétique : Une ligne de champ est toute courbe tangente en chacun de ses points au

Selon la théorie de l’inflation, l'Univers a pu connaître un passage par un « faux vide », avant de dégringoler vers un « vrai vide », en libérant une pression négative qui

Selon la théorie de la relativité générale, un espace sans éther est impensable, car dans un tel espace non seulement il n'y aurait pas de propagation de la lumière, mais aussi

Un nombre divisé par zéro sera « celui qui a pour diviseur zéro » ; multiplié par zéro, c’est zéro et « celui qui a pour multiplicateur zéro » doit être présent à l’esprit,