作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要一个子句来计算两个大字符串之间的字符巧合但省略 '_'
巧合。我有这个代码:
fit(GEN1, GEN2, N, N) :-
length(GEN1, L1),
length(GEN2, L2),
0 is L1*L2.
fit([P1|R1], [P2|R2], N, TOTAL) :-
member(P1, ['_',a,c,t,g]),
member(P2, ['_',a,c,t,g]),
append([P1],[P2],T),
( member(T,[[a,a],[c,c],[t,t],[g,g]])
-> X is N+1
; X is N
),
fit(R1,R2,X,TOTAL).
哪里
GEN1
和
GEN2
是包含所有字符大字符串的列表。
Out of Local Stack
异常(exception),收效甚微。
--stack-limit=32g
选项,因为我的代码没有得到很好的优化,
fit
子句是较大过程的一小部分,但它是我的代码的主要问题。
library(reif)
的假代码v2 工作得更快。
library(aggregate)
更多建议的解决方案。
最佳答案
似乎没有必要坚持你有来自"_actg"
的信件。每时每刻。一个广义的定义似乎就足够了。使用 library(reif)
:
fit([], _, N,N).
fit([_|_], [], N,N).
fit([P1|R1], [P2|R2], N,TOTAL) :-
if_( ( P1 = P2, dif(P1, '_') ), X is N+1, X = N ),
fit(R1, R2, X,TOTAL).
更新:请确保使用
library(reif)
的 v2 .原始版本没有编译dif/3。
fit([], _, N,N).
fit([P1|R1], L2, N,TOTAL) :-
ifit(L2, [P1|R1], N,TOTAL).
ifit([], _, N,N).
ifit([P2|R2], [P1|R1], N,TOTAL) :-
if_( ( P1 = P2, dif(P1, '_') ), X is N+1, X = N ),
fit(R1, R2, X,TOTAL).
关于performance - 如何在不触发 Out of Local Stack 异常的情况下计算两个大字符串的每个字符的巧合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67271196/
我是一名优秀的程序员,十分优秀!