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

回答編集履歴

6

テキスト修正

2019/11/21 12:53

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -19,7 +19,7 @@
19
19
  - **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q224458](https://repl.it/@jun68ykt/Q224458)
20
20
 
21
21
 
22
- 次に、ご質問に挙げられているコードで気になったことを挙げさせて頂きますと、`has_duplicates?` というメソッド名です。これだと、 引数の配列が「同じ値の要素を重複して含んでいるか?」の判定のように思えてしまいますので、上記の回答では、「プラス・マイナスを反転(invert)させた要素のペアがあるかどうか?」がより分かるように `has_inverted_pair?` としました。これがベストな名前かは分かりませんが、メソッドや変数、クラスなどの名前にこだわる重要性については、以下が参考になります。
22
+ 次に、ご質問に挙げられているコードで気になったことを挙げさせて頂きますと、`has_duplicates?` というメソッド名です。これだと、 引数の配列が「同じ値の要素を重複して含んでいるか?」の判定のように思えてしまいますので、上記の回答では、「プラス・マイナスを反転(invert)させた要素のペアがあるかどうか?」がより分かるように `has_inverted_pair?` としました。これがベストな名前かは分かりませんが、メソッドや変数、クラスなどの名前にこだわることの重要性については、以下が参考になります。
23
23
 
24
24
  - 参考: [プログラマが知るべき97のこと](https://xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/) - [名前重要](https://xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/%E3%82%A8%E3%83%83%E3%82%BB%E3%82%A4/%E5%90%8D%E5%89%8D%E9%87%8D%E8%A6%81/) (Matzさん)
25
25
 

5

テキスト修正

2019/11/21 12:53

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -19,7 +19,7 @@
19
19
  - **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q224458](https://repl.it/@jun68ykt/Q224458)
20
20
 
21
21
 
22
- 次に、ご質問に挙げられているコードで気になったことを挙げさせて頂きますと、`has_duplicates?` というメソッド名です。`has_duplicates?` だと、 引数の配列が「同じ値の要素を重複して含んでいるか?」の判定のように思えてしまいますので、上記の回答では、「プラス・マイナスを反転(invert)させた要素のペアがあるかどうか?」がより分かるように `has_inverted_pair?` としました。これがベストな名前かは分かりませんが、メソッドや変数、クラスなどの名前にこだわる重要性については、以下が参考になります。
22
+ 次に、ご質問に挙げられているコードで気になったことを挙げさせて頂きますと、`has_duplicates?` というメソッド名です。これだと、 引数の配列が「同じ値の要素を重複して含んでいるか?」の判定のように思えてしまいますので、上記の回答では、「プラス・マイナスを反転(invert)させた要素のペアがあるかどうか?」がより分かるように `has_inverted_pair?` としました。これがベストな名前かは分かりませんが、メソッドや変数、クラスなどの名前にこだわる重要性については、以下が参考になります。
23
23
 
24
24
  - 参考: [プログラマが知るべき97のこと](https://xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/) - [名前重要](https://xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/%E3%82%A8%E3%83%83%E3%82%BB%E3%82%A4/%E5%90%8D%E5%89%8D%E9%87%8D%E8%A6%81/) (Matzさん)
25
25
 

4

テキスト修正

2019/11/21 12:44

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -19,7 +19,7 @@
19
19
  - **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q224458](https://repl.it/@jun68ykt/Q224458)
20
20
 
21
21
 
22
- 次に、ご質問に挙げられているコードで気になったことを挙げさせて頂きますと、`has_duplicates?` というメソッド名です。`has_duplicates?` だと、 引数の配列が「同じ値の要素を重複して含んでいるか?」の判定のように思えてしまいますので、上記の回答では、「符号を反転(inverted)させた要素のペアがあるかどうか?」がより分かるように `has_inverted_pair?` としました。これがベストな名前かは分かりませんが、メソッドや変数、クラスなどの名前にこだわる重要性については、以下が参考になります。
22
+ 次に、ご質問に挙げられているコードで気になったことを挙げさせて頂きますと、`has_duplicates?` というメソッド名です。`has_duplicates?` だと、 引数の配列が「同じ値の要素を重複して含んでいるか?」の判定のように思えてしまいますので、上記の回答では、「プラス・マイナスを反転(invert)させた要素のペアがあるかどうか?」がより分かるように `has_inverted_pair?` としました。これがベストな名前かは分かりませんが、メソッドや変数、クラスなどの名前にこだわる重要性については、以下が参考になります。
23
23
 
24
24
  - 参考: [プログラマが知るべき97のこと](https://xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/) - [名前重要](https://xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/%E3%82%A8%E3%83%83%E3%82%BB%E3%82%A4/%E5%90%8D%E5%89%8D%E9%87%8D%E8%A6%81/) (Matzさん)
25
25
 

3

テキスト修正

2019/11/21 12:43

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -10,11 +10,16 @@
10
10
  false
11
11
  end
12
12
  ```
13
+ ```ruby
14
+ p has_inverted_pair? [9, 5, 2, -6, 2, -8, 1, 10, -5, -2] # => true
15
+ p has_inverted_pair? [9, 5, 2, -6, 2, -8, 1, 10, -50, -20] # => false
16
+ p has_inverted_pair? [5, 0, 1, 2, 0, -3, -4] # => true (0を2個含んでいる)
17
+ ```
13
18
 
14
19
  - **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q224458](https://repl.it/@jun68ykt/Q224458)
15
20
 
16
21
 
17
- ご質問に挙げられているコードで、まず気になったこと`has_duplicates?` というメソッド名です。`has_duplicates?` だと、 引数の配列が「同じ値の要素を重複して含んでいるか?」の判定のように思えてしまいますので、上記の回答では、「符号を反転(inverted)させた要素のペアがあるかどうか?」がより分かるように `has_inverted_pair?` としました。このように、メソッド名はじめ変数、クラスなどの名前にこだわる重要性については、以下が参考になります。
22
+ 次に、ご質問に挙げられているコードで気になったことを挙げさせて頂きますと、`has_duplicates?` というメソッド名です。`has_duplicates?` だと、 引数の配列が「同じ値の要素を重複して含んでいるか?」の判定のように思えてしまいますので、上記の回答では、「符号を反転(inverted)させた要素のペアがあるかどうか?」がより分かるように `has_inverted_pair?` としました。これがベストな名前かは分かりませんが、メソッド変数、クラスなどの名前にこだわる重要性については、以下が参考になります。
18
23
 
19
24
  - 参考: [プログラマが知るべき97のこと](https://xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/) - [名前重要](https://xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/%E3%82%A8%E3%83%83%E3%82%BB%E3%82%A4/%E5%90%8D%E5%89%8D%E9%87%8D%E8%A6%81/) (Matzさん)
20
25
 

2

テキスト修正

2019/11/21 12:34

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,18 +1,17 @@
1
1
  こんにちは
2
2
 
3
- 注意点は、他の回答者様が良いアドバイスをされているので、この回答ではコード例を挙げます。
3
+ 注意点は、他の回答者様が良いアドバイスをされているので、この回答では、まずコード例を挙げます。
4
4
 
5
5
  ```ruby
6
6
  def has_inverted_pair?(arr)
7
- arr.each do |e|
7
+ arr.each_with_index do |e, i|
8
- next if e.zero?
9
- return true if arr.include?(-e)
8
+ return true if arr[i+1...arr.length].include?(-e)
10
9
  end
11
10
  false
12
11
  end
13
12
  ```
14
13
 
15
- - **動作確認用Repl.it: ** [https://repl.it/@jun68ykt/Q224458](https://repl.it/@jun68ykt/Q224458)
14
+ - **動作確認用Repl.it:** [https://repl.it/@jun68ykt/Q224458](https://repl.it/@jun68ykt/Q224458)
16
15
 
17
16
 
18
17
  ご質問に挙げられているコードで、まず気になったことは `has_duplicates?` というメソッド名です。`has_duplicates?` だと、 引数の配列が「同じ値の要素を重複して含んでいるか?」の判定のように思えてしまいますので、上記の回答では、「符号を反転(inverted)させた要素のペアがあるかどうか?」がより分かるように `has_inverted_pair?` としました。このように、メソッド名はじめ変数、クラスなどの名前にこだわる重要性については、以下が参考になります。
@@ -21,18 +20,4 @@
21
20
 
22
21
 
23
22
 
24
- 以上、参考になれば幸いです。
23
+ 以上、参考になれば幸いです。
25
-
26
- ### 追記
27
-
28
- 0 を2つ(以上)含む場合も、`true` を返させたい場合、以下のように修正します。
29
- ```ruby
30
- def has_inverted_pair?(arr)
31
- arr.each_with_index do |e, i|
32
- return true if e.zero? and arr[i+1...arr.length].include?(0)
33
- return true if arr.include?(-e)
34
- end
35
- false
36
- end
37
- ```
38
- - **動作確認用Repl.it: ** [https://repl.it/@jun68ykt/Q224458-2](https://repl.it/@jun68ykt/Q224458-2)

1

テキスト修正

2019/11/21 12:30

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -21,4 +21,18 @@
21
21
 
22
22
 
23
23
 
24
- 以上、参考になれば幸いです。
24
+ 以上、参考になれば幸いです。
25
+
26
+ ### 追記
27
+
28
+ 0 を2つ(以上)含む場合も、`true` を返させたい場合、以下のように修正します。
29
+ ```ruby
30
+ def has_inverted_pair?(arr)
31
+ arr.each_with_index do |e, i|
32
+ return true if e.zero? and arr[i+1...arr.length].include?(0)
33
+ return true if arr.include?(-e)
34
+ end
35
+ false
36
+ end
37
+ ```
38
+ - **動作確認用Repl.it: ** [https://repl.it/@jun68ykt/Q224458-2](https://repl.it/@jun68ykt/Q224458-2)