嗨我寫的ocaml的方案和具體的數字我無法弄清楚如何看待的一個intocaml的看着一個int
具體數字這麼說,例如,我們有
let a = 405;;
我想看看第一個數字4或第二個數字0.我該如何做到這一點?我正在考慮把它變成一個字符串,看着字符,但我覺得應該有另一種方式去做。
嗨我寫的ocaml的方案和具體的數字我無法弄清楚如何看待的一個intocaml的看着一個int
具體數字這麼說,例如,我們有
let a = 405;;
我想看看第一個數字4或第二個數字0.我該如何做到這一點?我正在考慮把它變成一個字符串,看着字符,但我覺得應該有另一種方式去做。
你可以寫一個遞歸函數從數中提取所有的數字:
(* Assuming n is a non-negative number *)
let digits n =
let rec loop n acc =
if n = 0 then acc
else loop (n/10) (n mod 10::acc) in
match n with
| 0 -> [0]
| _ -> loop n []
一旦你有數字
# digits 405;;
- : int list = [4; 0; 5]
一個列表,你可以通過使用一些List功能得到任何數字。
(我會說這是一個普遍的規劃問題,而不是一個OCaml的問題。)
若要位ķ從0在正確的編號,您的10 k電力劃分(/)
,然後取結果mod 10.
從左邊數字編號使這個問題更難。如果必須這樣做,您需要知道數字的位數,您可以從日誌庫10中獲得該位數。
將字符串轉換爲字符串(或建議,以數字列表)。這基本上完成所有數字的所有分割和模式。如果你沒有做很多這些轉換,它會足夠快(恕我直言)。