请您在以下方面帮助我:
我正在编写一个 Prolog 程序,它接受两个数字 ,然后将它们组合为一个数字,例如:
Num1: 5
Num2: 1
Run Code Online (Sandbox Code Playgroud)
那么新的数字就是51。
假设V1
是第一个数字 ,是V2
第二个数字 。我想将新数字与合并然后相乘,所以我的问题是我该怎么做?V1
V2
V3
calculateR(R, E, V1, V2, V3, V4):-
R is V1 V2 * V3,
E is R * V4.
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助。
这是另一个基于 @aBathographer 的想法的解决方案,它仅依赖于 ISO 谓词,而不依赖于 SWI 的特殊修改和扩展。它也没有像 Nor 这样最可能不需要的解决方案,calculateR('0x1',1,1,17).
它calculateR(1.0e+30,0,1,1.0e+300).
也不会创建不必要的临时原子。
所以我们的想法是将定义限制为十进制数:
digit_digit_number(D1, D2, N) :-
number_chars(D1, [Ch1]),
number_chars(D2, [Ch2]),
number_chars(N, [Ch1,Ch2]).
Run Code Online (Sandbox Code Playgroud)