2012-04-07 18 views
5

में 4x4 बोर्ड पर सभी संभावित कार्रवाइयों की सूची दें, मैं सभी संभावित बोर्डों को कैसे सूचीबद्ध कर सकता हूं (उदाहरण के लिए) एक खिलाड़ी 4x4 बोर्ड (8 अलग-अलग पियंस के साथ) में कुछ क्रिया करता है?प्रोलॉग

pions होना चाहिए, उदाहरण के लिए:

([1,2,3,4,5,6,7,8]) 

और हर बार जब आप एक खेलते हैं स्वचालित रूप से इसे पुनः उपयोग नहीं किया जा सकता है।

बोर्ड इस बोर्ड

([1,1,-,-],(1,2,-,-)...(1,3,-,-)(1,4,-,-) 
[2,1,-,-],(2,2,-,-)...(2,3,-,-)(2,4,-,-) 
[3,1,-,-],(3,2,-,-)...(3,3,-,-)(3,4,-,-) 
[4,1,-,-],(4,2,-,-)...(4,3,-,-)(4,4,-,-) 

और दौर प्रति एक खिलाड़ी बोर्ड पर एक pion डालता है जब तक यह भरा हुआ है की तरह होना चाहिए।

उत्तर

2

मुझे लगता है कि आपके पास board0_move_board/3 की तरह एक अनुमान है, जो बोर्ड बी, एक चाल एम के बीच एक टर्नरी रिलेशनशिप है और बी पर चलने के बाद परिणामी बोर्ड बी है। आगे, मुझे लगता है कि आपके पास भविष्यवाणी board_move/2 है उस बोर्ड पर संभव है कि एक बोर्ड से संबंधित है, और बैकट्रैकिंग पर सफलतापूर्वक सभी चालें संभव है। ,

findall(Board, (board_move(Board0, Move), board0_move_board(Board0, Move, Board)), Boards) 
+0

हाँ मैं पहले विधेय है कि आप के रूप में "board0_move_board/3" जो बोर्ड के साथ एक खिलाड़ी चाल जोड़ता है और कहा कि इस कदम से किया साथ बोर्ड परिणाम वर्णित है: इन विधेय के साथ, आप के साथ हर संभव बोर्डों प्राप्त कर सकते हैं लेकिन मेरे पास दूसरा predicate board_move/2..at कम से कम अब जिस तरीके से आप वर्णन करते हैं उसके साथ नहीं है। और मुझे अपनी भविष्यवाणी को इस तरह से भरना होगा "चाल ((रंग, _), बोर्ड, न्यूबार्डलिस्ट): – user1319472

+0

कोई भी fyrther मदद के लिए? – user1319472

संबंधित मुद्दे