はじめに
こんにちは!
最近はrubyの問題にハマっていて、気付いたら夜中、みたいない毎日です…。
そん中、意外と便利なのに、記事としてあまり見かけない方法で
while文なんかを使って一気に配列から配列に押し込む方法をご紹介いたします。
##each文の活用
# こちらでは数字と文字列がごちゃごちゃになった配列を数字の配列(int)と文字の配列(str)に分けてます
x_arry = [1,"a",2,"b",3,"c"]
int = []
str = []
i = 0
x_arry.each do |n|
i += 1
if n.to_s =~ /^[0-9]+$/ #こちらは正規表現で、数字のみを条件分岐してます。
int << n
else
str << n
end
end
print int
# => [1, 2, 3]
print str
# =>["a", "b", "c"]
※正規表現については詳しい記事が山ほどありますので、そちらをご参照くださいませm(_ _)m
参考記事①
https://programming-dojo.com/%E3%80%90ruby%E5%85%A5%E9%96%80%E3%80%91%E6%95%B0%E5%AD%97%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%82%92%E5%88%A4%E5%AE%9A%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/
参考記事②
https://qiita.com/pecooh/items/ee392125727f04bafaed
次はwhile文みてみましょう。
while文の活用
# 配列にそれぞれaの配列とbの配列にある数字を足し算して配列に打ち込んでます。
a = [43,56,77,22,45,66,78,99,53,44]
b = [1,2,3,4,5,6,7,8,9,10]
answer_arry = []
i = 0
while i < a.length do
ans = a[i] + b[i]
answer_arry << ans
i += 1
end
print answer_arry
# => [44, 58, 80, 26, 50, 72, 85, 107, 62, 54]
この様にして、繰り返し処理をしてもらって自動で格納してもらえるのは便利ですね❗️
しかも、格納される直前で条件分岐すると、一定の条件のものが格納することもできますので是非やってみてください😌
クイズとか問題とかやっているとこういう処理が必要になってくることは多々ありますので重宝です😌
ぜひ、遊んでみてください☺️
ちなみにこれを使ってこんなふうにするとちょっとしたおみくじみたいなゲームとか作れそうですね☺️
おまけ
a = [rand(100),rand(100),rand(100),rand(100),rand(100),rand(100),rand(100),rand(100),rand(100),rand(100)]
b = [1,2,3,4,5,6,7,8,9,10]
answer_arry = []
i = 0
while i < a.length do
ans = a[i] + b[i]
answer_arry << ans
i += 1
end
print answer_arry
randを使うことで数字がランダムになって出てくるので「ゾロ目の数が多い方が勝ちな!」みたいなゲームだったり、
randメソッドについてはPCとジャンケン対戦ができる様なゲームに応用ができたり楽しいです😊
それではまた❗️
ありがとうございましたm(_ _)m✨