🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

839閲覧

配列の中身にループを回して別の配列に入れたい

toriumi_haru

総合スコア26

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

1グッド

3クリップ

投稿2019/09/14 15:25

##やりたいことはタイトルの通りです
例えば次のようなことがしたいです。

値の約数を求めて配列に入れるみたいな感じです

ruby

1標準入力 (標準入力の値はテストケースごとに変化する、標準入力の形式はこれと同じ) 23 #検証する回数 312 #検証する値 443 #検証する値 534 #検証する値

##やりたいこと
配列linesの先頭の検証する回数の値を削除してしまって残った値にループを回して値ごとの素数を配列に入れたいです。

一応自分書いたコードです。
当然ですがこのコードではうまくいっていません。
delete_atまではうまくいってます。

ruby

1lines = readlines(chomp: true).map{|line| line.split(' ').map(&:to_i)}.flatten 2 3lines.delete_at(0) 4 5i = 1 6 7lines.each do |a| 8 ary = [] 9 while i <= a 10 if a % i == 0 11 ary << i 12 end 13 i += 1 14 end 15end 16p ary

##わからないこと
・配列の中身にループを回して同じ式に当てはめる方法
・配列の中身ごとに新しく配列を作ってそこに答えを入れる方法
例えば
lines[1]の答えの配列
lines[2]の答えの配列のような感じです。

ご教授お願いします。

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

質問読み違えたので、一旦取り消し
タイトルの「配列の中身にループを回して別の配列に入れたい」と
実際にやる「値の約数を求めて配列に入れるみたいな感じです」と
「値ごとの素数を配列に入れたいです。」が違ってるです。
タイトルのやり方を書いてました。

で、「約数」を入れるのでしょうか「素数の約数」を入れるのでしょうか
つまり 12 に対して [1,2,3,4,6,12] なのか [1,2,3] なのか
プログラムでは [1,2,3,4,6,12] になってます。
[1,2,3]を得たいなら
require 'prime' しておいて

lines.each do |a| ary = [] Prime.each(a).each{|p| break if p > a ary << p if a % p == 0 } p ary end

ただこれですとまだ題意を満足していないような気がします。
欲しいのは
ary = [ [1,2,3],[1,43],[1,2,17,34] ]
では?
とすると

ary = lines.map do |a| subary = [] Prime.each(a).each{|p| break if p > a subary << p if a % p == 0 } subary end

とか

ary = lines.map do |a| Prime.each(a).map{|p| break if p > a a % p == 0 ? p : nil }.compact end

何をしたいのか、が場所によって違うと、読み取り間違いします

投稿2019/09/14 21:31

編集2019/09/14 22:05
winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toriumi_haru

2019/09/15 01:42

winterboumさん! 標準入力でお世話になりました! 再びご回答いただきましてありがとうございます! これからはもっとわかりやすい質問をするように心がけて参ります! またお願いします!
guest

0

ベストアンサー

日本語の部分は、何度読み直しても意味不明なので、無視して、プログラムの部分だけを見ると、
おそらく、

Ruby

1lines.each do |a| 2 i = 1 3 ary = [] 4 while i <= a 5 if a % i == 0 6 ary << i 7 end 8 i += 1 9 end 10 p ary 11end

でしょうか。i=1p aryの位置がおかしい。

投稿2019/09/14 15:45

otn

総合スコア85893

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toriumi_haru

2019/09/15 01:39

ご回答ありがとうございます! 日本語の部分が読みづらくてすみませんでした。 otnさんのコードでできました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問