Random.int 7;; let palindrome u = let l = ref [] in for i = 0 to (String.length u -1) do l:=u.[i]::!l done; !l = List.rev !l;; palindrome "radrr";; let nb_palindrome u = let n =String.length u in let nb = ref 0 in for i = 0 to (n-1) do for j = (1+i) to n do if palindrome (String.sub u i (j-i)) then nb:=!nb+1 done done;!nb;; nb_palindrome "babb";; let nb_palindrome_bis u = let n =String.length u in let l =ref[] in for i = 0 to (n-1) do for j = (1+i) to n do if palindrome (String.sub u i (j-i)) then l := (String.sub u i (j-i))::!l done done;!l;; nb_palindrome_bis "babb";; let matrice u = let n = String.length u in let m =Array.make_matrix (n+1) (n+1) false in for i=0 to (n-1) do m.(i).(i+1) <-true done; for i = 0 to (n-2) do m.(i).(i+2)<- u.[i]=u.[i+1] done; for j = 3 to n do for i = 0 to (j-3) do m.(i).(j)<- (m.(i+1).(j-1)&&(u.[i]=u.[j-1])) done done ; m;; matrice "kayak";; let nb_palindrome2 u = let m =matrice u in let n=Array.length m in let nb = ref 0 in for i = 0 to (n-1) do for j = i+1 to (n-1) do if m.(i).(j) then nb := !nb +1 done;done;!nb;; nb_palindrome2 "kayak";; let sous_palindrome2 u = let m = matrice u in let n = Array.length m in let l= ref [] in for i = 0 to (n-1) do for j = i+1 to (n-1) do if m.(i).(j) then l := (String.sub u i (j-i))::!l done;done;!l;; sous_palindrome2 "kayak";;