2

ocaml プログラムを書いていますが、int の特定の桁を調べる方法がわかりません。

たとえば、

let a = 405;;

1 桁目の 4 または 2 桁目の 0 を確認できるようにしたいのですが、どうすればこれを達成できますか? それを文字列にして文字を見ようと思ったのですが、別の方法があるといいなと思います。

4

3 に答える 3

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 []

数字のリストを取得したら

# digits 405;;
- : int list = [4; 0; 5]

いくつかのリスト関数を使用して、任意の数字を取得できます。

于 2013-01-14T23:30:33.793 に答える
4

(これは OCaml の問題ではなく、一般的なプログラミングの問題だと思います。)

右側の 0 から始まる数字の k を取得するには(/)、10 の k 乗で割り、その結果を mod 10 にします。

左から数字を数えると、この問題が難しくなります。そうする必要がある場合は、数値の桁数を知る必要があります。これは、10 を底とする対数から取得できます。

文字列 (または、パッドが示唆するように、数字のリスト) に変換しても問題ない場合があります。これは基本的に、すべての桁のすべての分割と変更を順番に実行します。これらの変換をあまり行っていない場合は、十分に高速です(IMHO)。

于 2013-01-14T23:30:42.130 に答える