Commit 6b81e7f 1 parent 61051f0 commit 6b81e7f Copy full SHA for 6b81e7f
File tree 4 files changed +70
-1
lines changed
4 files changed +70
-1
lines changed Original file line number Diff line number Diff line change @@ -19,7 +19,7 @@ src/redBlack.cmi:
19
19
ocamlc -c src/redBlack.mli
20
20
21
21
a.out : ${SRC} src/redBlack.cmi
22
- ocamlc -o a.out -I ./ src ${SRC}
22
+ ocamlc -o $@ -I src ${SRC}
23
23
24
24
.PHONY : clean
25
25
clean :
Original file line number Diff line number Diff line change
1
+ open Ex1201
2
+
3
+ (* 目的: eki_t 型の値を受け取り, きれいに表示する *)
4
+ (* print_eki : eki_t -> unit *)
5
+ let print_eki eki =
6
+ (print_string eki.namae;
7
+ print_string " 駅の最短距離は" ;
8
+ print_float eki.saitan_kyori;
9
+ print_string " km です。" ;
10
+ print_string " 手前の駅は" ;
11
+ print_string (List. fold_left (fun acc s -> acc ^ " , " ^ s) " " eki.temae_list);
12
+ print_string " です。" ;
13
+ print_newline () )
14
+
15
+ (* テスト *)
16
+ let () =
17
+ let syuten_eki = (Ex2005. dijkstra " ikebukuro" " iidabashi" ) in
18
+ print_eki syuten_eki;
19
+ ()
Original file line number Diff line number Diff line change
1
+ (* 目的: 2以上 n 以下の自然数のリスト l を受け取り, そのうちの素数のリストを返す *)
2
+ (* sieve : int -> int list -> int list *)
3
+ let rec sieve l =
4
+ print_int (List. length l); print_newline () ;
5
+ match l with
6
+ | [] -> []
7
+ | hd :: tl ->
8
+ hd :: (sieve (List. filter (fun x -> x mod hd <> 0 ) tl))
9
+
10
+ (* 目的: 自然数 n を受け取り, n 以下の素数のリストを返す *)
11
+ (* prime : int -> int list *)
12
+ let prime n =
13
+ let rec enumurate i =
14
+ if i > n then []
15
+ else i :: enumurate (i + 1 )
16
+ in
17
+ sieve (enumurate 2 )
18
+
19
+ (* テスト *)
20
+ let () =
21
+ print_endline " [debug] prime 2" ;
22
+ assert (prime 2 = [2 ]);
23
+ print_endline " [debug] prime 10" ;
24
+ assert (prime 10 = [2 ; 3 ; 5 ; 7 ]);
25
+ ()
Original file line number Diff line number Diff line change
1
+ open Ex1201 (* eki_t *)
2
+ open Ex2101 (* print_eki *)
3
+
4
+ (* List dijkstra *)
5
+ (* open Ex1605 *)
6
+
7
+ (* Binary Tree dijkstra *)
8
+ (* open Ex1715 *)
9
+
10
+ (* RedBlack dijkstra *)
11
+ open Ex2005
12
+
13
+ let main shiten_romaji syuten_romaji =
14
+ let syuten_eki = dijkstra shiten_romaji syuten_romaji in
15
+ print_eki syuten_eki;
16
+ ()
17
+
18
+ let () =
19
+ if Array. length Sys. argv < 3 then (
20
+ print_endline (Sys. argv.(0 ) ^ " <shiten_romaji> <syuten_romaji>" );
21
+ exit 1
22
+ ) else (
23
+ main Sys. argv.(1 ) Sys. argv.(2 );
24
+ exit 0
25
+ )
You can’t perform that action at this time.
0 commit comments