"1|2|3|4|5"を出力するプログラムを1行で作れるみたいなのですが、
どうすればいいでしょうか?
どなたか分かる方教えていただけませんか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
次の2行のどちらも "1|2|3|4|5" を出力します。
puts [1, 2, 3, 4, 5].join('|') puts (1..5).to_a.join('|')
join(str) は、配列の要素を str でつないだ文字列を作成するメソッドです。
参考: 逆引きRuby:配列要素をカンマ区切りで出力する
1 行目の場合は、配列 を直接 記述しています。
1 から 5 でなく、 1 から 100 までに変更をしようとしたら、ちょっと大変です。
2 行目の場合は、(1..5).to_a と記述することで [1, 2, ... 5] の配列をつくり出しています。
5 -> 100 と変更するだけで、 "1|2| .... |99|100" を出力するようになります。
投稿2014/08/17 09:29
総合スコア22324
0
"一行で" ということは、おそらく「ループを使わずに数字の連番を区切り文字で連結させたい」というご質問だと思います。
配列には要素を連結する join
メソッドがあるので、それを使って作れます。
連番の配列の方は 範囲オブジェクト(1..5
) や数字の数え上げ(upto
)などを to_a
メソッドで配列にすることによって用意できます。
puts (1..5).to_a.join('|') puts 1.upto(5).to_a.join('|')
ちなみに join
は *
でも書けます。
puts (1..5).to_a * '|' puts 1.upto(5).to_a * '|'
投稿2014/08/18 10:07
総合スコア863
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
suu = 1,2,3,4,5;p suu.join("|")
これで、質問者様が作りたいと仰っておられるプログラムを
書くことができたのではないでしょうか?
投稿2014/08/17 07:30
総合スコア196
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2014/08/20 01:19