Задания на лабораторную работу
Вариант 1.
1. Вставить список l1 после k-го элемента списка l.
2. Применить быструю сортировку к n последним элементам списка, состоящего из атомов.
Вариант 2.
1. Удалить m элементов списка l, следующих после k-го элемента l.
2. Применить сортировку пузырьком к тем элементам списка списков атомов, первый элемент которых больше заданного числа n.
Вариант 3.
1. Заменить k-й элемент списка l списком l1. l - список, элементами которого являются списки.
2. Применить сортировку выбором к элементам списка чисел, стоящих до первого вхождения максимального элемента.
Вариант 4.
1. Обратить отрезок списка l между k1-ым и k2-ым его элементами. l - список, элементами которого являются атомы.
2. Применить сортировку вставкой к тем элементам списка списков, длина которых превышает 3.
Вариант 5.
1. Обратить данный список l, удалив из него элементы, совпадающие с первым элементом списка l. l - список, элементами которого являются списки.
2. Применить быструю сортировку к списку простых числовых списков по минимальному элементу.(сами списки –элементы не сортировать)
((8 5) (5 4 1) (3 2) (2 6)) -> ((5 4 1) (3 2) (2 6) (8 5))
Вариант 6.
1. Удалить из простого числового списка все четные элементы, идущие до первого нечетного, и все четные после последнего нечетного.
(2 8 7 3 2 4 7 9 1 4) -> (7 3 2 4 7 9 1)
2. Применить сортировку обменом (пузырьком) к списку простых числовых списков по их сумме. (сами подсписки не сортировать)
|
|
Вариант 7.
1. Удалить из списка l все подсписки, длины которых равны их порядковым номерам в l. Например, в случае l =[ [a], [b], [c, d ,e]]), необходимо удалить подсписки [a] и [c, d ,e].
2. Применить сортировку выбором к тем подспискам списка простых числовых списков, которые не содержат нечетных элементов.
Вариант 8.
1. l - список, элементами которого являются списки. Возвратить позицию того элемента списка l, который содержит наибольшее число, при условии что числа в списках не повторяются.
2. Применить быструю сортировку к подспискам списка простых числовых списков, стоящих на четных местах.
Вариант 9.
1. l1, l2 - списки, элементами которых являются атомы. Выяснить, содержит ли список l1 все элементы из списка l2 (только одно вхождение).
2. Применить сортировку выбором к элементам простого числового списка, начиная с k-го индекса и заканчивая m-ым.
Вариант 10.
1. l - список, элементами которого являются числа в диапазоне от 0 до 9. Подсчитать число, получающееся по следующему правилу: если l = [ 5, 1, 2, 6], то число = 5*1000 + 1*100 + 2*10 + 6 = 5126.
2. Применить сортировку вставкой к первым n элементам простого списка.
Пример выполнения.
1. l1, l2 - списки, элементами которых являются атомы. Заменить элементами второго списка элементы первого, начиная с элемента первого списка, совпавшего с первым элементом второго. Если первый элемент второго списка отсутствует в первом, присоединить второй в конец первого.
|
|
[1,2,3,4,5,6] [4,3,8,7] -> [1,2,3,4,3,8,7]
Решение.
Основной предикат будет иметь три аргумента – два входных списка и результат. Вспомогательный рекурсивный предикат будет иметь такие же аргументы. Во-первых, опишем случай, когда первый аргумент есть пустой список – тогда результат есть просто второй список. Во-вторых, если голова первого списка совпадает с головой второго, нам нужно выдать в качестве результата второй список и закончить работу – используем отсечение, при этом хвост первого списка нас не интересует – опишем его анонимной переменной. И, наконец, шаг рекурсии – если головы списков не совпали, то нужно найти список - результат для хвоста первого списка и слить голову первого списка с этим результатом – для слияния списков использована функция conc, рассмотренная в разделе 6.2.
Можно написать и короче последнюю строку, без использования предиката conc, который использовался только для пояснения получения результата:
|
|
Пример выполнения:
2. Применить быструю сортировку к подспискам, содержащим заданное число.
Решение.
Основной предикат должен содержать три аргумента – исходный список, заданное число и список – результат. В базе рекурсии для пустого списка укажем, что результатом является пустой список, при этом второй аргумент объявим как анонимную переменную.
Далее проверяем наличие заданного элемента в подсписке-голове с помощью предиката member и применяем быструю сортировку к подсписку, если предикат member был согласован. Иначе переписываем подсписок в результат без сортировки (при этом заданное число можно объявить анонимной переменной). И в обоих случаях вызываем рекурсивно обработку хвоста списка. Вспомогательные предикаты для сортировки и проверки принадлежности элемента списку были описаны выше.
Пример выполнения:
Лабораторная работа № 7.
Дата добавления: 2019-03-09; просмотров: 957; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!