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