嗨我写的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中获得该位数。
将字符串转换为字符串(或建议,以数字列表)。这基本上完成所有数字的所有分割和模式。如果你没有做很多这些转换,它会足够快(恕我直言)。