Ruby 1 2 3 4 5 2 3 4 5という出力処理を作りたいのですが、なにか良い処理ができるコードはありますか?
良いコードが思い浮かばないので、どなたか教えてください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
回答9件
0
ベストアンサー
lang
1puts (1..2).map{|x|(x..5).to_a}.join(" ")
投稿2014/09/10 10:20
総合スコア86489
0
1 2 3 4 5 2 3 4 5 という数列の後ろに何が続くのか判断つきません。
このコードが一番よいと思います。
lang
1puts "Ruby 1 2 3 4 5 2 3 4 5"
投稿2014/09/10 12:35
総合スコア1342
0
lang
1p (['Ruby']+(1..2).map{|s|(s..5).map{|x|x}}).join ' '
inject を使った回答があったので、それをまねして map を使った方法を作ってみました。
すこしだけ短くなったと思います。
いろいろな知識をつかうと、もっと短い回答も作成できそうですね。
投稿2014/09/13 05:40
総合スコア22328
0
lang
1p 'Ruby '<<[*1..2].inject([]){|x, n|x<<[*n..5];x}.join(' ')
投稿2014/09/12 06:44
総合スコア1679
0
こんな感じですかね。
callccは組み込み関数です。
lang
1require 'continuation' if RUBY_VERSION >= '1.9' 21.upto(5) do |i| 3if i == 2 4$c = callcc{|continuation| 5continuation 6} 7end 8print i, ' ' 9end 10$c.call(nil) if $c
他にもまだまだありますのでご自身で考えてみてください。
投稿2014/09/10 02:30
総合スコア154
0
これが求めている回答とはおもいませんが、可能性の一つとして。
- テキストファイル data.txt をつくり、中身を "Ruby 1 2 3 4 5 2 3 4 5" とする。
- 次の data.rb を作成し、実行する。
lang
1puts File.open('data.txt').read
投稿2014/09/11 16:12
総合スコア22328
0
何か配列を先頭から削除して・・・ということをしたければ、shiftを使うのもありでしょう。
lang
1 2print 'Ruby' 3ar=(1..5).to_a 4until ar.empty? 5 print " " + ar.join(" ") 6 ar.shift 7end 8
Ruby 1 2 3 4 5 2 3 4 5 3 4 5 4 5 5
と出力されると思います
投稿2014/09/11 06:17
総合スコア145
0
私の考えた例も挙げておきます。
lang
1print 'Ruby ' 2(1..2).each {|cnt| 3 (cnt..5).each {|num| 4 print num, ' ' 5 } 6} 7puts
投稿2014/09/10 05:54
総合スコア863
0
Ruby
1p "Ruby 1 #{([*2..5]*2).join(' ')}"
私も挑戦してみました。
投稿2017/08/03 13:58
編集2017/08/03 13:59退会済みユーザー
総合スコア0
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。