سؤال

أحاول مطابقة مجموعة فرعية من الحقائق التي أخلقها، وكان اختباري رائعا!

س ([1،2،3،4]، "بلوم"). س ([1،2،4]، "BleaH2"). س ([1،2]، "BleaH8"). س ([1،3،4]، "Bleah3"). س ([5،6،7،8]، "BleaH5"). س ([6،7،8،9]، "BleaH6"). Fuzzy (x، r): - x (z، r)، مجموعة فرعية (x، z). المتبقية (x، y، d، m): - x (z، d)، حدد (x، z، n)، حدد (y، n، m). زوج (x، y، r): - x ([x، y]، r)؛ x ([y، x]، ص). الإخراج:؟ - س ([1،2 | الراحة]، د). الراحة = [3، 4]، د = بلوم؛ الراحة = [4]، D = Bleah2؛ الراحة = []، D = BleaH8؛ خطأ شنيع. ؟ - زوج (2،1، د). د = Bleah8؛ خطأ شنيع. ؟ - غامض ([2،1]، ص). ص = بلوم؛ r = bleah2؛ r = bleah8؛ خطأ شنيع. ؟ - المتبقية (2،1، د، م). د = بلوم، م = [3، 4]؛ د = Bleah2، م = [4]؛ د = Bleah8، م = []؛ خطأ شنيع.

ثم أضفت حقيقة أن تمثل حالتي المحتملة التالية، والآن مكسورة تماما. أنا جديد في prolog، لست متأكدا لماذا هذا هو أو كيفية إصلاحه.

س ([6، x، 8،9]، "Woot"): - (x + 0)> 7. الإخراج:؟ - س ([1،2 | الراحة]، د). الراحة = [3، 4]، د = بلوم؛ الراحة = [4]، D = Bleah2؛ الراحة = []، D = BleaH8؛ خطأ شنيع. ؟ - زوج (2،1، د). د = Bleah8؛ خطأ شنيع. ؟ - غامض ([2،1]، ص). ص = بلوم؛ r = bleah2؛ r = bleah8؛ خطأ:> / 2: الحجج غير مفهوم بشكل كاف ^ استثناء: (9) _g260 + 0> 7؟ إحباط٪ إحباط؟ - المتبقية (2،1، D، م). د = بلوم، م = [3، 4]؛ د = Bleah2، م = [4]؛ د = Bleah8، م = []؛ خطأ:> / 2: الحجج ليست مثيل لها بما فيه الكفاية ^ استثناء: (10) _g270 + 0> 7؟ إحباط إعدام٪ إحباط؟ - س ([_، 15، _، _]، د). د = woot.

اقتراحات مرحبا.

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

المحلول 3

حسنا، يتغير تغيير نوع بيانات محدود!

٪ المقارنات الأساسية نفسها (x، y): - x == y. Greaterthan (x، y): - أقل (Y، X). LessThan (x، y): - is_lessthan (x، y). LessThan (x، y): - is_lessthan (x، z)، lessthan (z، y). تعدد قائمة is_lessthan ('a'، 'b'). is_lessthan ('b'، 'c'). is_lessthan ('c'، 'd'). is_lessthan ('D'، 'E'). is_lessthan ('E'، 'F'). is_lessthan ('f'، 'g'). is_lessthan ('g'، 'h'). is_lessthan ('h'، 'أنا'). ٪ "ثابت" وقائع "ثابت" طول المتغير X (['a'، 'b'، 'c'، 'd']، 'abcd'). س ([""، "ب"، "د"]، "عبد"). س (['A'، 'B']، 'AB'). س (['A'، 'C'، 'D']، 'ACD'). س (['E'، 'f'، 'g'، 'h']، 'EFGH'). x (['f'، 'g'، 'h'، 'i']، 'fghi'). ٪ حقائق "ديناميكية" من الطول المتغير والقيود X (['f'، x، 'h'، 'i']، 'fxhi'): - Greaterthan ('g'، x). X (['f'، x، y]، 'fxy'): - Greaterthan ('g'، x)، lessthan (y، 'i'). ٪ حدد العناصر القائمةتين بشكل منفصل في x & y fuzzymatch (x، y، r): - x ([x، y]، r)؛ x ([y، x]، ص). ٪ حدد القائمة X Fuzzymatch (x، r): - x (z، r)، مجموعة فرعية (x، z). ٪ حدد عناصر قائمةتين بشكل منفصل، وإرجاع المصطلحات المتبقية التي لم تطابق الزوجية (x، y، d، m): - x (z، d)، حدد (x، z، n)، حدد (y، n، م). الإخراج:؟ - Fuzzymatch ('B'، 'A'، D). د = أب؛ خطأ شنيع. ؟ - fuzzymatch (['b'، 'a']، د). د = abcd؛ د = عبد د = أب؛ د = fxy؛ د = fxy؛ خطأ شنيع. ؟ - fuzzymatch ('b'، 'a'، r، د). R = ABCD، D = [C، D]؛ ص = عبد، د = [د]؛ r = ab، d = []؛ r = fxy، d = [f]؛ r = fxy، d = [f]؛ خطأ شنيع.

نصائح أخرى

يمكن أن يكون x فقط رقم طبيعي؟ إذا كانت الإجابة بنعم، فيمكنك تغيير حكمك

x([6,X,8,9], 'woot') :- (X+0) > 7.

ل

x([6, X, 8, 9], 'woot') :- between(8, inf, X).

هذا يعمل على الأقل في Swi-Prolog:

?- x(A, B).
A = [6, 8, 8, 9],
B = woot ;
A = [6, 9, 8, 9],
B = woot ;
A = [6, 10, 8, 9],
B = woot ;
...

في fuzzy/2 و remaining/4, ، انت تتصل x/2 مع غير مشغول Z. وبعد هذا يعني أن الجانب الأيسر من + (وبالتالي >) غير مرتبط.

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