2011-10-01 7 views
-2

프롤로그에서 목록을 스캔하려고합니다. 특히, predicate scan_list (list)를 쓰고 싶습니다. 그리고 현재 요소가 양의 정수인지 검사하고이를 인쇄 할 것인지 확인하려고합니다.프롤로그 목록에서 스캔 목록

감사합니다.

+1

문제는 이해하기 어렵다. 목록에서 모든 양의 정수를 인쇄하는 술어'scan_list'를 작성하려고한다는 것을 의미합니까? 그렇다면 무엇을 시도 했습니까? 무엇이 효과가 없었습니까? – svick

답변

1

, 예를 들면 : 그러나, 여기 당신이 그런 식으로 작동

scan_list([]). 
scan_list([H|T]) :- H > 0,!, print(H),nl,scan_list(T). 
scan_list([_|T]) :- scan_list(T). 

을 원하는 될 수있는 버전입니다 당신은

?- include(<(0), [1, -2, 7, 9, 0, -1, 14, 0.8], L). 
L = [1, 7, 9, 14, 0.8]. 

(경고 :이 특정 코드는 양의 정수보다 더 많은 숫자를 받아들입니다.) 쓸 수

2

숙제 인 경우 모든 프로그래밍 언어를 배우려면 언어를 연습하고 과제를 생각하는 것이 좋습니다. include/3

SWI - 프롤로그에서
?- scan_list([1,-2,7,9,0,-1,14]). 
1 
7 
9 
14 
yes 
+0

scan_list는 술어가 수행하는 내용을 알려주지 않으므로이 술어에 적합한 이름이 아닙니다. – Kaarel

+0

OP는 양의 정수를 원했지만 "H> 0"은 0보다 큰 숫자를 허용합니다 ... – Kaarel

+0

글쎄, 나는 OP를 사용하는 이름을 사용했습니다. 정수에 관해서는 분명히 옳습니다. –