2016-08-01 2 views
1

목록의 모든 요소를 ​​두 번 내 조건부에서 잘못 처리하는 데 도움이 필요합니다. 나는 Prolog에 익숙하지 않고 매우 명백한 것을 놓치고있을 가능성이 높습니다. 기본적으로 내 술어는 목록 (예 : [1, 2, 3])을 가져와 요소가 두 배로 된 목록을 생성해야합니다 ([2, 3, 6]). 프롤로그의 목록에있는 모든 요소를 ​​두배로 늘림

double_elements([], []). 
double_elements([H|T], Doubled_list):- 
    X is H*2, 
    append([X], Doubled_list, Doubled_list), 
    double_elements(T, Doubled_list). 

그러나, 내 코드는 현재 단지에 상관없이 내가주는 어떤 입력을 "false"를 출력하지 : 여기

는 내가 지금까지 가지고있는 것입니다. 어떤 도움을 주시면 감사하겠습니다.

+0

이동'APPEND ([X], Doubled_list, Doubled_list)'에 대한 문서를 찾아보십시오. 당신은'[X]'를 무언가에 추가하고 같은 것을 통합하려고합니다. 그것은 항상 실패 할 것입니다. – Enigmativity

+0

Prolog에서 술어 절내에서 동일한 변수를 계속 갱신 할 수 없습니다. – lurker

답변

2

[X]를 (를) 뭔가 추가하고 동일한 것으로 통합하려고합니다. 그것은 항상 실패 할 것입니다.

대신을 시도해보십시오

double_elements([], []). 
double_elements([H|T], [X|Doubled_list]):- 
    X is H*2, 
    double_elements(T, Doubled_list). 
+1

@lurker - 아주 사실입니다. 말장난을 용서하십시오. – Enigmativity

관련 문제