日別アーカイブ: 2022年10月4日

TIPS(Ruby:配列に任意の文字列が含まれているか?)

目標(何がしたいか?)

重要な文字列が含まれている文字列を抽出して出力するプログラムを作成する。

問題

1行目に重要な文字列がある(eu)
2行目からのn行目までに1行目の文字列が含まれていたら出力して
含まれていないときは出力しない。
ただしaiueoのように1行目の文字を含んでいるが、順番が違う場合や
eluのように連続していない場合はNGとする。
条件を一つも満たしていない場合は”None”を出力すること。

与えられる入力値

eu
euro
e
aiueo
eleven
elu
neu

期待する出力

euro
neu

コードと解説

#1行目の文字列を受け取る(chompで改行コード\nを打ち消す)
string = gets.chomp

#条件を満たしたものを格納したいので[]で初期化して作成
ary = []

#2行目からn行目までの入力を受け取る
strings = readlines.map(&:chomp)

#配列の要素を一つずつ1行目の文字列を含んでいるか調べて、Trueの場合aryに格納する
strings.each { |i| ary << i if i.include?(string) }

#条件を満たしていたときにはaryを出力して、一つも条件を満たさなかったときは"None"を出力
puts ary.size >= 1 ? ary : "None"

https://paiza.io/ja/projects/new
↑こちらにコピペして「実行」で確認できます。
↓このような出力結果になっていればOKです。