Telle est la question pour un de mes missions:Prolog Affectation
Ecrire
repCount(L, X, N)
qui est vrai quandN
est le nombre d'occurrences deX
dans la listeL
.
Voici mon code où je tente d'aborder le problème récursive:
repCount([], X, N) :-
N is 0.
repCount([H|T], X, N) :-
count([H|T], X, N).
count([], X, 0).
count([H|T], X, N) :-
count(T, X, N1),
X =:= H,
N is N1 + 1.
Et ça marche quand je fournir une liste complète des numéros identiques à ceci:
?- repCount([2,2,2], 2, N).
N = 3.
Mais si je fournir une liste avec au moins une valeur différente:
?- repCount([2,2,22], 2, N).
false.
Renvoie false
. Je ne peux pas comprendre pourquoi cela se produit ou comment le changer pour «ignorer» la valeur qui ne correspond pas, plutôt que de déclarer tout faux. Toute contribution est appréciée.
beaucoup apprécié, je vous remercie. –
Vous devriez cliquer sur upvote au lieu de dire "merci" sans upvoting le gars qui vous a aidé! –
Trop court de rep pour le moment, mais fera une fois que j'en ai assez. Merci pour la note! –