? -  сумма1( [5, O, N, A, L, 5],

                              [G, E, R, A, L, 5],

                              [R, O, B, E, R, T],

                              0, 0, [0, 1, 2, 3, 4, 6, 7, 8, 9], _ ).

Интересно, что в обоих случаях существует только одно решение, т.е. только один способ заменить буквы цифрами.

Упражнения

7. 1.    Напишите процедуру упростить для упрощения алгебраических сумм, в которых участвуют числа и символы (строчные буквы). Пусть эта процедура переупорядочивает слагаемые так, чтобы символы предшествовали числам. Вот примеры ее использования:

        ?-  упростить( 1 + 1 + а, Е).

        Е = а + 2

        ?-  упростить( l + a + 4 + 2 + b + с, E).

        Е = а + b + с + 7

        ?-  упростить( 3 + х + х, Е).

        Е = 2*х + 3

7. 2.  Определите процедуру

        добавить( Элемент, Список)

для добавления нового элемента в список. Предполагается, что все элементы, хранящиеся в списке, - атомы. Список состоит из всех хранящихся в нем элементов, а за ними следует хвост, который не конкретизирован и служит для принятия новых элементов. Пусть, например, в списке уже хранятся а, b и с, тогда

        Список = [а, b, с | Хвост]

где Хвост - переменная. Цель

        добавить( d, Список)

вызовет конкретизацию

        Xвoст = [d | НовыйХвост] и

        Список = [а, b, с, d | НовыйХвост]

Таким способом структура может наращиваться, включая в себя новые элементы. Определите также соответствующее отношение принадлежности.

Посмотреть ответ

Назад | Содержание | Вперёд

Назад | Содержание | Вперёд

7. 2.    Создание и декомпозиция термов:   =..,  functor,  arg,  name

Имеются три встроенные предиката для декомпозиции и синтеза термов: functor, arg и =.. . Рассмотрим сначала отношение =.. , которое записывается как инфиксный оператор. Цель

        Терм =.. L

истинна, если L - список, начинающийся с главного функтора терма Терм, вслед за которым идут его аргументы. Вот примеры:

        ?-  f( а, b) =.. L.

        L = [f, а, b]

        ?-  Т =.. [прямоугольник, 3, 5].

        Т = прямоугольник( 3, 5)

        ?-  Z =.. [р, X, f( X,Y) ].

        Z = p( X, f( X,Y) )

Вы читаете Prolog
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату