所以我想让这段代码在线性时间内执行,而且我不确定是什么让它需要很长时间,所以所有的帮助都会得到满足。 很抱歉没有解释早些时候该程序的功能,medellangd几乎计算了字符串中发送的单词的平均长度。
medellangd([],0) :- !.
medellangd([Head1|[]], 0) :-
\+ check(Head1), !.
medellangd([Head1|[]], 1) :- !.
medellangd(Text, AvgLen) :-
medel(Text, X, Y),
AvgLen is X/Y.
medel([], 0, 0) :- !.
medel([Head1,Head2|Tail], Letters, Words) :-
check(Head1),
check(Head2), !,
medel([Head2|Tail], Letters1, Words),
Letters is Letters1 + 1.
medel([Head1|Tail], Letters, Words) :-
check(Head1),
medel(Tail, Letters1, Words1), !,
Letters is Letters1 + 1,
Words is Words1 + 1.
medel([_|T], Avg, Words) :-
medel(T, Avg, Words).
% We check that the input is a letter.
check(X) :-
(X >= 65, X =< 90);
(X >= 97, X =< 122).
答案 0 :(得分:0)
好吧,好像是我检查它的方法是问题,通过在头上使用char-type而不是我的检查它解决了我的问题,我让我在线性时间运行。