1) Je n'ai pas compris :
Qu'est-ce qu'un déférencement ?
Pourquoi utiliser la fonction sub_vect ?
Qu'est-ce qui ne marche pas ?
2) ok, je ne connaissais pas cette fonction, il est vrai que c'est plus élégant.
Non ce n'est pas pour faire une multiplication rapide, c'est pour faire des multiplications (et opérations en général) sur des nombres dits p-adiques (en gros, ce sont un peu des entiers, voir par exemple wikipedia pour plus de détails).
Par ailleurs, que pensez-vous des deux "programmes" suivants :
un type produit pour les adique (notamment, pensez-vous le choix d'un vecteur approprié pour sauvegarder un nombre p-adique, ou une liste serait-elle mieux ?) :
type adique={mantisse : int vect ; base : int};;
la fonction d'affichage, qui va afficher un nombre sous la forme (312)_5, où 5 est la base.
1 2 3 4 5 6 7 8
|
let affichage a=
let rec concat_elements v n acc=
if acc=n then "" else (string_of_int v.(acc)) ^ (concat_elements v n (acc+1))
in
let affiche_mantisse vect = concat_elements vect (vect_length vect) 0
in
"(" ^ (affiche_mantisse a.mantisse) ^ ")_" ^ (string_of_int a.base) ;; |
Partager