teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

コード追記

2021/08/31 06:26

投稿

ozwk
ozwk

スコア13553

answer CHANGED
@@ -38,4 +38,20 @@
38
38
 
39
39
  > if (eki1 = k && eki2 = s) || (eki1 = s && eki2 = k) は何をしているのか教えていただけないでしょうか?
40
40
 
41
- `(eki1 = k && eki2 = s) || (eki1 = s && eki2 = k)`かどうかを判定しています。
41
+ `(eki1 = k && eki2 = s) || (eki1 = s && eki2 = k)`かどうかを判定しています。
42
+
43
+ ---
44
+
45
+ リスト`lst`に`x`があるかないかを返す関数`isExist`を似たようなアルゴリズムで書いてみました。
46
+
47
+
48
+ ```Ocaml
49
+ let rec isExist x lst = match lst with
50
+ [] -> false
51
+ | first :: rest ->
52
+ if x = first then true
53
+ else isExist x rest;
54
+
55
+ isExist 5 [1;2;3;4;5]; (* true *)
56
+ isExist 5 [1;2]; (* false *)
57
+ ```

2

コメントに対する追記

2021/08/31 06:26

投稿

ozwk
ozwk

スコア13553

answer CHANGED
@@ -18,4 +18,24 @@
18
18
 
19
19
  リストの先頭が調べたい駅間データなのかを判定して、
20
20
  そうだったらその駅間データの距離を返して、
21
- 違ったらリストの残りに対して同じ処理をする、という作りのプログラムだからです。
21
+ 違ったらリストの残りに対して同じ処理をする、という作りのプログラムだからです。
22
+
23
+ ---
24
+
25
+ コメントに対する追記
26
+
27
+ > 先頭の要素と残りの要素というのは先頭がkiten="代々木上原"; shuten="代々木公園"; keiyu="千代田線"; kyori=1.0; jikan=2};で、残りの要素が{kiten="代々木公園"; shuten="明治神宮前"; keiyu="千代田線"; kyori=1.2; jikan=2};からそれ以降全部ということなんでしょうか?
28
+
29
+ `global_ekikan_list`に対して言えばそうです。
30
+
31
+ > 再帰関数は処理が出来上がっている前提で使う関数?だと思うのですが
32
+
33
+ 何を言っているのかわかりません。
34
+
35
+ > なぜ then r のところにはget_ekikan_kyori を使っていなくelseの方だけ使っているのでしょうか?
36
+
37
+ 使う必要がどこにあるのです?
38
+
39
+ > if (eki1 = k && eki2 = s) || (eki1 = s && eki2 = k) は何をしているのか教えていただけないでしょうか?
40
+
41
+ `(eki1 = k && eki2 = s) || (eki1 = s && eki2 = k)`かどうかを判定しています。

1

修正

2021/08/31 04:03

投稿

ozwk
ozwk

スコア13553

answer CHANGED
@@ -16,4 +16,6 @@
16
16
 
17
17
  > そもそもなぜ、リストは、first(最初の要素) とrest(その残りの要素)に分けているのでしょうか?
18
18
 
19
+ リストの先頭が調べたい駅間データなのかを判定して、
19
- 分けずにどうしろと?
20
+ だったらその駅間データの距離を返て、
21
+ 違ったらリストの残りに対して同じ処理をする、という作りのプログラムだからです。