Как написать mod/3 Функция для преемник арифметики (числа Пеано) в прологе?Преемник Арифметический Пролог Функция мод
ответ
Подумайте об этом так:
Если вы хотите, чтобы найти моды из 10 и 4, разделить 10 на 4 и вернуть напоминание. Но так как деление представляет собой многократное вычитание, мы будем использовать здесь множественную логику вычитания.
Для примера: 10 mod 4
такой же, как 10-4 mod 4
который является 6 mod 4
что опять же, как 6-4 mod 4
= 2 mod 4
. Поскольку первый элемент (2) меньше второго (4), мы завершаем программу здесь и возвращаем первый элемент (2).
mod(_, 0, 0).
Говорит, что ничего по модулю 0 0.
mod(0, _ , 0).
Говорит, что 0 мод ничего 0.
mod(X, s(0), 0).
Говорит, что ничего по модулю 1 0.
Это сложная часть:
mod(A, B, N) :- minus(A, B, R), (R @< B -> N = R ; mod(R, B, N)).
Используется многократная минусовая логика. Если сначала удаляет второй из первого, а затем проверяет, если вначале меньше второго. Если да, рекурсивно вызовите функцию mod. Если не вернуть первый элемент.
s(0).
s(X):- X.
plus(0, Y, Y).
plus(s(X), Y, s(Z)):- plus(X , Y , Z).
minus(A, B, C) :- plus(C, B, A).
mod(_, 0, 0).
mod(0, _ , 0).
mod(X, s(0), 0).
mod(A, B, N) :- minus(A, B, R), (R @< B -> N = R ; mod(R, B, N)).
Спасибо @Toby за запрос на редактирование.
- 1. Пролог арифметический синтаксис
- 2. Функция мод нечетная даже
- 3. Преемник и преемник в двоичном дереве
- 4. функция мод не работает почему?
- 5. Пролог: отсутствует функция?
- 6. функция Пролог не работает
- 7. Пролог функция is?
- 8. Пролог - FindAll функция
- 9. Преемник InstallJammer?
- 10. преемник msxsl.exe?
- 11. Итератор-преемник
- 12. Преемник dbms_random.random
- 13. Что Преемник Значение Pattern
- 14. MySQL мод функция возвращает отрицательное число
- 15. BST, преемник, код выпуска
- 16. Преемник регулярного выражения?
- 17. Преемник Codehaus Modello?
- 18. Computing Предшественник и Преемник
- 19. Что такое преемник мрунит?
- 20. Apache Chainsaw преемник?
- 21. Что это псевдокод значит - Binary Search Tree Преемник Функция
- 22. арифметический компьютер
- 23. Итератор арифметический тип
- 24. Inorder преемник Threaded Binary Tree
- 25. пролог. рекурсивная функция, возвращающая несколько значений
- 26. Пролог Что такое Аккумуляторы и функция \ + member
- 27. Удалить Преемник для каждых ВВ
- 28. NSURLConnection Преемник, без HTTP Response
- 29. PreOrder Преемник узла в BST
- 30. BST: inOrder преемник и предшественник
Хотя этот код может помочь решить проблему, он не объясняет _why_ и/или _how_, он отвечает на вопрос. Предоставление этого дополнительного контекста значительно улучшит его долгосрочную образовательную ценность. Пожалуйста, отредактируйте свой ответ, чтобы добавить объяснение, включая ограничения и допущения. –