Программирование на языке Пролог для искусственного интеллекта



         

Решение числового ребуса с использованием nonvar - часть 6


удалить( A, L, L) :-

        nonvar( A),  !.

                                % Переменная А уже конкретизирована

удалить( А, [А | L], L).

удалить( А, [В | L], [В | L1]) :-

        удалить( A, L, L1).

% Примеры ребусов

ребус1( [D, O, N, A, L, D],

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

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

ребус2( [0, S, E, N, D],

              [0, M, O, R, E],

              [M, O, N, E, Y].

line();

Рис. 7. 2.  Программа для арифметических ребусов.

Иногда этот ребус упрощают, сообщая часть решения в виде дополнительного ограничения, например D равно 5. В такой форме ребус можно передать пролог-системе при помощи сумма1:

        ? -  сумма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], _ ).

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




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