CSI2520 ?- insert(a, L, [b, a, d, a, f]). L = [b, d, a, f] ; L = [b, a, d, f] ; no Linsertion et le retrait sont 2 concepts complémentaires!

Slides:



Advertisements
Présentations similaires
9 avril 2001 Listes et Suites Finies Représentation Propriété Accès aux éléments Récursivité Construction Sous-suites et arbres représentatifs Application.
Advertisements

Résolution de systémes par substitition et par élimination.
1 UMLV Optimalité des tris par comparaisons : O(n logn) Classements linéaires Tris lexicographiques Tri lexicographique.
Pourquoi les lampes ne brillent elles pas de la meme maniere ?
Analyse et Programmation Déclarative / Prolog
Mesures de tensions électriques Loi des tensions dans un circuit série
Fonctionnement du moteur Prolog
Séminaire Florin Périer Alain Gély LIMOS
INTRODUCTION.
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
On parle darbre de recherche dune question *Racine de larbre : question *Nœuds : points de choix (formule à démontrer) *Passage dun nœud vers son fils.
Chapitre IV. Structures linéaires (piles, files, listes chaînées)
La Kessamo « » (Caisse à mots)
Cours 8 Arbres équilibrés
Objets Opérateurs Listes
Structures de données linéaires
OCaml - Les listes L3 MI.
Analyser une phrase % extraire une phrase et retourner le reste
Géométrie vectorielle
OCaml – Les arbres L3 MI.
POO-L3 H. Fauconnier1 Tableau et héritage Y[] yA=new Y[3]; X[] xA=yA; //ok xA[0]=new Y(); xA[1]=new X(); //non xA[1]=new Z(); //non Object XX[]int[] YZY[]Z[]
Le Canada.
Programmation fonctionnelle Le langage LISP
Définition d’un maillon de liste
Chapitre VII Généricité. POO-L3 H. Fauconnier2 Chapitre VII 1. Principes généraux 2. Types génériques imbriqués 3. Méthodes génériques 4. Types paramètres.
Systèmes d’équations et équations chimiques
Le drapeau du Labrador et Terre-Neuve
Mesure de l’intensité d’un courant électrique
Les fichiers indexés (Les B-arbres)
© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Récursion sur les Listes Peter Van Roy Département dIngénierie Informatique, UCL
CSI2520 resoudre(N,[N]) :- but(N). resoudre(N,[N | Solution]) :- successeur(N,Nsuivant), resoudre(Nsuivant,Solution). Il faut donc définir le but et définir.
Chapitre 3: Les équations et les inéquations
LES CONIQUES Cours 25. Le nom conique vient du fait quelle peuvent être vue comme des coupes dun cône par un plan.
Arbres en Prolog Un arbre binaire est une structure pouvant contenir des données. Chaque élément de l'arbre contient une donnée et a au plus un 'parent'
CSI2520, Hiver 2007 Les entrées-sorties Ecriture sur l'écran ou dans un fichier Lecture à partir du clavier ou dun fichier Affichage de termes : *write(1+2)
CSI2520 Ecriture sur l'écran ou dans un fichier Lecture à partir du clavier ou dun fichier Affichage de termes : *write(1+2) affiche 1+2 *write(X). affiche.
CSI2520 Un arbre binaire est une structure pouvant contenir des données. Chaque élément de l'arbre contient une donnée et a au plus un 'parent' et deux.
1 Le fichier séquentiel Suite finie déléments dun même type Exemples : – fichier des livres dune bibliothèque – enregistrements sur un magnétophone – ensemble.
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Procédures et fonctions
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.
Affectation (d'après "Learning Python", de Mark Lutz)
Isoler une variable Dans cette présentation, nous isolerons la variable x dans une équation contenant des coefficients fractionnaires. La première chose.
Jacques Nicolas INRIA /IRISA Rennes
Diviser pour résoudre A. Principe général B. Applications
Exercice 5 (15’) 2.1 Problème : on veut simplifier la réservation téléphonique dans un hôtel. Vous devez concevoir un outil grâce à un tableur. Le réceptionniste.
Expressions régulières et hash tables
Le Canada.
Prolog Listes Arbres en prolog Structures : bases de données
Objectifs A la fin de ce chapitre, vous pourrez : présenter l'utilisation d'opérations de chargement de données par chemin direct décrire l'utilisation.
Méthodes de tri.
Rappel - analyse et synthèse de fonctions combinatoires
Le langage Racket (Lisp)
La Kessamo « » (Caisse à mots)
LE CANADA EN PANORAMIQUE BIOSPHERE CANAL … LACHINE.
Objets Opérateurs Listes
Le calcul algébrique.
Programmation fonctionnelle Preuve
CPI/BTS 2 Algorithmique & Programmation La récursivité Algo – Prog CPI/BTS2 – M. Dravet – 14/09/2003 Dernière modification: 14/09/2003.
Qu’est ce que c’est?  La décision de trois régions d’unir en un pays.  Le début du pays du Canada  1867.
6/10/2005 © 2005 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Récursion sur les Listes Peter Van Roy Département d’Ingénierie Informatique,
Relations et fonctions
Relations et fonctions
LINF 1251: Récursion sur les Listes
Files de priorité (Priority Queue)
Chaînage et LSC : motivation et principe  Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
Géographie du Canada 1232 Qu’est-ce que tu sais vraiment de ce pays?
Les capitales des provinces canadiennes Exercice de révision.
Algorithmes Branch & Bound Module IAD/RP/RO Master d ’informatique Paris 6 Philippe Chrétienne.
Transcription de la présentation:

CSI2520 ?- insert(a, L, [b, a, d, a, f]). L = [b, d, a, f] ; L = [b, a, d, f] ; no Linsertion et le retrait sont 2 concepts complémentaires!

CSI2520 notre-delete(R,[R|L],L). notre-delete(R,[X|LL], [X|L]) :- notre-delete(R,LL,L).

CSI2520 deleteall(X,[],[]). deleteall(X,[X|T],Result) :- deleteall(X,T,Result),!. deleteall(X,[H|T],[H|Result]) :- deleteall(X,T,Result). ?- deleteall(2,[1,2,4,3,2,6,2,2],L). L = [1, 4, 3, 6]. Quarrive-t-il si on retire la coupe?

CSI2520 intersection( [], Ys, [] ). intersection( [ X | Xs ], Ys, Zs ) :- not member( X, Ys), intersection( Xs, Ys, Zs ). intersection( [ X | Xs ], Ys, [ X | Zs ] ) :- member( X, Ys ), intersection( Xs, Ys, Zs ).

CSI2520 tri([],[]). tri([P|Q],T) :- partition(P,Q,G,D), tri(G,GG), tri(D,DD), append(GG,[P|DD],T). partition(P,[X|L],[X|PG],PD) :- X < P, partition(P,L,PG,PD). partition(P,[X|L],PG,[X|PD]) :- X >= P, partition(P,L,PG,PD). partition(P,[],[],[]).

CSI2520 Effectuer un traitement sur les éléments de listes traite-liste([],[]). traite-liste([X|L],[Y|T]) :- traite(X,Y), traite- liste(L,T). somme(L,S) :- somme(L,0,S). somme([X|L],T,S) :- TT is T+X, somme(L,TT,S). somme([],S,S).

CSI2520 mirror([ ], [ ]). mirror([X|L1], L2) :- mirror(L1,L3), append(L3, [X], L2). % append will dig into the list a second time

CSI2520 mirror2(Left, Right) :- invert(Left, [ ], Right). invert([X|L1], L2, L3) :- % the list is 'poured' invert(L1, [X|L2], L3). % into the second argument invert([ ], L, L). % at the deepest level, the result L is merely copied

CSI2520 Les listes peuvent être représentée avec le symbole fonctionnel binaire «. » suite {e1, e2, …} ==> liste (e1.(e2.(…))) La liste vide est notée « nil ». Elle sert souvent à marquer la fin de liste. Exemples : suite des variables X et Y => (X.Y) suite {gateau, fruit, glace} =>(gateau.(fruit.(glace.nil)))

CSI2520 Exemples :. XY... gateau fruit glace nil

CSI2520 Une liste correspond au cas particulier ou les branches gauches sont toujours des feuilles. On utilise le terme de peigne pour les désigner. Exercice : résoudre l'équation X.Y = gateau.fruit.glace.nil par identification on a la solution : {X = gateau; Y = fruit.glace.nil}

CSI2520 La notation X.Y représente une liste dont la tête (le 1er élément) est X et la queue (le reste de la liste) est Y. Cela constitue la base de lutilisation des listes dans les programmes Prolog. Attention le terme X.Y nest pas une liste mais plutôt une paire.

CSI2520 Les villes d'une province: province(ontario,toronto,ottawa,hamilton,kitchener, london). province(quebec,montreal,quebec_city,sherbrooke,t rois_rivieres). province(new_brunswick,saint_john,moncton,freder icton). Il faut plutôt utiliser une liste (province/2): province(quebec, montreal.( quebec_city.(sherbrooke.(trois_rivieres.nil)))). province(new_brunswick, saint_john.(moncton.(fredericton.nil))). province(ontario, toronto.ottawa.hamilton.kitchener.london.nil).

CSI2520 En pratique, on représente une liste avec les '[ ]': montreal.(quebec_city.(sherbrooke.(trois_rivieres. nil))) est représentée par: [montreal, quebec_city, sherbrooke, trois_rivieres] Pour avoir accés aux différents paramètres on utilise le '|'. On a donc [tete|queue].

CSI2520 Ainsi, on peut écrire: [saint_john,moncton,fredericton] qui est equivalent a: [saint_john | [moncton,fredericton]] qui est equivalent a: [saint_john | [moncton | [fredericton]]] qui est equivalent a: [saint_john | [moncton | [fredericton | [ ]]]] ou encore: [saint_john, moncton | [fredericton]] ou: [saint_john, moncton, fredericton | []] De manière générale: [x | queue] une liste dau moins un élément. [x, y | queue] une liste dau moins deux éléments.

CSI2520 Regle inProvince/2 qui retourne la province dans laquelle se trouve une ville X: inProvince(X,P) :- province(P, L), member(X, L). ?- inProvince(ottawa, P). P = ontario ; No ?- inProvince(V, new_brunswick). C = saint_john ; C = moncton ; C = fredericton ; No