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




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


                            % Перенос справа и перенос влево равны 0
                [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], _ ).
                            % Все цифры доступны

сумма1( [ ], [ ], [ ], 0, 0, Цифры, Цифры).

сумма1( [D1 | N1], [D2 | N2], [D | N], C1, С, Циф1, Циф) :-
        сумма1( Nl, N2, N, C1, C2, Циф1, Циф2),
        суммацифр( Dl, D2, C2, С, Циф2, Циф).

суммацифр( Dl, D2, C1, D, С, Циф1, Циф) :-
        удалить( D1, Циф1, Циф2),

                                    % Выбор доступной цифры для D1
        удалить( D2, Циф2, Циф3),
                                    % Выбор доступной цифры для D2
        удалить( D, Циф3, Циф),
                                    % Выбор доступной цифры для D
        S is D1 + D2 + C1,
        D is S mod 10,
        С is S div 10.

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




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