落書きノート

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

OCamlで問題を解く

forループ、使いづらいなぁと思ってましたけど、慣れたら使えるようになってきました。添字が0からだと使いづらいですが、1からにすれば無問題ですね。forループでリストを参照するときとかは少し工夫しないといけないかもしれませんけど。foreachのような命令文があれば楽に走査できそうですけど、部分的には参照出来ないし・・・。これに関してはイテレータがあったかな。まだあまりリストは使ったことないのでわかりません。

print_string "ピラミッドを表示します。\n";;
print_string "段数は : ";;
let n = read_int();;
for i = 1 to n do
  for j = 1 to n - i do
    print_string " ";
  done;
  for k = 1 to (i - 1) * 2 + 1 do
    print_string "*";
  done;
  print_newline ();
done;;




print_string "数字ピラミッドを表示します。\n";;
print_string "段数は : ";;
let n = read_int();;
for i = 1 to n do
  for j = 1 to n - i do
    print_string " ";
  done;
  for k = 1 to (i - 1) * 2 + 1 do
    print_int (i mod 10);
  done;
  print_newline ();
done;;




print_string "2以上の整数値 : ";;
let n = read_int()
let cnt = ref 0;;

let answer () = if !cnt = 1 then
                  print_string "それは素数です。\n"
                else
                  print_string "それは素数ではありません。\n";;

let rec prime i = if n mod i = 0 then
                    (
                      cnt := !cnt + 1;
                      prime (i + 1)
                    )
                  else if i = n + 1 then
                    ()
                  else
                    prime (i + 1);;

prime 2;;
answer ();;