Download presentation
Presentation is loading. Please wait.
Published byCraig Axtell Modified over 9 years ago
1
Chapter Three: Lists, Operators, Arithmetic CS 461
2
3.2 Some operations on lists 1.Concatenation 2.Adding an item 3.Deleting an item
3
Concatenation conc(L1,L2,L3) L1 and L2 are two lists and L3 is their concatenation. conc([a,b],[c,d],[a,b,c,d]) True conc([a,b],[c,d],[a,b,a,c,d]) False
4
Concatenation (cont.) Definition of conc: empty (1)If the first argument is empty, then the second and third arguments must be the same list conc([],L,L). non-empty list (2)If the first argument of conc is non-empty list, then it has a head and tail and must look like this [X|L1] the result of concatenation of L1 and L2 is the list [X|L3] where L3 is the concatenation of L1 and L2 conc([X|L1],L2,[X|L3]):- conc(L1,L2,L3).
5
5 2. Concatenation (Example) conc([],L,L). conc([X|L1],L2,[X|L3]):- conc(L1,L2,L3). ?- conc([a,b,c],[1,2,3],L) L= [a,b,c,1,2,3] ?-conc([a,[b,c],d],[a,[],b],L) L = [a, [b, c], d, a, [], b].
6
6 2. Concatenation (Example) conc([],L,L). conc([X|L1],L2,[X|L3]):- conc(L1,L2,L3). ?- conc(L1,L2,[a,b,c]) (decompose) L1 = [], L2 = [a, b, c] ; L1 = [a], L2 = [b, c] ; L1 = [a, b], L2 = [c] ; L1 = [a, b, c], L2 = [] ;
7
7 2. Concatenation (Example) conc([],L,L). conc([X|L1],L2,[X|L3]):- conc(L1,L2,L3). ?-conc(Before,[may|After], [jan,feb,mar,apr,may,jun,jul,aug,sep,oct,n ov,dec]). Before = [jan, feb, mar, apr], After = [jun, jul, aug, sep, oct, nov, dec] How can we find the months that precedes and follows a given month in a list ?
8
Class exercise (1) conc([],L,L). conc([X|L1],L2,[X|L3]):- conc(L1,L2,L3). Write a goal, using conc, to delete the last three elements from the list L producing another list L1. HINT : L is a concatenating of L1 and another three elements list
9
Answer: ?- L = [1,2,3,4,5], conc(L1,[_,_,_],L). L = [1, 2, 3, 4, 5], L1 = [1, 2]
10
10 Concatenation Definition of member using conc: We can program the membership relation using conc: member1(X,L):- conc(L1,[X|L2],L). X is a member of list L if L can be decopmosed into two lists so that the second one has X as its head. member1(X,L):- conc(_,[X|_],L). member1(X,L):- conc(L1,[X|L2],L). member1(X,L):- conc(_,[X|_],L). ?- member1( b,[a,b,c]).
11
11 Adding an item Simply to put an item in front of a list: [X|L] Definition of add: The procedure can be written explicitly as the fact: add(X,L,[X,L]). Example ?-add(z,[a,b,c],NewList).
12
Delete an item Deleting an item X from list L, can be programmed as a relation: Del(X,L,L1). Where L1 is equal to L with the item X removed.
13
Delete an item The del definition : We have two cases : 1)If X is the head of the list, then the result after deletion will be the tail of the list. del(X,[X|Tail], Tail). 2) If X is in the tail then it is deleted from there: del(X,[X|Tail], Tail). del(X, [Y|Tail], Tail1) :- del(X, Tail, Tail1).
14
14 2. Deletion (Example) del(X,[X|Tail], Tail). del(X, [Y|Tail], Tail1) :- del(X, Tail, Tail1). ?- del(a,[a,b,a,a],L). L = [b, a, a] ; L = [a] ; L = [] ;
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.