おはようございます。
今日は数字比較ゲームを作ってみました。
仕様
一桁目が1~20の数字と二桁目が1~10の数字の2つの数字を持ったカードが複数枚ある。
一枚目を親としそれ以降を子とし、それぞれを比較していく。
一桁目が小さい方を勝ちとする。
一桁目が同じだったら二桁目を比較する。
二桁目は大きい方を勝ちとする。
子が何回勝ったかを返す
例
a = <<~TEXT
12 8 #親
15 9 #子
4 11 #子
12 19 #子
12 4 #子
TEXT
=> 2
コード
FORMAT = /(\d*) (\d*)/
def high_low_check(card_number)
card = card_number.scan(FORMAT).map { |array| array.map(&:to_i) }
card[1..-1].map { |array|
if array[0] < card[0][0]
'win'
elsif array[0] == card[0][0]
'win' if array[1] > card[0][1]
end
}.count('win')
end
正規表現で各カードを配列に入れて比較していきます。
if文の中が似たような比較があってあまりDRYじゃないな〜という印象ですがどう治せばいいか分からなかったので、
もし分かる方いたら教えて頂きたいです💦