ocaml查看int的特定数字

Cha*_*aro 2 int ocaml digit

嘿家伙我正在写一个ocaml程序,我无法弄清楚如何查看int的特定数字

所以说比如我们有

let a = 405;;
Run Code Online (Sandbox Code Playgroud)

我希望能够看到第一个数字,第4个数字,或第二个数字,0.我怎样才能实现这个目标?我想把它变成一个字符串并查看字符,但我觉得应该有另一种方法.

pad*_*pad 5

您可以编写一个递归函数来提取数字中的所有数字:

(* 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 []
Run Code Online (Sandbox Code Playgroud)

一旦你有一个数字列表

# digits 405;;
- : int list = [4; 0; 5]
Run Code Online (Sandbox Code Playgroud)

您可以使用某些List函数获取任何数字。


Jef*_*eld 5

(我会说这是一个普通的编程问题,而不是OCaml问题.)

要获得右边0的数字k,除以(/)k的第k次幂,然后取结果mod 10.

左侧的编号数字使这个问题更难.如果必须这样做,则需要知道该数字具有的位数,您可以从日志库10中获取该位数.

转换为字符串(或者,如填充建议,到数字列表)可能完全没问题.这基本上按顺序执行所有数字的所有除法和修改.如果你没有做很多这些转换,那就足够快了(恕我直言).