2016-10-27 10 views
1

Prolog를 처음 사용하고 현재 간단한 제약 조건 프로그래밍 문제로 작업 중입니다. 그래서 나는 4 개의 실수 A, B, C, D와 같은 속성을 가지고 있습니다. A + B + C + d = A B C * D = 7.11 정수로 작업하기가 더 쉽기 때문에 다음을 시도했습니다. 구현 : 위의 저를 줄 것이다 부분적으로 해결 대답부터Prolog 제약 프로그래밍의 레이블 지정

:- use_module(library(clpfd)). 
    grocery(Vars):- 
     Vars=[A,B,C,D], 
     X #= 100 * A, 
     Y #= 100 * B, 
     Z #= 100 * C, 
     W #= 100 * D, 
     X+Y+Z+W #= 711, 
     X*Y*Z*W #= 71100000000. 

, 나는 마지막에 키워드 label(Vars) 퍼팅 시도했다. 그러나 이것은 grocery([V]) 나에게 false을 줄 것이다 동안 grocery(V) 내 실행이

ERROR: Arguments are not sufficiently instantiated. 

을 생산하게됩니다. 누구나 라벨을 쓰는 방법을 가르쳐 줄 수 있습니까? 감사합니다

편집 : 당신으로

인스턴스화 오류

: 나는 당신은 내가 따로을 논의하고 싶은 두 가지 문제에 직면하고있다

+1

실제로 입력 한 것을 보여주십시오. 오류가 아닌 오류를 시도했을 때 해결 방법이 없습니다. – lurker

+0

그것이 실제로 입력 한 것입니다. 오류가있는 것은 레이블 (Vars)을 넣고 식료품 점 (V)을 통해 실행하는 경우입니다. – chrishendra93

+1

* 어떻게'label (Vars)'를 입력할까요? '식료품 점 (Vars), 레이블 (Vars) .' (첫 번째 호출 후 쉼표에 유의하십시오)을 입력해야합니다. 그게 내가 당신의 코드를 가지고 달렸고 에러를 내지 않았지만 어떤 해결책도 얻지 못했습니다. 마침표가있는 식료품 점 (Vars) .'과'label (Vars). '을 입력하면'label (Vars)'는 이전 쿼리에서'Vars'에 대해 아무것도 모릅니다. 그들은 별개입니다. – lurker

답변