回答編集履歴
3
コード追記
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
コメントに対する追記
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
修正
answer
CHANGED
@@ -16,4 +16,6 @@
|
|
16
16
|
|
17
17
|
> そもそもなぜ、リストは、first(最初の要素) とrest(その残りの要素)に分けているのでしょうか?
|
18
18
|
|
19
|
+
リストの先頭が調べたい駅間データなのかを判定して、
|
19
|
-
|
20
|
+
そうだったらその駅間データの距離を返して、
|
21
|
+
違ったらリストの残りに対して同じ処理をする、という作りのプログラムだからです。
|