Напишите новую версию предиката length(+L, -N), в котором при подсчете количества элементов списка не учитывается пустой список. К примеру, для списка [a,b,c,d,e] новая версия процедуры должна сообщить, что длина списка равна пяти, а для списка [a,[ ],c,d,[ ] ] эта процедура должна давать длину, равную трем.
Пусть имеется список структур "client": [client(a,29,3),client(b,29,6),client(c,40,2)]. Первым аргументом каждой структуры служит имя клиента, вторым - суточный тариф, а третьим - количество дней, на которое взята автомашина. Напишите правило, позволяющее вычислить итоговую сумму оплаты, объединяющую выплаты всех клиентов, данные о которых содержатся в списке.
Напишите вариант программы plus(?X, ?Y, ?Z), пригодный для сложения, вычитания и разбиения чисел на слагаемые. (Указание. Используйте для порождения чисел встроенный предикат between(+Low, +High, ?Value), который порождает все целые числа от нижней границы Low до верхней границы High.)
Напишите программу вычисления целочисленного квадратного корня из натурального числа N, определяемого как число I, такое, что I * I С N, но (I+1)*(I+1) > N . Используйте определение предиката between/3 для генерирования последовательности натуральных чисел с помощью механизма возвратов.