ioCode
Les utiles
Listes • Exercices 1A
- Écrire une fonction de signature1IndiceL'opérateur modulo en OCaml est mod et s'utilise comme ceci : a mod b.
garder_pairs : int list -> int listqui renvoie une liste constituée des éléments pairs de la liste passée en paramètre. Par exemple,garder_pairs [-1; 12; 3; 16; 7; 9]renvoie[12; 16]. - Écrire une fonction de signature2IndiceReprendre la structure de la fonction précédente mais rendre le test plus générique avec l'utilisation de la fonction f.
filter : ('a -> bool) 'a list -> 'a listqui renvoie une liste constituée des élémentsede la liste passée en paramètre pour lesquels le testf eest vrai. Par exemple,filter (fun e -> e = 1) [12; 1; 4; 7; 1; 8]renvoie[1; 1]. - Utiliser la fonction3IndiceUtiliser l'opérateur mod.
filteravec une fonction anonyme pour réaliser la même opération que la fonctiongarder_pairs. - Écrire une fonction4IndiceCalculer le produit de chaque élément par lui-même puis reconstruire récursivement la liste résultat.
l_square : int list -> int listqui renvoie la liste des carrés des éléments de la liste passée en argument. Par exemplel_square [1; 3; 5]renvoie[1; 9; 25]. - Écrire une fonction5IndiceAppliquer la fonction fournie à chaque élément puis les assembler dans une nouvelle liste.
map : ('a -> 'b) -> 'a list -> 'b listqui renvoie la liste obtenue en appliquant la fonctionfà chaque élément de la listel. Par exemplemap (fun x -> x + 1) [1; 2; 3]renvoie[2; 3; 4]. - Utiliser la fonction6IndiceDéfinir une fonction nommée pour le calcul puis l'appliquer à la liste via map.
mapavec une fonction nomméesquare(à créer) pour calculer les carrés de la liste[1; 3; 5; 7; 9]. - Utiliser la fonction7IndiceUtiliser une fonction anonyme (fun e -> e + 1) directement dans l'appel de map pour le calcul.
mapavec une fonction anonyme pour calculer les carrés de la liste[1; 3; 5; 7; 9]. - Écrire une fonction8IndiceAfficher chaque élément suivi d'un espace puis terminer par un retour à la ligne.
print_list : int list -> unitqui affiche les entiers de la liste séparés par des espaces, suivis d'un retour à la ligne. On pourra utiliser les instructionsPrintf.printf "%d " 3etPrintf.printf "\n"pour l'affichage. - Écrire une fonction9IndiceAppliquer la fonction donnée à chaque élément puis enchaîner les appels récursifs.
iter: ('a -> unit) -> 'a list -> unitqui renvoie l'unité après avoir appliqué la fonctionfà chaque élément de la listel. - Utiliser la fonction10IndicePasser une fonction anonyme à iter pour afficher chaque valeur de la liste.
iteravec une fonction anonyme pour afficher les éléments de la liste[1; 3; 5; 7; 9]. - Écrire une fonction11IndiceCalculer le carré de chaque élément puis les additionner progressivement.
l_sqaure_sum : int list -> intqui calcule la somme des carrés des éléments de la liste. Par exemplel_square_sum [1; 3; 5]renvoie35. - Écrire une fonction12IndiceConcaténer la chaîne courante avec le résultat du traitement du reste de la liste.
l_sconcat : string list -> stringqui renvoie la concaténation de toutes les chaînes de caractères de la liste. Par exemplel_sconcat ["B"; "Z"; "H"]renvoie"BZH". - Écrire une fonction13IndiceMettre à jour l'accumulateur avec le résultat de la fonction puis continuer sur le reste.
fold_left : ('acc -> 'a -> 'acc) -> 'acc -> 'a list -> 'acc]qui calcule le résultat de l'application successive de la fonctionfà l'accumulateur et aux éléments de la liste, de gauche à droite. Par exemplefold_left (fun acc x -> acc + x) 10 [1; 2; 3]renvoie16. - Utiliser la fonction14IndiceUtiliser fold_left avec des fonctions appropriées pour accumuler les résultats successifs.
fold_leftpour calculer la somme des carrés de[1; 3; 5; 7; 9], concaténer la liste["B"; "Z"; "H"]et construire une liste de listes décroissantes à partir de[1; 3; 5; 7; 9].
Langage
Console initialisée. En attente de l'interpréteur...