[英]Prolog 'Out of Local Stack'
我正在開發一個程序,以解決臭名昭著的難題“農夫,狐狸,鵝和谷物”的更復雜版本,該難題由八個組成部分而不是四個組成部分。 我已經確定了解決方案; 此外,我只寫出了完成問題所需的狀態,如下所示:
move([w,w,w,w,w,w,w,w],[e,w,w,e,w,w,w,w]).
move([e,w,w,e,w,w,w,w],[w,w,w,e,w,w,w,w]).
等等
我現在的目標是使該程序遵循那些狀態,從一個狀態鏈接到另一個狀態,直到達到[e,e,e,e,e,e,e,e]
的最終目標。 為此,我將謂詞定義為:
solution([e,e,e,e,e,e,e,e],[]).
solution(Start,End) :-
move(Start,NextConfig),
solution(NextConfig,End).
我的查詢是solution([w,w,w,w,w,w,w,w],[e,e,e,e,e,e,e,e]).
但是,這顯然導致無限遞歸。 我想念什么?
為避免循環,請嘗試使用closure0/3
solution(S) :-
closure0(move, S,[e,e,e,e,e,e,e,e]).
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.