次のような暗号文を解く必要があります。
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 を解決して、ソリューションの一部を機能させるだけだと思っていましたが、うまくいきません。
1つの入力例でも、どうすればいいのかわかりません。0.GHGHGH の表現方法がわかりません....
編集: mn/2 は、数字のリストを数値に変換するためのものです ([1,2,3] -> 123)。