هوش مصنوعی با پایتون – بخش هفتم – برنامهنویسی منطقی

بررسیِ اول بودنِ اعداد
با کمک برنامهنویسی منطقی، ما میتوانیم اعداد اول را بین لیستی از اعداد پیدا کنیم و همچنین میتوانیم اعداد اول را تولید کنیم. کد پایتون دادهشده در زیر اعداد اول را از بین لیستی از اعداد پیدا خواهد کرد و همچنین 10 عدد اول تولید خواهد نمود.
ابتدا پکیجهایی را که در ادامه میآید نصب میکنیم:
from kanren import isvar, run, membero
from kanren.core import success, fail, goaleval, condeseq, eq, var
from sympy.ntheory.generate import prime, isprime
import itertools as it
حالا ما تابعی به نام prime_check تعریف خواهیم کرد که اول بودن اعداد را بر اساس دادهای که میگیرد بررسی خواهد کرد.
def prime_check(x):
if isvar(x):
return condeseq([(eq,x,p)] for p in map(prime, it.count(1)))
else:
return success if isprime(x) else fail
حالا باید متغیری را که در این مثال استفاده میشود، اعلان کنیم:
x = var()
print((set(run(0,x,(membero,x,(12,14,15,19,20,21,22,23,29,30,41,44,52,62,65,85)),
(prime_check,x)))))
print((run(10,x,prime_check(x))))
خروجی کد بالا در ادامه آمده است:
{19, 23, 29, 41}
(2, 3, 5, 7, 11, 13, 17, 19, 23, 29)
قسمتهای دیگر مقاله را از لینکهای زیر بخوانید:
هوش مصنوعی با پایتون – بخش هفتم – برنامهنویسی منطقی (قسمت اول)
هوش مصنوعی با پایتون – بخش هفتم – برنامهنویسی منطقی (قسمت دوم)
هوش مصنوعی با پایتون – بخش هفتم – برنامهنویسی منطقی (قسمت آخر)