4
A
回答
5
提供的内建有ISO标准:
?- number_codes(123456,X),format('~s',[X]).
123456
X = [49, 50, 51, 52, 53, 54].
?- number_chars(123456,X),format('~s',[X]).
123456
X = ['1', '2', '3', '4', '5', '6'].
我也有一些非常旧的代码我为我翻译的发展。 :=
必须重命名为is
才能使用标准Prolog运行。不过,你最好从上面内建服务...
itoa(N, S) :-
N < 0, !,
NN := 0 - N,
iptoa(NN, SR, _),
reverse(SR, SN),
append("-", SN, S).
itoa(N, S) :-
iptoa(N, SR, _),
reverse(SR, S).
iptoa(V, [C], 1) :-
V < 10, !,
C := V + 48.
iptoa(V, [C|S], Y) :-
M := V/10,
iptoa(M, S, X),
Y := X * 10,
C := V - M * 10 + 48.
编辑这里得到的数字所需要的额外的呼叫:
?- number_codes(123456,X), maplist(plus(48),Y,X).
X = [49, 50, 51, 52, 53, 54],
Y = [1, 2, 3, 4, 5, 6].
0
你可以先创建一个反向列表:
//Base step
splitRev(0,[]).
//Recursive step
splitRev(N,[A|As]) :- N1 is floor(N/10), A is N mod 10, splitRev(N1,As).
递归步骤像这样工作:
N1 is floor(N/10)
将N除以10并将其舍入。所以538变为53.8变为53. 它切断了最后一位数字。
A is N mod 10
需要N个由10 538 MOD 10所得的余数等于8 所以你只有最后一位。
现在为了分割列表,您只需要反转由splitRev/2创建的列表。 所以谓词分流/ 2被定义为:
split(N,L1) :- splitRev(N,L2), reverse(L1,L2).
注意,反向/ 2是一个内置的谓词。
我希望这有助于!
相关问题
- 1. 将列中的数字拆分为单独列中的数字
- 2. 用Haskell将数字拆分为数字
- 3. 将字符串列表拆分为字符串列表列表
- 4. 将整数串拆分为所有可能的数字列表
- 5. 在Python中将数字拆分为整数和小数部分
- 6. 如何在Javascript中将数字拆分为数字?
- 7. 在Prolog中将字符串拆分为单词
- 8. 在python中将字符串列表拆分为子列表
- 9. 如何在prolog中拆分列表?
- 10. 如何在Prolog中拆分字符串
- 11. 在Prolog中将字节列表转换为整数
- 12. 关于将数字拆分为数千
- 13. C#拆分字符串 - 将字符串拆分为数组
- 14. 在TCL中将大十六进制数字拆分成32位数字列表
- 15. 将字符串列表拆分为浮点数 - 内存错误
- 16. 如何将单词列表拆分为二维字母数组?
- 17. Dapper是否将XML数据拆分为字符串列表?
- 18. 如何将字符串拆分为列表,并考虑负数?
- 19. 在javascript中将字符串数组拆分为数组数组
- 20. 如何将数字拆分为C中的数字#
- 21. 将r中的数据帧拆分为字符和数字
- 22. 将列拆分为字符和数字R
- 23. 将数据列表拆分为
- 24. 将字符串拆分为数组C
- 25. 如何将数据拆分为字典?
- 26. 将CGPoint数字拆分为两个CGFloat
- 27. 将输入字拆分为数组
- 28. 将字符串拆分为数组Shellllscript
- 29. Android将字符串拆分为数组
- 30. 如何将数字拆分为组词?
这对我不起作用。我得到:'number_codes(123456,测试)。 Test = [49,50,51,52,53,54]。' – WolfBookyr 2012-07-28 15:16:40
正是我所展示的。我将添加所需的转换... – CapelliC 2012-07-28 16:55:41