Ça c'est la technique de base de travail sur les listes.
On va supposer que les deux listes ont la même longueur.
Le cas simple, c'est que si les deux listes sont vides, alors le résultat est une liste vide.
Maintenant, reprenons ce que tu as écrit
somme(X,[Y|L1],X2,[Y2|L2],[X3|L3]):-X=Y,X2=Y2,X3 is (X+X2).
Tu t'es un peu compliqué la vie, on peut écrire exactement la même chose mais plus simplement
1 2
| somme([Y1|L1],[Y2|L2],[Y3|L3]):-
Y3 is (Y1+Y2). |
tu auras donc un prédicat somme(L1, L2, LS) qui réussit si LS est la somme terme à terme des listes L1 et L2.
La règle que tu as écrite calcule la somme des premiers éléments des listes.
Il faut donc dans la même règle, appeler le calcul de la somme des autres éléments des listes.
Maintenant, à toi de voir comment tu peux faire cet appel en tenant compte de ma remarque préliminaire sur les listes vides et sur la manière de construire les listes en ajoutant des éléments en tête de listes avec l'opérateur | .
Bon courage.
Partager