Этот Prolog-скрипт определяет предикат less_than/3, который считает количество элементов в списке, меньших заданного числа.
less_than/3 принимает три аргумента:
List— список чисел.X— число, с которым сравниваются элементы списка.Count— переменная, в которую записывается количество элементов, меньшихX.
-
Базовый случай: Если список пуст, количество элементов, меньших любого числа, равно
0:less_than([], _, 0).
-
Рекурсия:
- Если головной элемент списка (
H) меньше числаX, добавляем1к результату для хвоста списка:less_than([H|T], X, Count) :- H < X, less_than(T, X, TailCount), Count is TailCount + 1.
- Если головной элемент списка (
H) больше или равенX, просто рекурсивно обрабатываем хвост:less_than([H|T], X, Count) :- H >= X, less_than(T, X, Count).
- Если головной элемент списка (
Запрос:
?- less_than([1, 4, 6, 8, 2], 5, Count).Результат:
Count = 3.
Запрос:
?- less_than([1, 2, 3], X, 2).Результат:
X = 3.
Запрос:
?- less_than([], 5, Count).Результат:
Count = 0.