首页 > 解决方案 > 如何提高程序的性能?

问题描述

我编写了一个 Prolog 程序来解决密码问题,但运行时间并没有那么短。如何在不使用任何其他库的情况下提高运行时间?谢谢!

validDigit(X) :- member(X,[0,1,2,3,4,5,6,7,8,9]).
validStart(X) :- member(X,[1,2,3,4,5,6,7,8,9]).
assign([H|[]]) :- validDigit(H).
assign([H|Tail]) :- validDigit(H), assign(Tail), all_different([H|Tail]).

findTail(List,H,T) :- append(H,[T],List).

convert([T],T) :- validDigit(T).
convert(List,Num) :- findTail(List,H,T), convert(H,HDigit), Num is (HDigit*10+T).

verbalArithmetic(WordList,[H1|Tail1],[H2|Tail2],Word3) :-
    validStart(H1), validStart(H2), assign(WordList),
    convert([H1|Tail1],Num1),convert([H2|Tail2],Num2), convert(Word3,Num3),
    Sum is Num1+Num2, Num3 = Sum.

标签: performanceprolog

解决方案


推荐阅读