Langage ML
hugo
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
Bonjour,
je viens de debuter la programation dans ce langage et j'aimerais savoir comment est-ce qu'on pourrait sortir une liste de frequence de chaque caractere à partir d'une chaine. par exemple si j'ai la chaine "AABBAABBCCDE" j'aimerais avoir [(A,4),(B,4),(C,2),(D,1),(E,1)].
Merçi
Bonjour,
je viens de debuter la programation dans ce langage et j'aimerais savoir comment est-ce qu'on pourrait sortir une liste de frequence de chaque caractere à partir d'une chaine. par exemple si j'ai la chaine "AABBAABBCCDE" j'aimerais avoir [(A,4),(B,4),(C,2),(D,1),(E,1)].
Merçi
A voir également:
- Langage ML
- Langage ascii - Guide
- Langage binaire - Guide
- Melody ml - Télécharger - Lecture & Playlists
- Clc langage jeune ✓ - Forum Mobile
- Langage visual basic - Télécharger - Langages
2 réponses
Avec Caml Light :
let ajouter c v= (* #ajouter : char -> int vect -> int vect = <fun> *)
let n=int_of_char c in
v.(n)<-v.(n)+1;
v;;
let rec calcul s v= (* #calcul : string -> int vect -> int vect = <fun> *)
if s="" then v
else calcul (sub_string s 1 (string_length s -1)) (ajouter s.[0] v);;
let simplifier v= (* #simplifier : int vect -> (char * int) list = <fun> *)
let l=ref [] in
for k=0 to 255 do
if v.(k)>0 then l:= !l@[char_of_int k,v.(k)];
done;
!l;;
let frequence s= (* #frequence : string -> (char * int) list = <fun> *)
simplifier (calcul s (make_vect 256 0));;
let ajouter c v= (* #ajouter : char -> int vect -> int vect = <fun> *)
let n=int_of_char c in
v.(n)<-v.(n)+1;
v;;
let rec calcul s v= (* #calcul : string -> int vect -> int vect = <fun> *)
if s="" then v
else calcul (sub_string s 1 (string_length s -1)) (ajouter s.[0] v);;
let simplifier v= (* #simplifier : int vect -> (char * int) list = <fun> *)
let l=ref [] in
for k=0 to 255 do
if v.(k)>0 then l:= !l@[char_of_int k,v.(k)];
done;
!l;;
let frequence s= (* #frequence : string -> (char * int) list = <fun> *)
simplifier (calcul s (make_vect 256 0));;