回答編集履歴

3

コード追記

2021/08/31 06:26

投稿

ozwk
ozwk

スコア13551

test CHANGED
@@ -79,3 +79,35 @@
79
79
 
80
80
 
81
81
  `(eki1 = k && eki2 = s) || (eki1 = s && eki2 = k)`かどうかを判定しています。
82
+
83
+
84
+
85
+ ---
86
+
87
+
88
+
89
+ リスト`lst`に`x`があるかないかを返す関数`isExist`を似たようなアルゴリズムで書いてみました。
90
+
91
+
92
+
93
+
94
+
95
+ ```Ocaml
96
+
97
+ let rec isExist x lst = match lst with
98
+
99
+ [] -> false
100
+
101
+ | first :: rest ->
102
+
103
+ if x = first then true
104
+
105
+ else isExist x rest;
106
+
107
+
108
+
109
+ isExist 5 [1;2;3;4;5]; (* true *)
110
+
111
+ isExist 5 [1;2]; (* false *)
112
+
113
+ ```

2

コメントに対する追記

2021/08/31 06:26

投稿

ozwk
ozwk

スコア13551

test CHANGED
@@ -39,3 +39,43 @@
39
39
  そうだったらその駅間データの距離を返して、
40
40
 
41
41
  違ったらリストの残りに対して同じ処理をする、という作りのプログラムだからです。
42
+
43
+
44
+
45
+ ---
46
+
47
+
48
+
49
+ コメントに対する追記
50
+
51
+
52
+
53
+ > 先頭の要素と残りの要素というのは先頭がkiten="代々木上原"; shuten="代々木公園"; keiyu="千代田線"; kyori=1.0; jikan=2};で、残りの要素が{kiten="代々木公園"; shuten="明治神宮前"; keiyu="千代田線"; kyori=1.2; jikan=2};からそれ以降全部ということなんでしょうか?
54
+
55
+
56
+
57
+ `global_ekikan_list`に対して言えばそうです。
58
+
59
+
60
+
61
+ > 再帰関数は処理が出来上がっている前提で使う関数?だと思うのですが
62
+
63
+
64
+
65
+ 何を言っているのかわかりません。
66
+
67
+
68
+
69
+ > なぜ then r のところにはget_ekikan_kyori を使っていなくelseの方だけ使っているのでしょうか?
70
+
71
+
72
+
73
+ 使う必要がどこにあるのです?
74
+
75
+
76
+
77
+ > if (eki1 = k && eki2 = s) || (eki1 = s && eki2 = k) は何をしているのか教えていただけないでしょうか?
78
+
79
+
80
+
81
+ `(eki1 = k && eki2 = s) || (eki1 = s && eki2 = k)`かどうかを判定しています。

1

修正

2021/08/31 04:03

投稿

ozwk
ozwk

スコア13551

test CHANGED
@@ -34,4 +34,8 @@
34
34
 
35
35
 
36
36
 
37
+ リストの先頭が調べたい駅間データなのかを判定して、
38
+
37
- 分けずにどうしろと?
39
+ だったらその駅間データの距離を返て、
40
+
41
+ 違ったらリストの残りに対して同じ処理をする、という作りのプログラムだからです。