Сборник задач по курсу «Логическое программирование»: Учебное пособие, страница 2

Аргументы: исходный список; результат вычислений.

?- pred([1,2,3,4,5],X). X = -1 yes ?-

14.  Сформировать по заданному мужскому имени отчество.

Аргументы: исходная строка (имя); результирующая строка (отчество).

?- pred(’Иван’,X). X = Иванович yes ?-

15.  Дан список, содержащий списки одинаковой длины (матрица). Построить транспонированную матрицу.

Аргументы: матрица (список); транспонированная матрица (список).

?- pred([[1,2,3],[4,5,6],[7,8,9]],X). X = [[1,4,7],[2,5,8],[3,6,9]] yes ?-

16.  Дан список, содержащий списки одинаковой длины (квадратная матрица). Посчитать детерминант.

Аргументы: матрица (список); детерминант.

?- pred([[1,2],[4,5]],X). X = -3 yes ?-

17.  Удалить из числового списка элементы, меньшие заданного числа.

Аргументы: исходный список; число; результирующий список.

?- pred([3,1,5,4,8],5,X). X = [5,8] yes ?-

18.  Удалить из списка элемент с заданным порядковым номером.

Аргументы: исходный список; порядковый номер; результирующий список.

?- pred([a,b,c,d,e],4,X). X = [a,b,c,e] yes ?-

19.  Поместить в результирующий список каждый элемент исходного списка с заданной вероятностью.

Аргументы: исходный список; вероятность вхождения; результирующий список.

?- pred([a,b,c,d,e],0.5,X).

X = [a,c,d]

yes

?- pred([a,b,c,d,e],0.5,X).

X = [b,c,d,e]

yes

?-

20.  Выполнить циклический сдвиг списка влево на заданное количество элементов.

Аргументы: исходный список; количество элементов; результирующий список.

?- pred([a,b,c,d,e],3,X).

X = [d,e,a,b,c]

yes

?-

21.  Выполнить циклический сдвиг списка вправо на заданное количество элементов.

Аргументы: исходный список; количество элементов; результирующий список.

?- pred([a,b,c,d,e],3,X). X = [c,d,e,a,b] -> ; yes ?-

22.  Получить целое число из строки, использующей числительные русского языка.

Аргументы: строка; целое число.

?- pred(’Пять тысяч восемьсот одиннадцать’,X). X = 5811 yes ?-

23.  Даны два списка. Каждый из списков не имеет дубликатов и, следовательно, их можно рассматривать как множества. Построить симметрическую разность (объединение минус пересечение) списков.

Аргументы: первый список; второй список; результирующий список.

?- pred([a,b,c,d,e],[e,w,q,c],X). X = [a,b,d,w,q] -> ; yes ?-

24.  Дан список, содержащий числовые списки одинаковой длины (матрица), и числовой список (вектор). Перемножить матрицу и вектор.

Аргументы: матрица (список); вектор (список); результат перемножения (список).

?- pred([[1,2],[4,5]],[2,3],X). X = [8,23] yes ?-

25.  Дан числовой список [a,b,c,d,] и число x. Посчитать значение полинома R = a+bx+cx2+dx3+… .

Аргументы: список; число; результат вычислений.

?- pred([1,2,4,1],3,X). X = 70 yes ?-

26.  Преобразовать целое число в строку с использованием числительных русского языка.

Аргументы: целое число; строка.

?- pred(5811,X). X = Пять тысяч восемьсот одиннадцать yes ?-

27.  Выполнить циклический сдвиг списка влево.

Аргументы: исходный список; результирующий список.

?- pred([a,b,c,d,e],X). X = [b,c,d,e,a] -> ; X = [c,d,e,a,b] -> ; X = [d,e,a,b,c] -> ; X = [e,a,b,c,d] -> ; X = [a,b,c,d,e] -> ; X = [b,c,d,e,a] -> ; … … ?-

28.  Выполнить циклический сдвиг списка вправо.

Аргументы: исходный список; результирующий список.

?- pred([a,b,c,d,e],X). X = [e,a,b,c,d] -> ; X = [d,e,a,b,c] -> ; X = [c,d,e,a,b] -> ; X = [b,c,d,e,a] -> ; X = [a,b,c,d,e] -> ; X = [e,a,b,c,d] -> ; … … ?-

29.  Найти порядковый номер максимального элемента числового списка.

Аргументы: исходный список; порядковый номер.

?- pred([3,5,8,1,4],X). X = 3 yes ?-

30.  Найти все возможные пары элементов списка.

Аргументы: исходный список; пара элементов (список).

?- pred([a,b,c,d,e],X). X = [a,b] -> ; X = [a,c] -> ; X = [a,d] -> ; X = [a,e] -> ; X = [b,c] -> ; X = [b,d] -> ; X = [b,e] -> ; X = [c,d] -> ; X = [c,e] -> ; X = [d,e] -> ; no ?-

31.  Найти все возможные перестановки элементов списка.

Аргументы: исходный список; результирующий список.