落書きノート

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

OCaml

OCamlで不定期練習

open Printf;; let a = Array.make 5 0;; for i = 0 to 4 do a.(i) <- 5 - i; done;; let rec int_array i xs = match xs with [] -> () | x :: xs -> printf "a[%d] = %d\n" i x; int_array (i + 1) xs;; int_array 0 (Array.to_list a);; open Printf;; pr…

OCamlで不定期練習

Random.self_init ();; print_string "要素数 : ";; let n = read_int ();; let array = Array.make n 0;; for i = 0 to n - 1 do array.(i) <- Random.int 10 + 1; done;; let rec show index = if index = 0 then () else ( for i = 0 to n - 1 do if arra…

OCamlで不定期練習

配列、リストなどなどで、やっと本格的になってきたような…。こんな感じです。 open Printf;; let first = [0.0; 0.0; 0.0; 0.0; 1.0];; let rec show xs i = match xs with [] -> () | x :: xs -> printf "first[%d] = %f\n" i x; show xs (i + 1);; show f…

OCamlで不定期練習

open Printf;; print_string "整数を加算します。\n";; let sum = ref 0 let gn = ref 0 let rec group i = if i = 5 then () else ( print_string "整数 : "; gn := read_int(); if !gn = 99999 || !gn = 88888 then () else ( sum := !sum + !gn; group (i…

OCamlで問題を解く

OCamlも並行してやってます。せめて配列、リストを使うところまでは進めておきたいなと。 open Printf;; print_string "整数を加算します。\n";; print_string "何個加算しますか : ";; let n = read_int() let total = ref 0 let cnt = ref 0 let rec main …

OCamlで問題を解く

追記 間違っていたので修正。文章も追加しました。 自由自在に組めるようになってきました。それにしても面白い言語ですね。 if文が連続して記述出来ないなぁと思ったのですが、セミコロン1つ書けば、連続して書けますね。あまりそういう必要もないような気…

OCamlで問題を解く(訂正分)

一つ前の記事に載せたプログラム、間違ってましたので直しました。 print_string "2以上の整数値 : ";; let n = read_int() let cnt = ref 0;; let answer () = if !cnt = 1 then print_string "それは素数です。\n" else print_string "それは素数ではあり…

OCamlで問題を解く

forループ、使いづらいなぁと思ってましたけど、慣れたら使えるようになってきました。添字が0からだと使いづらいですが、1からにすれば無問題ですね。forループでリストを参照するときとかは少し工夫しないといけないかもしれませんけど。foreachのような命…

OCamlで問題を解く

再帰処理にこだわってやってましたけど、一部の問題ではどうやってもできないと思うので、邪道と呼ばれているforループを使いました。 print_string "正方形を表示します。\n";; print_string "段数は : ";; let n = read_int();; let rec loop nb = if nb <…

OCamlで問題を解く

switch文の代わりに、パターンマッチング使ってみました。使い方がわかると気持ちがいい。 open Printf;; print_string "季節を求めます。\n";; let rec main m = match m with 3 | 4 | 5 -> "春です。\n" | 6 | 7 | 8 -> "夏です。\n" | 9 | 10 | 11 -> "秋…

OCamlで問題を解く

open Printf;; print_string "整数値 : ";; let num = read_int();; let rec search n = if num = n then printf "%d\n" n else if num mod n = 0 then begin printf "%d " n; search (n + 1) end else search (n + 1);; search 1;; open Printf;; print_str…

OCamlで問題を解く

この言語で普通のプログラムを作ろうと思うと、慣れてないせいだと思うんですけど、簡単な問題でも時間かかりますね。まあ、こんな感じです。だいぶ間違いや無駄がなくなって来ました。 open Printf;; print_string "1からnまでの和を求めます。\n";; let an…

OCamlで問題を解く

大分慣れてきました。もう少し数をこなしてみて大丈夫そうだったら、HaskellかRustでも…。Scalaでも良いですね! 今までprint_string関数とかで異なる型の変数を繋げて無理やり使ってました。Printf.printf関数をもう少し意識して使うようにしなくては…。こ…

プログラミングで問題を解く

少しずつ解いてます。もう少しこなす言語を絞ったほうが良さそうですね…。苦笑。それはそうと、OCamlでクラスの問題に差し掛かったらどうすれば良いのでしょうか。また考えないと。 import java.util.Scanner; class q6_20 { public static void main(String…

プログラミングで問題を解く

Rubyで解いた問題、苦戦しました…。添字を利用しないと難しいです。なので、while文で無理やりやってます。以前はもっとすんなりと解けてたのになぁ…。あれ、おかしいな。 import java.util.Scanner; class q6_19 { public static void main(String[] args) …

OCamlで問題を解く

OCaml、ループ処理になってから難しいですね。なかなか詰まってしまいます。今のところ何とか出来てます。もう少し数を解かないと…。 open Printf;; Random.self_init();; print_string "数あてゲームを開始!!\n";; print_string "10~99の数を当ててください…