? users online
  • Logout
    • Open hangout
    • Open chat for current file
<div class="notebook">

<div class="nb-cell markdown" name="md1">
# Listes circulaires en ProLog, exemple de somme.
</div>

<div class="nb-cell program" data-background="true" name="p1">
listeVersListeCirculaire(L,C) :-
    l2lc(L,C,C).

l2lc([],L,L).
l2lc([E|R],L,[E|S]):-
    l2lc(R,L,S).
</div>

<div class="nb-cell query" name="q1">
listeVersListeCirculaire([1,2,3],C).
</div>

<div class="nb-cell markdown" name="md2">
rem. pour la liste vide, cela ne donne pas grand chose, une variable libre ... (mais a-t-on des listes vides circulaires en C ?)
</div>

<div class="nb-cell program" data-background="true" name="p2">
sommeListeCirculaire(C,S) :-
    slc(C,C,S).

slc([E|C],C,E).
slc([E|L],C,S) :-
    dif(L,C),
    slc(L,C,R),
    S is E+R.
</div>

<div class="nb-cell query" name="q2">
listeVersListeCirculaire([1,2,3],C), sommeListeCirculaire(C,S).
</div>

<div class="nb-cell markdown" name="md3">
rem. pour les listes circulaires avec répétition :
</div>

<div class="nb-cell query" name="q3">
listeVersListeCirculaire([1,2,3,1,2,3],C), sommeListeCirculaire(C,S).
</div>

</div>