(* Plus longue séquence de valeurs true dans une liste de booléens, en utilisant un itérateur *) let max_seq l = let m, n = List.fold_left (fun (m, n) b -> if b then m, n + 1 else max m n, 0) (0, 0) l in max m n (* L'accumulateur est ici une paire (m, n) où m est la longueur de la plus grande séquence de true vue jusqu'à présent et n le nombre de true vus à la fin de la séquence déjà examinée. Pour éviter de mettre à jour m à chaque étape (avec max m (n + 1)), on ne le fait que lorsqu'on rencontre la valeur false, et donc une fois au final. *)
This document was generated using caml2html