Как узнать, четно ли число Пеано - PullRequest
0 голосов
/ 15 ноября 2018

Так что я с трудом пытаюсь с Пеано, и мне нужна помощь.Я хочу знать, четно ли число Пеано, и если да, то добавьте:

0 + s(s(0)) = s(s(0))
0 + s(0) = No because one of the numbers odd

Код, который у меня есть:

s(0).
s(X):- 
    X.

add(0,Y,Y).
add(s(X), Y, s(Z)):- 
    add(X,Y,Z).

1 Ответ

0 голосов
/ 15 ноября 2018

Не думайте о числах Пеано как о числах, а как о символах.

Поймите, что четные числа Паено равны 0, и повторение шаблона s(s(X)), где X может быть 0 или шаблона s(s(X))

Также я рассматриваю 0 и s(0) и т. Д. Как данные, а вы используете s в качестве имени предиката. Я не говорю, что это не сработает, но я не думаю об этом.

Имя предиката paeno_even, и для него требуется один аргумент.

Базовый корпус

paeno_even(0).

следующий для рекурсивного случая

paeno_even(P)

и обработка на P просто удаляет s(s(X)), поэтому сделайте это в голове как

paeno_even(s(s(X)))

и затем просто сделайте рекурсивный вызов

paeno_even(s(s(X))) :-
    paeno_even(X).

Несколько тестов для демонстрации:

?- paeno_even(0).
true.

?- paeno_even(s(0)).
false.

?- paeno_even(s(s(0))).
true.

?- paeno_even(s(s(s(0)))).
false.

Весь код в виде одного фрагмента:

paeno_even(0).
paeno_even(s(s(X))) :-
    paeno_even(X).
...