Prolog przetwarzanie list. Maciej Krzywonos Łukasz Dajcz

Podobne dokumenty
Programowanie deklaratywne

Programowanie deklaratywne

Programowanie w logice Prolog 2

Dynamiczne struktury danych

Projekt 4: Programowanie w logice

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

Odwrotna Notacja Polska

Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).

Dynamiczne struktury danych

Listy, kolejki, stosy

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Programowanie w logice Prolog 1

Podstawowe struktury danych

Kurs II, zajęcia 1. Tomasz Kulczyński, Błażej Osiński, Wojciech Śmietanka. Stos, kolejka i lista. Stos. Kolejka. Lista dwukierunkowa

Algorytmy i Struktury Danych.

Teoretyczne podstawy informatyki

Struktury danych: stos, kolejka, lista, drzewo

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Metody Kompilacji Wykład 3

Programowanie i struktury danych 1 / 44

Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2

Deklarowania faktów dotyczących obiektów i związków między nimi. Definiowania reguł dotyczących obiektów i związków między nimi.

Zadania z podstaw programowania obiektowego

dr inż. Paweł Myszkowski Wykład nr 11 ( )

Wstęp do programowania

Programowanie obiektowe

Java Collections Framework


Wprowadzenie do Prologa

Bash - wprowadzenie. Bash - wprowadzenie 1/39

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.


Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych:

Programowanie Funkcyjne. Marcin Kubica Świder,

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

Tadeusz Pankowski

Podstawy obiektowości

Programowanie w Logice Struktury danych (Lista 2)

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Programowanie dynamiczne

Programowanie obiektowe

PROLOG INNE PRZYKŁADY MACIEJ KELM

Oracle PL/SQL. Paweł Rajba.

WSTĘP DO INFORMATYKI. Struktury liniowe

ALGORYTMY I STRUKTURY DANYCH

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

Listy, krotki, słowniki, funkcje

Algorytmy i Struktury Danych.

Porządek symetryczny: right(x)

Definicje wyższego poziomu

Ćwiczenie 5 Menu programu

Teoretyczne podstawy informatyki

EGZAMIN MATURALNY 2012 INFORMATYKA

Matematyka dyskretna. Andrzej Łachwa, UJ, /10

Drzewa wyszukiwań binarnych (BST)

Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula

Programowanie deklaratywne

Technologie i systemy oparte na logice rozmytej

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

Np. Olsztyn leży nad Łyną - zdanie prawdziwe, wartość logiczna 1 4 jest większe od 5 - zdanie fałszywe, wartość logiczna 0

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

Prolog struktury danych oraz obliczenia. 1. Arytmetyka?- Y is 2+2. Y = 4. ?- 5 is 3+3. false. ?- Z is (3.9 / 2.1). Z =

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

- - Ocena wykonaniu zad3. Brak zad3

5.4. Tworzymy formularze

dr inż. Jarosław Forenc

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych:

Przykładowe B+ drzewo

Przestrzenne bazy danych Podstawy języka SQL

Ocena poziomu rozwoju podstawowych zdolności arytmetycznych w oparciu o baterie testów wydawnictwa PROMATHEMATICA

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych

BASH - WPROWADZENIE Bioinformatyka 4

Wysokość drzewa Głębokość węzła

Wstęp do programowania. Listy. Piotr Chrząstowski-Wachtel

SQL (ang. Structured Query Language)

Wymagania egzaminacyjne z matematyki. Klasa 3C. MATeMATyka. Nowa Era. Klasa 3

Ziemia obraca się wokół Księżyca, bo posiadając odpowiednią wiedzę można stwierdzić, czy są prawdziwe, czy fałszywe. Zdaniami nie są wypowiedzi:

Metodyki i techniki programowania

Zakład Systemów Rozproszonych

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Rekurencja, schemat rekursji i funkcje pierwotnie rekurencyjne

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Podstawy Informatyki. Metody dostępu do danych

Architektura komputerów, Informatyka, sem.iii. Sumatory

PŁOCKA MIĘDZYSZKOLNA LIGA PRZEDMIOTOWA MATEMATYKA klasa V szkoła podstawowa 2012

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

Rachunek zdań i predykatów

Algorytmy i struktury danych. wykład 5

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

5. OKREŚLANIE WARTOŚCI LOGICZNEJ ZDAŃ ZŁOŻONYCH

Zakres materiału obowiązujący do egzaminu poprawkowego z matematyki klasa 1 d LO

Wstęp do programowania

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

Wykład 6. Drzewa poszukiwań binarnych (BST)

Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST)

Transkrypt:

Prolog przetwarzanie list Maciej Krzywonos Łukasz Dajcz

Prolog reprezentacja list Lista jest dowolnym ciągiem obiektów zapisywanych w postaci: [element_1,element_2,...,element_n]

Prolog - reprezentacja list Lista jest reprezentowana w postaci struktury drzewa:

Prolog - reprezentacja list Budowa listy: głowa wskazuje początek listy ogon wskazuje na pozostałe elementy listy

Prolog właściwości list Właściwości list: Głowa listy może być dowolną strukturą języka prolog Ogon listy jest zawsze listą Lista jest strukturą rekurencyjną - jeśli ogon listy nie jest pusty to też jest listą

Prolog właściwości list W języku Prolog listy mogą być zapisywany w sposób bezpośrednio odzwierciedlającym ich budowę: [Head Tail], gdzie: Head ciąg dowolnych elemntów Tail lista elemntów, np.: [Man, Audi, BMW]=[Man [Audi, BMW]]=[Man, Audi [BMW]] Elementem składowym listy może być inna lista

Prolog-przykłady list Przykładowe listy: Samochody = [Audi, Mercedes] Autobusy = [Volvo, Solaris] Pojazdy = [pociagi, Samochody, Autobusy] Lista = [pociagi, autobusy, [samoloty, statki]]

przetwarzanie list - dodawanie elementu Operacja dodawania elementu do listy. Element dodawany jest na początek listy (element jest głową listy), np.: add(element_1,lista, [element_1 Lista])

przetwarzanie list - member Operacje sprawdzająca czy dany element należy do listy: member(a,lista)powinno być prawdziwe jeśli a jest elementem listy Lista member (b,[a,b,c]). - prawda member(b,[a,[b,c]]). - falsz member([b,c],[a,[b,c]]). -prawda member([a _],[b,d,[a,f,g,a,h,i]]). - prawda implementacja: member(x,[x Ogon]). member(x,[glowa Ogon]):-member(X,Ogon).

Łączenie list Operacja łączenia list: conc(lista_1,lista_2,lista_3). łączy listę lista_1 z lista_2, połączone listy znajdują się w liście trzeciej (lista_3), np.: conc ([a,c],[b,g],w) W=[a,c,b,g] conc([man, Star],[Audi, BMW],W) W=[Man,Star,Audi,BMW]

` Zapis łączenia list w języku Prolog: conc([],lista,lista). conc([h T1],L2,[H T2]):- conc(t1,l2,t2).

Łączenie list Zastosowanie operacji łączenia list: Dekompozycja list, np.: conc(lista_1, Lista_2,[s,i,k]). Lista_1=[] Lista_2=[s,i,k]; Lista_1=[s] Lista_2=[i,k];

Łączenie list Lista_1=[s,i] Lista_2=[k]; Lista_1=[s,i,k] Lista_2=[];

Łączenie list Operacja szukania podlist, np.:?- conc(przed,[sr Po],[pon,wt,sr,czw,pt,sob,nd]). Przed = [pon,wt] Po = [czw,pt,sob,nd] Szukanie poprzednika i następnika:?- conc(_, [Przed,sr,Po _],[pon,wt,sr,czw,pt,sob,nd]). Przed=wt Po=czw

Łączenie list Usuwanie podlisty za pomocą operacji conc,np.:?- Lista_1 = [a,b,z,z,c,z,z,z,d,e],conc(lista_2, [z,z,z _],Lista_1) Lista_1 = [a,b,z,z,c,z,z,z,d,e] Lista_2 = [a,b,z,z,c]

Szukanie podlisty Operacja sublist(s,l) lista S należy do listy L, jeśli lista L składa się z dwóch list L1 i L2, a lista L2 jest połączeniem list S i L3. sublist(s,l):- conc(l1,l2,l), conc(s,l3,l2). np.:?- sublist(s,[c,d,a]). S=[]; S=[c]; S=[c,d]; S=[c,d,a]; S=[d];

Permutacje elementów listy Operacja generowania permutacji listy jest realizowana za pomocą polecenia permut (lista_1, lista_2). Jest ona prawdziwa jeśli lista lista_2 jest permutacją listy lista_1,np.:?- permut([1,2,3],lista). Lista=[1,2,3]; Lista=[1,3,2]; Lista=[2,1,3];...

Permutacja elementów listy Najpierw usuwamy element, na pozostałej reszcie dokonujemy permutacji i wstawiamy element na początek implementacja: permutacja([],[]). permutacja(l,[x P]) :- del(x,l,l1), permutacja(l1,p).

Operacje delete Operacja usuwania elementu z listy. del(element_1, Lista_1, Lista_2) jest prawdziwe jeśli lista lista_2 jest równa liście lista_1 pomniejszona o element element_1. Położenie elementu element_1 jest dowolne. Zapis w Prologu: del(x,[x Ogon], Ogon). del(x,[h Ogon],[H Ogon1]):-del(X,Ogon,Ogon1).

Prolog przetwarzanie list Operacja del c.d. Wstawianie elementu do listy za pomocą operacji del, np.:?-del(a,lista,[1,2,3]). Lista=[a,1,2,3]; Lista=[1,a,2,3]; Lista=[1,2,a,3]; Lista=[1,2,3,a];

Prolog przetwarzanie list Operacja del c.d. Operacja del(element, lista_1,lista_2) usuwa tylko jedno wystąpienie element z listy lista_1, np.:?- del(w,[w,q,w,w],lista). Lista=[q,w,w]; Lista=[w,q,w]; Lista=[w,q,w];

Odwracanie listy Możemy odwrócić kolejność elementów listy odwroc([a,b,c],w). W = [c, b, a]. lub: odwroc(w,[a,b,c]). W = [c, b, a] implementacja: odwroc([],[]). odwroc([h T],L) :- odwroc(t,r ), conc(r,[h],l).

Obliczanie długości listy Możemy obliczyć długość listy:?- dlugosc([a,b,c],wynik). Wynik = 3. implementacja: dlugosc([],0). dlugosc([_ Ogon],Dlug) :- dlugosc(ogon,x), Dlug is X+1.

Prolog - listy Koniec