2015-05-22 9 views
1

pleaase即时通讯pleasee帮助 google如何精确匹配列表在序言

**fact:** 
protein(annexin,[a,s,d,f]). 

**rules:** 
(i dont know) 

**query:** 
protein(N,[q,w,e,a,s,d,f]) 
**result:** 
N= annexin 

**query:** 
protein(N,[q,w,e,a,s,d,f,w,o,e]) 
**result:** 
N= annexin 
+0

你能多几个明确的有关问题?看来你想在事实“蛋白质”中搜索包含(子列表)给定序列的事实。是吗? –

回答

2

a是腺嘌呤,但什么是那些不规范的基地?无论如何,我们使用

protein(annexin) --> 
    [a,s,d,f]. 

withprotein(Protein) --> 
    ..., 
    protein(Protein), 
    ... . 

... --> [] | [_], ... . 

用法:

?- phrase(withprotein(Protein), [q,w,e,a,s,d,f,w,o,e]). 
Protein = annexin 
+0

非常感谢你,但是三重点意味着什么? –

+1

它是非终端'... // 0'的名称,意思是:“任何可能的空序列” – false

+0

@NorwahidaShamsuddin:你为什么试图删除'... // 0'的定义? – false

0

字符串包含蛋白质,当且仅当它的定义是字符串的一个子表:

protein(annexin, [a,s,d,f]). 

has_protein(Protein, List) :- 
    protein(Protein, ProteinDefinition), 
    sublist(ProteinDefinition, List).