2010-12-05 6 views
2

Je veux résumer chaque ligne et colonne dans la matrice et vérifier si elles sont toutes identiques. Je veux utiliser sum de la méthode row et transpose pour le faire, mais je n'avais aucune idée comment il peut vérifier si la somme de chaque ligne et de chaque colonne est la même.Prolog - somme de toutes les lignes et colonnes

Pouvez-vous me donner quelques conseils d'algorithme? Merci à l'avance.

Répondre

1

Utilisez toujours la même variable lors du calcul de la somme.
Cet exemple montre comment cela est fait pour les lignes.

checkRowSums([], _). 
checkRowSums([Row|R], Sum) :- rowSum(Row, Sum), checkRowSums(R, Sum). 

?- checkRowSums([[1, 5], [2, 4], [1, 2, 3]], _). 
0

Pour vérifier les lignes dans une colonne, vous pouvez utiliser le sum_list sous-jacente:

sum_list([], 0). sum_list([H|T], Sum) :- sum_list(T, Rest), Sum is H + Rest.

Utilisez ensuite sum_list pour trouver la somme totale des lignes, comme ceci:

sum_rows([],[]). sum_rows([Head|Tail], [Ret|Return]) :- sum_list(Head, Ret), sum_rows(Tail, Return).

Cela retournera une liste des sommes de lignes.

Questions connexes