मैं एक ज्ञान प्रणाली पर काम कर रहा हूं जो उपयोगकर्ता द्वारा किसी डिश में प्रवेश करने पर वाइन लौटा सकती है। मेरा विचार उपयोगकर्ता के इनपुट के आधार पर प्रत्येक वाइन वर्ग में अंक जोड़ना है और फिर फिटिंग वाइन कक्षाओं के शीर्ष 3 को प्रदर्शित करना है। तो उदाहरण के लिए यदि कोई मछली में प्रवेश करता है तो ज्ञानकोष में सभी रेड वाइन को शून्य अंक मिलते हैं और सफेद वाइन को एक अंक मिलता है। यदि उपयोगकर्ता एक प्रकार की सॉस या सब्जी ect में प्रवेश करता है। इससे मेल खाने वाली वाइन को एक अतिरिक्त अंक मिलता है। इसके बाद एक सूची दिखाई देगी जो दिखाती है कि कौन सी वाइन (मेरे नॉलेजबेस में) सबसे अच्छी है और जो अंकों के अनुसार सबसे खराब है। क्या कोई जानता है कि मैं इसे प्रोलॉग में कैसे कर सकता हूं।

2
Merel Hoekstra 18 जून 2020, 18:15

1 उत्तर

सबसे बढ़िया उत्तर

आप वाइन और उनकी विशेषताओं का एक डेटाबेस कुछ इस तरह सेट कर सकते हैं:

wine_color_body(chardonnay, white, light).
wine_color_body(gruener_veltliner, white, full).
wine_color_body(cabernet_franc, red, light).
wine_color_body(pinot_noir, red, medium).
wine_color_body(merlot, red, full).

(आप शराब के बारे में मुझसे अधिक जानेंगे, और शायद बहुत अधिक मानदंड जोड़ेंगे।)

फिर आप इस तरह की व्यक्तिगत विशेषताओं के आधार पर अपने स्कोरिंग नियम बना सकते हैं:

dish_wine_score(fish, Wine, 1) :-
    wine_color_body(Wine, white, _).
dish_wine_score(fish, Wine, 0) :-
    wine_color_body(Wine, red, _).

dish_wine_score(beef, Wine, 1) :-
    wine_color_body(Wine, red, _).
dish_wine_score(beef, Wine, 0) :-
    wine_color_body(Wine, white, _).

dish_wine_score(dessert, Wine, 2) :-
    wine_color_body(Wine, _, light).
dish_wine_score(dessert, Wine, 1) :-
    wine_color_body(Wine, _, medium).
dish_wine_score(dessert, Wine, 0) :-
    wine_color_body(Wine, _, full).

उदाहरण के लिए, यह देखने के लिए कि मछली के साथ क्या होता है:

?- dish_wine_score(fish, Wine, Score).
Wine = chardonnay,
Score = 1 ;
Wine = gruener_veltliner,
Score = 1 ;
Wine = cabernet_franc,
Score = 0 ;
Wine = pinot_noir,
Score = 0 ;
Wine = merlot,
Score = 0.

और फिर आप व्यंजनों या उनके गुणों की सूची के आधार पर आसानी से स्कोर कर सकते हैं:

dishes_wine_score([], _Wine, 0).
dishes_wine_score([Dish | Dishes], Wine, Score) :-
    dish_wine_score(Dish, Wine, DishScore),
    dishes_wine_score(Dishes, Wine, RestScore),
    Score is DishScore + RestScore.

बाद में गोमांस और मिठाई दोनों के साथ कौन सी शराब सबसे अच्छी होगी?

?- dishes_wine_score([beef, dessert], Wine, Score).
Wine = cabernet_franc,
Score = 3 ;
Wine = pinot_noir,
Score = 2 ;
Wine = merlot,
Score = 1 ;
Wine = chardonnay,
Score = 2 ;
Wine = gruener_veltliner,
Score = 0.

एक बार जब आप इस बिंदु पर पहुंच जाते हैं, तो आपको बस इन सभी उत्तरों को एकत्र करने, उन्हें क्रमबद्ध करने और उच्चतम स्कोर वाले उत्तरों को खोजने की आवश्यकता होती है। आप इसे bagof/3 या findall/3 के साथ sort/2 के साथ कर सकते हैं।

2
Isabelle Newbie 18 जून 2020, 19:09