質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

3回答

281閲覧

Rubyで1~ 3の数字を繰り返し振りたい

dndn

総合スコア6

Ruby

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

1グッド

1クリップ

投稿2017/08/01 06:22

編集2022/01/12 10:55

現在、プログラミングを勉強し始めのものです。
Rubyで全DBに対して、1~3の数字を振りたいと考えているのですが、どのように書くかが分からず悩んでいます。

ruby

1 a = User.all.count #=>9 2 b = a/2 #=>4 3 c = User.all.select('id').shuffle 4 c.each do |e,i| 5 for num in 1...b do 6 print(num) 7 end 8 end 9#=>123123123123123123123123123になってしまいます 10#=>本来は123123123にしたいです。。。
DrqYuto👍を押しています

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

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

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

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

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

guest

回答3

0

まず記載のプログラムですが
外側のループがUser.all.count = 9回、
内側のループが3回で9*3=27回 print(num)を通過しています。

やり方は色々あるんですが、2重ループを崩さず書くと

c.each_slice(b-1) do |arr| #arrはcの要素のうちb-1個ずつの配列として渡ってきます arr.each_with_index(1) do|v, i| print(i) end end

投稿2017/08/01 07:20

hellomartha

総合スコア329

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

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

0

each_with_index で index を取ってきて 3で割った余りに1を足せばいいと思います.

ruby

1c.each_with_index do |e,i| 2 print(i % 3 + 1) 3end

投稿2017/08/01 11:04

what_alnk

総合スコア147

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

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

0

Enumerator 関連のメソッドをうまく使うと、簡単にコードを書くことができると思います

ruby

1# [1, 2, 3] をnext メソッドで順繰りに取り出せる 2cycler = [*(1..3)].cycle # splat operator でrange を展開 3# => #<Enumerator: [1, 2, 3]:cycle> 4 5# この例では、配列をDB から引っ張ってくるデータの代用として使う 6# 実際は User.all を用いる? 7users = [*(1..15)].shuffle 8 9# 素朴に書く 10users.each do |user| 11 puts "cycle: #{cycler.next}, user: #{user}" 12 # => 13 # cycle: 1, user: 2 14 # cycle: 2, user: 5 15 # cycle: 3, user: 15 16 # cycle: 1, user: 4 17 # cycle: 2, user: 8 18 # ... 19end

質問として Rails タグが見られるので、コントローラとビューが連携できるよう、以下のように書いてみてもいいでしょう

ruby

1# コントローラ側で、ビューにデータを渡す想定 2@users_with_cycle_id = 3 users.map do |user| 4 [cycler.next, user] 5 end 6 7# ビュー側で、渡されたデータを使う 8@users_with_cycle_id.each do |id, user| 9 # 実際にはERB 構文で書く 10 # <%= ID: #{id}, User Info: #{user} %> 11 puts "ID: #{id}, User Info: #{user}" 12end

何か参考になれば幸いです

Links

投稿2017/08/01 10:40

gouf

総合スコア2321

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問