在序言中组合两个数字

Pro*_*r14 3 prolog

请您在以下方面帮助我:

我正在编写一个 Prolog 程序,它接受两个数字 然后将它们组合为一个数字,例如:

Num1: 5
Num2: 1
Run Code Online (Sandbox Code Playgroud)

那么新的数字就是51。

假设V1是第一个数字 V2第二数字 。我想将新数字与合并然后相乘,所以我的问题是我该怎么做?V1V2V3

calculateR(R, E, V1, V2, V3, V4):-
  R is V1 V2 * V3,
  E is R * V4.
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助。

fal*_*lse 5

这是另一个基于 @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)