{"id":1312,"date":"2023-03-25T10:12:45","date_gmt":"2023-03-25T02:12:45","guid":{"rendered":""},"modified":"2023-03-25T10:12:45","modified_gmt":"2023-03-25T02:12:45","slug":"\u4eba\u5de5\u667a\u80fd\u903b\u8f91\u7f16\u7a0b","status":"publish","type":"post","link":"https:\/\/bianchenghao6.com\/1312.html","title":{"rendered":"\u4eba\u5de5\u667a\u80fd\u903b\u8f91\u7f16\u7a0b"},"content":{"rendered":"
\n
\u4eba\u5de5\u667a\u80fd\u903b\u8f91\u7f16\u7a0b\u8be6\u7ec6\u64cd\u4f5c\u6559\u7a0b<\/span>\n <\/div>\n\u5982\u4f55\u7528\u903b\u8f91\u7f16\u7a0b\u89e3\u51b3\u95ee\u9898<\/h2>\n
# Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
A\u2236\u2212 B1,B2,...,Bn.
<\/span><\/code><\/pre>\n<\/p><\/div>\n\u5b89\u88c5\u5fc5\u9700\u7684\u5305<\/h2>\n
# Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
pip install kanren
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
pip install sympy
<\/span><\/code><\/pre>\n<\/p><\/div>\n\u903b\u8f91\u7f16\u7a0b\u7684\u4f8b\u5b50<\/h2>\n
# Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
from <\/span>kanren import <\/span>run, var, fact
from <\/span>kanren.assoccomm import <\/span>eq_assoccomm as <\/span>eq
from <\/span>kanren.assoccomm import <\/span>commutative, associative
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
add = 'add'<\/span>
mul = 'mul'<\/span>
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
fact(commutative, mul)
fact(commutative, add)
fact(associative, mul)
fact(associative, add)
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
a, b = var('a'<\/span>), var('b'<\/span>)
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
Original_pattern = (mul, (add, 5, a), b)
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
exp1 = (mul, 2, (add, 3, 1))
exp2 = (add,5,(mul,8,1))
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
print(run(0, (a,b), eq(original_pattern, exp1)))
print(run(0, (a,b), eq(original_pattern, exp2)))
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
((3,2))
()
<\/span><\/code><\/pre>\n<\/p><\/div>\n\u67e5\u627e\u7d20\u6570<\/h2>\n
# Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
from <\/span>kanren import <\/span>isvar, run, membero
from <\/span>kanren.core import <\/span>success, fail, goaleval, condeseq, eq, var
from <\/span>sympy.ntheory.generate import <\/span>prime, isprime
import <\/span>itertools as <\/span>it
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
def <\/span>prime_check(x):
if <\/span>isvar(x):
return <\/span>condeseq([(eq,x,p)] for <\/span><\/span>p in <\/span>map(prime, it.count<\/span>(1)))
else:<\/span>
return <\/span>success if <\/span>isprime(x) else fail
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
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))))
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
{19, 23, 29, 41}
(2, 3, 5, 7, 11, 13, 17, 19, 23, 29)
<\/span><\/code><\/pre>\n<\/p><\/div>\n\u89e3\u51b3\u96be\u9898<\/h2>\n
# Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
\u6709\u4e94\u95f4\u623f\u5b50\u3002
\u82f1\u56fd\u4eba\u4f4f\u5728\u7ea2\u623f\u5b50\u91cc\u3002
\u745e\u5178\u4eba\u6709\u4e00\u53ea\u72d7\u3002
\u4e39\u9ea6\u4eba\u559d\u8336\u3002
\u7eff\u623f\u5b50\u5728\u767d\u623f\u5b50\u7684\u5de6\u8fb9\u3002
\u4ed6\u4eec\u5728\u7eff\u623f\u5b50\u91cc\u559d\u5496\u5561\u3002
\u5438Pall Mall\u7684\u4eba\u6709\u9e1f\u3002
\u5438Dunhill\u5728\u7684\u4eba\u9ec4\u8272\u623f\u5b50\u91cc\u3002
\u5728\u4e2d\u95f4\u7684\u623f\u5b50\u91cc\uff0c\u4ed6\u4eec\u559d\u725b\u5976\u3002
\u632a\u5a01\u4eba\u4f4f\u5728\u7b2c\u4e00\u5bab\u3002
\u90a3\u4e2a\u62bdBlend\u7684\u7537\u4eba\u4f4f\u5728\u732b\u5c4b\u65c1\u8fb9\u7684\u623f\u5b50\u91cc\u3002
\u5728\u4ed6\u4eec\u6709\u4e00\u5339\u9a6c\u7684\u623f\u5b50\u65c1\u8fb9\u7684\u623f\u5b50\u91cc\uff0c\u4ed6\u4eec\u5438Dunhill\u70df\u3002
\u62bdBlue Master\u7684\u4eba\u559d\u5564\u9152\u3002
\u5fb7\u56fd\u4eba\u5438Prince\u70df\u3002
\u632a\u5a01\u4eba\u4f4f\u5728\u84dd\u623f\u5b50\u65c1\u8fb9\u3002
\u4ed6\u4eec\u5728\u623f\u5b50\u65c1\u8fb9\u7684\u623f\u5b50\u91cc\u559d\u6c34\uff0c\u5728\u90a3\u91cc\u5438Blend\u70df\u3002
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
from <\/span>kanren import <\/span>*
from <\/span>kanren.core import <\/span>lall
import <\/span>time
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
def <\/span>left(q, p, list):
return <\/span>membero((q,p), zip(list, list[1:]))
def <\/span>next(q, p, list):
return <\/span>conde([left(q, p, list)], [left(p, q, list)])
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
houses = var()
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
rules_zebraproblem = lall(
(eq, (var(), var(), var(), var(), var()), houses),
(membero,('Englishman'<\/span>, var(), var(), var(), 'red'<\/span>), houses),
(membero,('Swede'<\/span>, var(), var(), 'dog'<\/span>, var()), houses),
(membero,('Dane'<\/span>, var(), 'tea'<\/span>, var(), var()), houses),