• # Laid

    Posté par (site web personnel) . En réponse au message Haskell. Évalué à 3.

    Les diagonales, c'est "l'indice i de la ligne i"...
    Donc tu parcoures tes listes, avec un compteur d'indice incrémenté à chaque nouvelle liste. Et tu additionnes "les éléments à l'indice i de chaque liste l_i".

    Pour diag2, c'est la même chose, sauf que tu inverses l'ordre de tes listes pour les parcourir à l'envers...


    l1=[[1,2,3],[4,5,6],[7,8,9]]

    diag1 = fst . foldl (\(x,c) y -> (x+(y!!c),c+1)) (0,0)
    diag2 = diag1 . reverse

    main = do
    print $ diag1 l1
    print $ diag2 l1