natknąłem tej naturalnej oceny liczby numerów logicznych w samouczku i to już daje mi ból głowy:Konwersja number Peano S (N) do liczby całkowitej w Prologu
natural_number(0).
natural_number(s(N)) :- natural_number(N).
Reguła grubsza stwierdza, że: jeśli N
to jest 0
jest to naturalne, jeśli nie, staramy się wysłać zawartość s/1
z powrotem rekursywnie do reguły, dopóki treść nie jest 0
, to jest to liczba naturalna, jeśli nie, to nie jest.
Więc przetestowany powyższą realizację logiki, pomyślałem, dobrze to działa, jeśli chcę reprezentować s(0)
jak 1
i s(s(0))
jako 2
, ale ja bym chciał być w stanie przerobić s(0)
do 1
zamiast.
Ive myśl reguły bazowej:
sToInt(0,0). %sToInt(X,Y) Where X=s(N) and Y=integer of X
Więc tutaj jest moje pytanie: Jak mogę przekonwertować S (0) do 1 i S (S (0)) do 2?
zostało odebrane
Edycja: I zmodyfikowane reguły bazowej w realizacji których odpowiedź przyjąłem wskazał mi w kierunku:
decode(0,0). %was orignally decode(z,0).
decode(s(N),D):- decode(N,E), D is E +1.
encode(0,0). %was orignally encode(0,z).
encode(D,s(N)):- D > 0, E is D-1, encode(E,N).
Więc mogę teraz używać go jak chciałem dzięki, dziękuję wszystkim!
(A) jest to praca domowa? (b) Jest to standardowy problem - powinieneś być w stanie znaleźć go w dowolnym samouczku lub podręczniku programowania logicznego. – Marcin
a) Nie, ja tylko próbuję się nauczyć Prologu b) Można by pomyśleć, ale spędziłem lepszą połowę dnia próbując znaleźć odpowiedź na to pytanie bezskutecznie. – shaungus