[Instructions] [Search] [Current] [Syllabus] [Links] [Handouts] [Outlines] [Assignments] [Labs]
Assigned: Monday, April 12, 1998
Due: start of class, Monday, April 19, 1998
This is your final written assignment for CS302. You should spend the remaining ``assignment time'' on your presentations.
In all of the problems below, your testing should show not just
that the predicates hold when given appropriate parameters, but also
whether they can be used to generate appropriate values. If they cannot
be used to generate values (e.g., most reverse
predicates
can only reverse one of their two parameters), make sure to note these
limitations.
1. Reversing Lists
Define and test a binary predicate, reverse(L1,L2)
, that
holds if list L1
is the reverse of L2
. That
is, it holds between two lists if and only if they contain the same
elements, but in the opposite order.
2. Insertion
Define and test a trinary predicate, insert(Old,Elt,New)
,
that holds if and only if New
is the same as Old
except that one copy of Elt
has been added at some position
(not necessarily the front). For example,
insert([a,a], b, [b,a,a])
and
insert([a,a], b, [a,b,a])
and
insert([a,a], b,[a,a,b])
all hold. However
insert([a],b,[b,a,b])
and
insert([a],b,[a,a])
should both fail.
3. Removal
Define and test a trinary predicate, remove(Old,Elt,New)
,
that holds if and only if New
is the same as Old
except that one copy of Elt
has been removed.
4. Permutations
Define and test a binary predicate, permutation(L1,L2)
,
that holds when list L2
is a permutation of L1
(or vice versa). That is, permutation(L1,L2)
holds if and
only if L1
and L2
contain exactly the same
elements, but possibly in another order.
5. Sorting Lists
Define and test a binary predicate, sorted(L1,L2)
, that holds
between two lists if, and only if, the second contains the same elements
as the first, but in sorted order. You may use any strategy you deem
appropriate.
History
[Instructions] [Search] [Current] [Syllabus] [Links] [Handouts] [Outlines] [Assignments] [Labs]
Disclaimer Often, these pages were created ``on the fly'' with little, if any, proofreading. Any or all of the information on the pages may be incorrect. Please contact me if you notice errors.
This page may be found at http://www.math.grin.edu/~rebelsky/Courses/CS302/99S/Assignments/assign.05.html
Source text last modified Mon Apr 12 08:48:25 1999.
This page generated on Mon Apr 12 08:54:33 1999 by SiteWeaver. Validate this page's HTML.
Contact our webmaster at [email protected]