Previous Page Next Page Contents

listlib::singleMerge -- merging of two ordered lists without duplicates

Introduction

listlib::singleMerge(list1, list2) merges two ordered lists without duplicates.

Call(s)

listlib::singleMerge(list1, list2 <, function>)

Parameters

list1, list2 - a MuPAD list
function - a function, that determines the merging order

Returns

an ordered list that contains the elements of both lists

Related Functions

listlib::merge, listlib::insert, _concat, zip

Details

Example 1

Merging two ascending ordered lists:

>> listlib::singleMerge([1, 3, 5, 7], [2, 4, 6, 8])
                         [1, 2, 3, 4, 5, 6, 7, 8]

Merging two descending ordered lists:

>> listlib::singleMerge([7, 5, 3, 1], [8, 6, 4, 2], _not@_less)
                         [8, 7, 6, 5, 4, 3, 2, 1]

Example 2

Merging two ascending ordered lists with duplicates:

>> listlib::singleMerge([1, 2, 5, 7], [2, 5, 6, 8])
                            [1, 2, 5, 6, 7, 8]

But the following lists does not contain mutual equal elements:

>> listlib::singleMerge([1, 1, 3, 3], [2, 2, 4, 4])
                         [1, 1, 2, 2, 3, 3, 4, 4]

Example 3

The following example shows, how expressions can be ordered by a user defined priority. This order is given by the function named priority, which returns a smaller number, when the expression has a type with higher priority:

>> priority := X -> contains(["_power", "_mult", "_plus"], type(X)):
   priority(x^2), priority(x + 2)
                                   1, 3

The function sortfunc returns TRUE, if the both given arguments are in the right order, i.e., the first argument has a higher (or equal) priority than the second argument:

>> sortfunc := (X, Y) -> bool(priority(Y) > priority(X)):
   sortfunc(x^2, x + 2), sortfunc(x + 2, x*2)
                                TRUE, FALSE

Now the both lists are merged with regard to the given priority:

>> listlib::singleMerge([x^y, x*2, -y], [x^2, x*y, x + y], sortfunc)
                         y   2
                       [x , x , 2 x, -y, x y, x + y]
>> delete priority, sortfunc:

Changes




Do you have questions or comments?


Copyright © SciFace Software GmbH & Co. KG 2000