2017-02-09 5 views
1

내 문제를 일련의 산술 제약 조건으로 인코딩하는 것이 목표 인 ECLiPSe 스크립트가 있습니다. 제약 저장소에 나에게 제약 유사한 읽기 목록을 줄 것이다 술어가Eclipse CLP의 모든 제약 조건을 읽을 수있는 형태로 나열하십시오.

-(_2941{4 .. 7}) + _2900{1 .. 4} #=< 0 
_2941{4 .. 7}  - _2900{1 .. 4} #= 3 
-(_3393{7 .. 21}) + _3352{4 .. 18} #=< 0 
_3393{7 .. 21}  - _3352{4 .. 18} #= 3 
_3845{14 .. 17} - _3804{4 .. 7} #= 10 
_4297{18 .. 21} - _4256{14 .. 17} #= 4 
-(_4749{19 .. 22}) + _4708{18 .. 21} #=< 0 
_4749{19 .. 22} - _4708{18 .. 21} #= 1 
... 

있습니까 : REPL에서, 나는 결국 다음과 같이 보이는 지연 목표의 목록을?

delayed_goals은 위의 목록 에서처럼 깨끗한 결과물이 아닌 prop_ic_con(ic_con(... <some special characters> etc))과 같은 일부 라이브러리 관련 제약 조건을 제공합니다. 지연된 목표를 기본적으로 숨기는 대화식 루프가 아니라 쉘 스크립트에서 파일로 출력해야합니다.

답변

0

goal- portray -transformation에 의해 수행된다. 출력 임의로 번역이 호출 할 수 printfwrite_term 술어 판독 하나 내부의 목표로부터의 변환, 예

?- 3*X+6*Y #> 9, delayed_goals([G]), printf("%Gmw", [G]), nl. 
6 * Y{-1.0Inf .. 1.0Inf} + 3 * X{-1.0Inf .. 1.0Inf} #> 9 

?- 3*X+6*Y #> 9, delayed_goals([G]), write_term(G, [as(goal)]), nl. 
6 * Y{-1.0Inf .. 1.0Inf} + 3 * X{-1.0Inf .. 1.0Inf} #> 9 
,

당신은 명시 적으로 portray_term/3를 사용하여 번역을 호출 할 수 있습니다

?- 3*X+6*Y #> 9, delayed_goals([G]), portray_term(G, P, goal). 
G = prop_ic_con(ic_con(...)) 
P = (6 * Y{-1.0Inf .. 1.0Inf} + 3 * X{-1.0Inf .. 1.0Inf} #> 9) 
+0

감사 만 @jschimpf! 내가 필요한 것을 정확하게 할 수있는 많은 방법! – Alek81