1
에서 목록을 반환하고, 나는 숫자가 Y.으로 나눌 수있는 X 이하의 X 및 Y> 0프롤로그 - 나는 GNU-프롤로그를 사용하고 재귀 술어
find_num(X, Y) :-
findall(N, between(1,X,N), List),
check_list(List, Y).
check_list([Head|Tail], Y) :-
(
divides(Head, Y) ->
format('~w ~s ~w ~n', [Head, "divisible by", Y]);
true
),
check_list(Tail, Y).
divides(X, Y) :-
X mod Y =:= 0.
가정 찾아 다음 코드가
코드는 숫자에 대한 텍스트를 출력하지만 결과를 X = [1,2,3]과 같은 목록으로 원합니다.
check_list([Head|Tail], Y) :-
(
divides(Head, Y) ->
findall(X, determine_item(Head, X), List);
true
),
check_list(Tail, Y).
또는
find_num(X, Y) :-
findall(N, between(1,X,N), List),
findall(N, check_list(List, Y, N), List2),
write(List2).
check_list([Head|Tail], Y, _) :-
(
divides(Head, Y) ->
Head;
true
),
check_list(Tail, Y).
divides(X, Y) :-
X mod Y =:= 0.
어떤 도움을 주시면 감사하겠습니다 :
나는, 예를 목록을 만들 수있는 다양한 방법을 시도했지만 성공하지 못했습니다.
'findall (I, (between 1, X, I), I mod Y = : = 0), List)' – false