Tôi đã xem qua đánh giá này số tự nhiên của số logic trong một hướng dẫn và nó được đem lại cho tôi một số nhức đầu:Chuyển đổi số Peano s (N) để nguyên trong Prolog
natural_number(0).
natural_number(s(N)) :- natural_number(N).
Nguyên tắc khoảng khẳng định rằng: nếu N
là 0
là tự nhiên, nếu không chúng tôi cố gắng gửi nội dung của s/1
trở lại đệ quy đến quy tắc cho đến khi nội dung là 0
, thì đó là số tự nhiên nếu không thì không.
Vì vậy, tôi đã kiểm tra việc thực hiện logic ở trên, tự nghĩ, cũng làm việc này nếu tôi muốn đại diện cho s(0)
như 1
và s(s(0))
như 2
, nhưng tôi muốn thích để có thể chuyển đổi s(0)
-1
để thay thế.
Tôi đã nghĩ đến sự cai trị cơ sở:
sToInt(0,0). %sToInt(X,Y) Where X=s(N) and Y=integer of X
Vì vậy, đây là câu hỏi của tôi: Làm thế nào tôi có thể chuyển đổi s (0) 1 và s (s (0)) đến 2?
Đã được trả lời
Edit: tôi sửa đổi nguyên tắc cơ bản trong việc thực hiện đó là câu trả lời tôi chấp nhận chỉ cho tôi hướng tới:
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).
Vì vậy, tôi bây giờ có thể sử dụng nó như tôi muốn để, cảm ơn tất cả mọi người!
(a) là bài tập về nhà này? (b) Đây là một vấn đề tiêu chuẩn - bạn sẽ có thể tìm thấy nó trong bất kỳ hướng dẫn hoặc sách giáo khoa về lập trình logic. – Marcin
a) Không, tôi chỉ đang cố gắng học Prolog b) Người ta sẽ nghĩ rằng, nhưng tôi đã dành nửa ngày tốt hơn cố gắng tìm câu trả lời cho câu hỏi này để không có ích – shaungus