سؤال

أحاول تجميع csp.pl من "كتاب الذكاء الحسابي" الذي يحل مشكلة رضا القيد. أريد استخدام هذا كقاعدة لحل مولد ألغاز الكلمات المتقاطعة.

ولكن عندما أحاول تشغيل الكود الذي يعطيه

 Existence error in user:remove/3
! procedure user:remove/3 does not exist
! goal:  user:remove([1,2,3,4],3,_127)
| ?- :-

أعتقد أن الإزالة ليست مسندًا مدمجًا

% select(E,L,L1) selects the first element of
% L that matches E, with L1 being the remaining
% elements.
select(D,Doms,ODoms) :-
   remove(D,Doms,ODoms), !.

% choose(E,L,L1) chooses an element of
% L that matches E, with L1 being the remaining
% elements.
choose(D,Doms,ODoms) :-
   remove(D,Doms,ODoms).

هذا هو جزء من الرمز ... هل يمكن لأي شخص مساعدتي في حل هذه المشكلة ... يجب تنفيذ الرمز لأنه في الكتاب المدرسي الذي تم مطالبه بتشغيل HV على بعض البرامج ..

الرجاء المساعدة

هل كانت مفيدة؟

المحلول

لا أعتقد remove هو جزء من أي مكتبة Prolog - بالتأكيد ليس SWI Prolog. مكتبة القائمة هي هنا.

هناك مسند delete الذي يفعل نفس الشيء الذي يستخدمه الرمز remove إلى عن على. لذلك فقط العثور على ونسخة ويجب أن تعمل.

نصائح أخرى

حمل ال lists مكتبة استخدام

:- use_module(library(lists)).

هذا يمنحك الوصول إلى lists:select/3 المسند ، وهو ما يفعله choose/3 ينبغي أن تفعل. lists:delete/3 هو تقريبا الخاص بك remove/3, ، باستثناء الحجج بترتيب مختلف.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top