我必须解决一个看起来像这样的密码:
ABC / DEF = 0.GHGHGH...
其中变量的长度可能不同。重复也可能不同(如 0.XYZXYZ ...)。我写了一段我认为可以工作的代码,但它没有:
cryp(A,B,C) :-
mn(A, X),
mn(B, Y),
mn(C, Z),
Z = X/Y.
mn([], 0).
mn([H|T], W) :- D is 10, mn(T, W1), length(T, D), P is 10^D, W is W1 + H*P.
我将其执行为 crypt([A,B,C], [D,E,F], [G,H])。我认为它至少可以解决 ABC / DEF = GH 只是为了拥有工作解决方案的任何部分,但它不起作用。
即使对于一个示例输入,我也不知道该怎么做。我不知道如何表示 0.GHGHGH....
编辑: mn/2 用于将数字列表转换为数字([1,2,3] -> 123)。