2013-07-29 26 views
0

我有一个关于Mathematica的SimilarityRules定义(例如SequenceAlignment函数)的问题。因此,帮助中心明确代表mathematica,SequenceAlignment,定义SimilarityRules

“SimilarityRules - > {{a_,a_} - > 1,{a_,b_} - > -1},给任意一对相同元素+1,并且a任何不匹配,删除或插入的分数为-1。“

好吧,我明白了,但是如果我想给不同的分数,而不同的indeles?我想:

SimilarityRules - > {{A_,A_} - > 3,{{A_,B_} & & {{一_ = “”} & & {B_ =! “”}}} - > - ! 8}和{}的其他许多组合,& &职位,但它似乎没有帮助。任何建议,这只是我正在做的一个错字,或者像这样定义它是一个愚蠢的想法?

回答

0

编辑..对于回答太快抱歉:SequenceAlignment似乎不适用于这样的条件..我会sugest你问在mathematica.stackexchange.com。我还希望你提供一个输入和期望输出的例子来阐明你正在努力达到的目标。

你的问题确实是关于型式试验。这里有两种方法可以做到你想要的图案是什么..

{{"A", "A"}, {"A", "B"}, {"A", ""}} /. { 
     {a_, b_} /; a == b -> 1, 
     {a_, b_} /; (a != b && b != "" && a != "") -> -8, 
     {a_, b_} /; (a != b) -> -1 
    } 

{{"A", "A"}, {"A", "B"}, {"A", ""}} /. { 
    {_, _}?((#[[1]] == #[[2]]) &) -> 1, 
    {_, _ }?((#[[1]] != #[[2]] && #[[1]] != "" && #[[2]] != "") &) -> -8, 
    {_, _}?((#[[1]] != #[[2]]) &) -> -1 
     } 

这些都是做同样的事情,并产生{1,-8,-1}基本上使用稍微不同的语法,参见手册中的Pattern TestCondition

+0

嗨,感谢您的答案,我现在正在挖掘mathematica stackexchange。 所有我需要的是正常使用SequenceAlignment,但对于indeles不同的分数,不同的不匹配,输出将只是正常的对齐,但取决于分数,对于两个字符串对齐将是不同的:) – Strumillo

+0

看一看在 /; 这是我在mathematica栈中获得的完美答案: 例如:SimilarityRules - > {{a_,a_} - > 3,{a_/a!=“”,b_ /; b!=“”} - > -8} 完美无缺! – Strumillo

相关问题