読者です 読者をやめる 読者になる 読者になる

個人的自由ノート

ふと自分が気になった事を書いてます

OCamlで問題を解く

大分慣れてきました。もう少し数をこなしてみて大丈夫そうだったら、HaskellかRustでも…。Scalaでも良いですね!

今までprint_string関数とかで異なる型の変数を繋げて無理やり使ってました。Printf.printf関数をもう少し意識して使うようにしなくては…。こちらの方が遥かに楽です。キャストしなくても良いので。フォーマットを指定するのが面倒ですけど、キャストするよりはマシです。

print_string "何個表示しますか : ";;
let max = read_int()
let rec draw n max = if n == max then
                       ()
                     else if n mod 2 == 0 then
                       begin
                         print_string "*";
                         draw (n + 1) max
                       end
                     else
                       begin
                         print_string "+";
                         draw (n + 1) max
                       end;;
draw 0 max;;
print_newline();;




open Printf;;
print_string "正の整数値の桁数を求めます。\n";;
print_string "正の整数値 : ";;
let n = read_int()
let rec main n digits = if n > 0 then
                          main (n / 10) (digits + 1)
                        else
                          printf "その数は%d桁です。\n" digits;;
main n 0;;





open Printf;;
print_string "正の整数値 : ";;
let n = read_int()
let rec mul n = if n == 0 then
                  1
                else
                  n * mul (n - 1);;

printf "1から%dまでの積は%dです。\n" n (mul n);;





print_string "何個*を表示しますか : ";;
let n = read_int() in for i = 1 to n do
                        print_string "*"
                      done;;
print_newline();;





print_string "カウントダウンします。\n";;
print_string "正の整数値 : ";;
let n = read_int() in for i = n downto 0 do
                        print_int i;
                        print_newline()
                      done;;





print_string "カウントアップします。\n";;
print_string "正の整数値 : ";;
let n = read_int() in for i = 0 to n do
                        print_int i;
                        print_newline()
                      done;;




open Printf;;
print_string "1からnまでの和を求めます。\n";;
let answer = ref 0;;
print_string "nの値 : ";;
let n = read_int();;
for i = 1 to n do
  answer := !answer + i
done;;
printf "1から%dまでの和は%dです。\n" n !answer;;

解きながら学ぶJava 入門編

解きながら学ぶJava 入門編