Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Domains
list=symbol*
PREDICATES del(symbol, list, list) ins(symbol, list, list)
CLAUSES del(X, [X|L], L). del(X, [Y|L], [Y|L1]): - del(X, L, L1). ins(X, L1, L): - del(X, L, L1). GOAL L=[olga, oksana, toma, dima], write(“L=”, L), nl, write(“X=”), readln(X), ins(X, L, L1), write(“L1=”, L1), nl, fail.
Результат выполнения программы: L=[" olga", " oksana", " toma", " dima" ] X=vera L1=[" vera", " olga", " oksana", " toma", " dima" ] L1=[" olga", " vera", " oksana", " toma", " dima" ] L1=[" olga", " oksana", " vera", " toma", " dima" ] L1=[" olga", " oksana", " toma", " vera", " dima" ] L1=[" olga", " oksana", " toma", " dima", " vera" ]
Контрольное задание: Решите задачу согласно варианту, выданному преподавателем: Вариант 1. Запишите предикат, названный sum_of, который работает точно подобно length_of, за исключением того, что требуется список чисел и их сумма. Например, sum_of([1, 2, 3, 4], S) должен связать S с 10. Вариант 2. Запишите предикат oddlist, который берет два параметра. Первый параметр - список целых чисел, в то время как второй параметр возвращает список всех нечетных чисел, найденных в первом списке. Вариант 3. Запишите предикат real_average, который вычисляет среднее значение всех элементов в списке вещественных чисел. Вариант 4. Запишите предикат, который берет составной список как его первый параметр и возвращает второй параметр, который является списком со всеми удаленными подсписками. Этот предикат обычно известен, как flatten, поскольку это сглаживает список списков в один список. Например, на запрос который является первоначальным сглаженным списком flatten([s(ed), i(3), l([r(3.9), l([s(sally)])])], r(4.21), X) Пролог ответит X = [s(ed), i(3), r(3.9), s(sally), r(4.21)] 1 Solution Вариант 5. Сформировать список [2, 4, 6, 8, 10] и удалить из него введенное число. Вариант 6. Сформировать списки [1, 3, 5, 7, 9] и [2, 4, 6, 8, 10] и объединить их в один. Вариант 7. Сформировать список [3, 6, 9, 12, 15, 18] и вставить в него введенное число. Вариант 8. Сформировать список из N натуральных чисел, начиная с 10. Каждое следующее на 5 больше предыдущего. Вариант 9. Сформировать список [3, 6, 9, 12, 15] и найти сумму его элементов. Вариант 10. Сформировать список [6, 5, 4, 3, 2] и найти сумму его элементов. Вариант 11. Сформировать список [7, 5, 3, 1] и найти произведение его элементов. Вариант 12. Сформировать список из N последовательных натуральных чисел, начиная с 10. Найти сумму его элементов.
Контрольные вопросы: 1. Что такое список? 2. В чем отличие списка от массива? 3. Как выглядит список, содержащий числа? 4. Каким образом объявляется домен для списка целых чисел? 5. Из чего состоит список? 6. Дайте понятие головы и хвостовой части списка? 7. Что такое хвост списка? 8. Какую структуру имеют списки? 9. Каким знаком можно отделить голову от хвостовой части списка? 10. Дайте понятие составного списка? 11. Как объявить домен для составного списка?
|