• [^] # Re: Dommage...

    Posté par . En réponse à la dépêche OCaml 3.10.0 est sorti. Évalué à 1.

    Ah non !
    En classe, on apprend que pour A = B.C la valeur de A[i][j] est égale à la somme de B[i][k].C[k][j] pour k=1 à n.

    Qui a parlé de boucle là ?
    Soit, à la limite, on peu considérer que le "somme pour k de ... à ..." ressemble à une boucle, mais il n'y a pas de notion d'ordre contrairement à une boucle !

    Par contre, les deux autres boucles, tu les as ajouté parce que c'est ta manière de penser en impératif.

    ----------

    En fonctionnel, tu peux faire ca de la manière suivante (je prend pas la syntaxe CAML puisqu'elle fait peur)

    soit les deux fonction B et C de [[1,n]]^2 dans R qui représentent les deux matrices du même nom (une fonction, une matrice, c'est la même chose finalement ...)

    // calcule B[i][k].C[k][j] (on aurait pu en faire une fonction anonyme, mais ça fait peur ...
    prod(B,C,i,j,k) := B(i,k)*C(k,j)

    // la fonction A qui représente la matrice du même nom
    // sum qui est classiquement fourni par une bibliothèque prend en paramètre deux entier (les bornes) et une fonction à un paramètre (prod dont on a fixé tous les paramètres sauf un)
    A(i,j) := sum(1,n,prod(B,C,i,j))