元ネタ
コード
puts "長田「小辛は唐辛子マークでいうと何個分なの?」"
puts "松尾「"
mild_hot_min = gets
puts "から"
mild_hot_max = gets
puts "になります。」"
mild_hot_level = [*(mild_hot_min.to_i..mild_hot_max.to_i)]
puts "長田「じゃあ中辛は?」"
puts "松尾「"
normal_min = gets
puts "から"
normal_max = gets
puts "になります。」"
normal_hot_level = (normal_min.to_i..normal_max.to_i).to_a
haicchateru_yatsu = mild_hot_level & normal_hot_level
if haicchateru_yatsu.empty?
puts "長田「・・・いや入っちゃってないんかい!」"
else
puts "長田「いや#{(mild_hot_level & normal_hot_level).join('と')}が小辛にも中辛にも入っちゃってるじゃん。」"
puts "松尾「・・・”入っちゃってる”というのは?(・。・) キョトン…」"
end
書いて学んだこと
RangeオブジェクトをArrayオブジェクトに変換する方法は、何個かある
mild_hot_level = [*(mild_hot_min.to_i..mild_hot_max.to_i)]
とか
normal_hot_level = (normal_min.to_i..normal_max.to_i).to_a
配列同士の積集合(どっちにもある要素)を求めたいなら、&でつなぐ
haicchateru_yatsu = mild_hot_level & normal_hot_level
他にも和集合や、もっと複雑なのも同じように求められます。
参考:https://qiita.com/namitop/items/be11c007da456ea95735