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

回答編集履歴

3

修正

2019/09/14 22:05

投稿

winterboum
winterboum

スコア23653

answer CHANGED
@@ -1,1 +1,49 @@
1
- 質問読み違えたので、一旦取り消し
1
+ 質問読み違えたので、一旦取り消し
2
+ タイトルの「配列の中身にループを回して別の配列に入れたい」と
3
+ 実際にやる「値の約数を求めて配列に入れるみたいな感じです」と
4
+ 「値ごとの素数を配列に入れたいです。」が違ってるです。
5
+ タイトルのやり方を書いてました。
6
+
7
+ で、「約数」を入れるのでしょうか「素数の約数」を入れるのでしょうか
8
+ つまり 12 に対して [1,2,3,4,6,12] なのか [1,2,3] なのか
9
+ プログラムでは [1,2,3,4,6,12] になってます。
10
+ [1,2,3]を得たいなら
11
+ require 'prime' しておいて
12
+ ```
13
+ lines.each do |a|
14
+ ary = []
15
+ Prime.each(a).each{|p|
16
+ break if p > a
17
+ ary << p if a % p == 0
18
+ }
19
+ p ary
20
+ end
21
+ ```
22
+ ただこれですとまだ題意を満足していないような気がします。
23
+ 欲しいのは
24
+ ary = [ [1,2,3],[1,43],[1,2,17,34] ]
25
+ では?
26
+ とすると
27
+ ```
28
+ ary =
29
+ lines.map do |a|
30
+ subary = []
31
+ Prime.each(a).each{|p|
32
+ break if p > a
33
+ subary << p if a % p == 0
34
+ }
35
+ subary
36
+ end
37
+ ```
38
+ とか
39
+ ```
40
+ ary =
41
+ lines.map do |a|
42
+ Prime.each(a).map{|p|
43
+ break if p > a
44
+ a % p == 0 ? p : nil
45
+ }.compact
46
+ end
47
+ ```
48
+ ####
49
+ 何をしたいのか、が場所によって違うと、読み取り間違いします

2

修正

2019/09/14 22:05

投稿

winterboum
winterboum

スコア23653

answer CHANGED
@@ -1,28 +1,1 @@
1
- 3 #検証する回数
2
- 12 #検証する値
3
- 43 #検証する値
4
- 34 #検証する値
5
- の場合に ary = [12,43,34] を得たい、ということでしょうか。
6
- ですと
7
- ループをまわすなら
8
- lines.each{|a| ary << a }
9
- で済みます。
10
-
11
- ary[i] = a を使うなら(この場合はそんなことをする必要は無いですが、そのうち必要になるでしょうから)
12
- lines.each_with_index{|a,i| ary[i] = a }
13
-
14
- ただ、今回の場合は
15
- ary = lines
16
-
17
- で済みますし、頭の 3 を残す必要がないなら初めから
18
- ary = readlines(chomp: true).map{|line| line.split(' ').map(&:to_i)}.flatten[1,-1]
19
-
20
- あ、「別の配列に」か、
21
- すると 下二つは駄目すね。
1
+ 質問読み違えたので、一旦取り消し
22
- ary = lines は同じ配列を共有
23
- ary = readlines ...
24
- は linesがない。
25
-
26
- ary = lines.dup
27
-
28
- ですね

1

追記

2019/09/14 21:44

投稿

winterboum
winterboum

スコア23653

answer CHANGED
@@ -13,5 +13,16 @@
13
13
 
14
14
  ただ、今回の場合は
15
15
  ary = lines
16
+
16
17
  で済みますし、頭の 3 を残す必要がないなら初めから
17
- ary = readlines(chomp: true).map{|line| line.split(' ').map(&:to_i)}.flatten[1,-1]
18
+ ary = readlines(chomp: true).map{|line| line.split(' ').map(&:to_i)}.flatten[1,-1]
19
+
20
+ あ、「別の配列に」か、
21
+ すると 下の二つは駄目ですね。
22
+ ary = lines は同じ配列を共有
23
+ ary = readlines ...
24
+ は linesがない。
25
+
26
+ ary = lines.dup
27
+
28
+ ですね