回答編集履歴

6

テキスト修正

2019/11/21 12:53

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
 
42
42
 
43
- 次に、ご質問に挙げられているコードで気になったことを挙げさせて頂きますと、`has_duplicates?` というメソッド名です。これだと、 引数の配列が「同じ値の要素を重複して含んでいるか?」の判定のように思えてしまいますので、上記の回答では、「プラス・マイナスを反転(invert)させた要素のペアがあるかどうか?」がより分かるように `has_inverted_pair?` としました。これがベストな名前かは分かりませんが、メソッドや変数、クラスなどの名前にこだわる重要性については、以下が参考になります。
43
+ 次に、ご質問に挙げられているコードで気になったことを挙げさせて頂きますと、`has_duplicates?` というメソッド名です。これだと、 引数の配列が「同じ値の要素を重複して含んでいるか?」の判定のように思えてしまいますので、上記の回答では、「プラス・マイナスを反転(invert)させた要素のペアがあるかどうか?」がより分かるように `has_inverted_pair?` としました。これがベストな名前かは分かりませんが、メソッドや変数、クラスなどの名前にこだわることの重要性については、以下が参考になります。
44
44
 
45
45
 
46
46
 

5

テキスト修正

2019/11/21 12:53

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
 
42
42
 
43
- 次に、ご質問に挙げられているコードで気になったことを挙げさせて頂きますと、`has_duplicates?` というメソッド名です。`has_duplicates?` だと、 引数の配列が「同じ値の要素を重複して含んでいるか?」の判定のように思えてしまいますので、上記の回答では、「プラス・マイナスを反転(invert)させた要素のペアがあるかどうか?」がより分かるように `has_inverted_pair?` としました。これがベストな名前かは分かりませんが、メソッドや変数、クラスなどの名前にこだわる重要性については、以下が参考になります。
43
+ 次に、ご質問に挙げられているコードで気になったことを挙げさせて頂きますと、`has_duplicates?` というメソッド名です。これだと、 引数の配列が「同じ値の要素を重複して含んでいるか?」の判定のように思えてしまいますので、上記の回答では、「プラス・マイナスを反転(invert)させた要素のペアがあるかどうか?」がより分かるように `has_inverted_pair?` としました。これがベストな名前かは分かりませんが、メソッドや変数、クラスなどの名前にこだわる重要性については、以下が参考になります。
44
44
 
45
45
 
46
46
 

4

テキスト修正

2019/11/21 12:44

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
 
42
42
 
43
- 次に、ご質問に挙げられているコードで気になったことを挙げさせて頂きますと、`has_duplicates?` というメソッド名です。`has_duplicates?` だと、 引数の配列が「同じ値の要素を重複して含んでいるか?」の判定のように思えてしまいますので、上記の回答では、「符号を反転(inverted)させた要素のペアがあるかどうか?」がより分かるように `has_inverted_pair?` としました。これがベストな名前かは分かりませんが、メソッドや変数、クラスなどの名前にこだわる重要性については、以下が参考になります。
43
+ 次に、ご質問に挙げられているコードで気になったことを挙げさせて頂きますと、`has_duplicates?` というメソッド名です。`has_duplicates?` だと、 引数の配列が「同じ値の要素を重複して含んでいるか?」の判定のように思えてしまいますので、上記の回答では、「プラス・マイナスを反転(invert)させた要素のペアがあるかどうか?」がより分かるように `has_inverted_pair?` としました。これがベストな名前かは分かりませんが、メソッドや変数、クラスなどの名前にこだわる重要性については、以下が参考になります。
44
44
 
45
45
 
46
46
 

3

テキスト修正

2019/11/21 12:43

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -22,6 +22,16 @@
22
22
 
23
23
  ```
24
24
 
25
+ ```ruby
26
+
27
+ p has_inverted_pair? [9, 5, 2, -6, 2, -8, 1, 10, -5, -2] # => true
28
+
29
+ p has_inverted_pair? [9, 5, 2, -6, 2, -8, 1, 10, -50, -20] # => false
30
+
31
+ p has_inverted_pair? [5, 0, 1, 2, 0, -3, -4] # => true (0を2個含んでいる)
32
+
33
+ ```
34
+
25
35
 
26
36
 
27
37
  - **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q224458](https://repl.it/@jun68ykt/Q224458)
@@ -30,7 +40,7 @@
30
40
 
31
41
 
32
42
 
33
- ご質問に挙げられているコードで、まず気になったこと`has_duplicates?` というメソッド名です。`has_duplicates?` だと、 引数の配列が「同じ値の要素を重複して含んでいるか?」の判定のように思えてしまいますので、上記の回答では、「符号を反転(inverted)させた要素のペアがあるかどうか?」がより分かるように `has_inverted_pair?` としました。このように、メソッド名はじめ変数、クラスなどの名前にこだわる重要性については、以下が参考になります。
43
+ 次に、ご質問に挙げられているコードで気になったことを挙げさせて頂きますと、`has_duplicates?` というメソッド名です。`has_duplicates?` だと、 引数の配列が「同じ値の要素を重複して含んでいるか?」の判定のように思えてしまいますので、上記の回答では、「符号を反転(inverted)させた要素のペアがあるかどうか?」がより分かるように `has_inverted_pair?` としました。これがベストな名前かは分かりませんが、メソッド変数、クラスなどの名前にこだわる重要性については、以下が参考になります。
34
44
 
35
45
 
36
46
 

2

テキスト修正

2019/11/21 12:34

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- 注意点は、他の回答者様が良いアドバイスをされているので、この回答ではコード例を挙げます。
5
+ 注意点は、他の回答者様が良いアドバイスをされているので、この回答では、まずコード例を挙げます。
6
6
 
7
7
 
8
8
 
@@ -10,11 +10,9 @@
10
10
 
11
11
  def has_inverted_pair?(arr)
12
12
 
13
- arr.each do |e|
13
+ arr.each_with_index do |e, i|
14
14
 
15
- next if e.zero?
16
-
17
- return true if arr.include?(-e)
15
+ return true if arr[i+1...arr.length].include?(-e)
18
16
 
19
17
  end
20
18
 
@@ -26,7 +24,7 @@
26
24
 
27
25
 
28
26
 
29
- - **動作確認用Repl.it: ** [https://repl.it/@jun68ykt/Q224458](https://repl.it/@jun68ykt/Q224458)
27
+ - **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q224458](https://repl.it/@jun68ykt/Q224458)
30
28
 
31
29
 
32
30
 
@@ -45,31 +43,3 @@
45
43
 
46
44
 
47
45
  以上、参考になれば幸いです。
48
-
49
-
50
-
51
- ### 追記
52
-
53
-
54
-
55
- 0 を2つ(以上)含む場合も、`true` を返させたい場合、以下のように修正します。
56
-
57
- ```ruby
58
-
59
- def has_inverted_pair?(arr)
60
-
61
- arr.each_with_index do |e, i|
62
-
63
- return true if e.zero? and arr[i+1...arr.length].include?(0)
64
-
65
- return true if arr.include?(-e)
66
-
67
- end
68
-
69
- false
70
-
71
- end
72
-
73
- ```
74
-
75
- - **動作確認用Repl.it: ** [https://repl.it/@jun68ykt/Q224458-2](https://repl.it/@jun68ykt/Q224458-2)

1

テキスト修正

2019/11/21 12:30

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -45,3 +45,31 @@
45
45
 
46
46
 
47
47
  以上、参考になれば幸いです。
48
+
49
+
50
+
51
+ ### 追記
52
+
53
+
54
+
55
+ 0 を2つ(以上)含む場合も、`true` を返させたい場合、以下のように修正します。
56
+
57
+ ```ruby
58
+
59
+ def has_inverted_pair?(arr)
60
+
61
+ arr.each_with_index do |e, i|
62
+
63
+ return true if e.zero? and arr[i+1...arr.length].include?(0)
64
+
65
+ return true if arr.include?(-e)
66
+
67
+ end
68
+
69
+ false
70
+
71
+ end
72
+
73
+ ```
74
+
75
+ - **動作確認用Repl.it: ** [https://repl.it/@jun68ykt/Q224458-2](https://repl.it/@jun68ykt/Q224458-2)