listlib:: merge

Слияние двух упорядоченных списков

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

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

Описание

listlib::merge(list1, list2) объединяет оба списка в один список.

С третьим дополнительным аргументом функция может состоять в том, учитывая, что сравнивают элементы списков, и к тому же определяет порядок элементов. Заданная функция вызвана двумя элементами и должна возвратить TRUE, если эти два элемента находятся в правильном порядке, в противном случае FALSE (см. следующий абзац).

Заданная функция называется шаг за шагом с элементом первого списка так же первым аргументом и элементом второго списка как второй аргумент, пока это не возвращает FALSE. Затем элемент второго списка вставляется в первый список перед последним доказанным элементом (см. Пример 2).

Примечание

Списки должны быть упорядочены относительно функции порядка, в противном случае элементы могли быть вставлены в неправильном месте.

Если никакому третьему аргументу не дают, функциональный _less используется. Если никакой порядок элементов относительно _less не задан, функция должна быть дана, в противном случае ошибка появляется. Системная функция sysorder всегда может использоваться.

Примеры

Пример 1

Слияние двух возрастаний заказало списки:

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

Слияние двух убываний заказало списки:

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

Пример 2

Следующий пример показывает, как выражения могут быть упорядочены определяемым пользователем приоритетом. Это распоряжение дано функцией с именем priority, который возвращает меньшее число, когда выражение имеет тип с более высоким приоритетом:

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

Функциональный sortfunc возвращает TRUE, если оба данных аргумента находятся в правильном порядке, т.е. первый аргумент имеет более высокое (или равный) приоритет, чем второй аргумент:

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

Теперь оба списка объединены относительно уделенного первостепенное значение:

listlib::merge([x^y, x*2, -y], [x^2, x*y, x + y], sortfunc)

delete priority, sortfunc:

Параметры

list1, list2

Список MuPAD®

function

Функция, которая определяет порядок слияния

Возвращаемые значения

Упорядоченный список, который содержит элементы обоих списков

Смотрите также

Функции MuPAD

Для просмотра документации необходимо авторизоваться на сайте