From 3fe730ddc46c37fef6dfd350112704675e420d31 Mon Sep 17 00:00:00 2001 From: degwinthegreat Date: Fri, 14 May 2021 20:33:11 +0900 Subject: [PATCH] =?UTF-8?q?=E3=81=95=E3=82=89=E3=81=B0=E3=80=81=E3=81=99?= =?UTF-8?q?=E3=81=B9=E3=81=A6=E3=81=AESULFURAS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruby/gilded_rose.rb | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/ruby/gilded_rose.rb b/ruby/gilded_rose.rb index e3de9654..3cb9d2ee 100644 --- a/ruby/gilded_rose.rb +++ b/ruby/gilded_rose.rb @@ -5,28 +5,30 @@ class GildedRose AGED_BRIE = "Aged Brie" BACKSTAGE_PASS = "Backstage passes to a TAFKAL80ETC concert" SULFURAS = "Sulfuras, Hand of Ragnaros" + QUALITY_THRESHOLD = 50 def initialize(items) @items = items end - def increment_item_quality(item) - item.quality = item.quality + 1 + def increment_item_quality(item, num = 1) + item.quality = [item.quality + num, QUALITY_THRESHOLD].min end def first_step(item) - if item.name == AGED_BRIE || item.name == BACKSTAGE_PASS - return unless item.quality < 50 + case item.name + when AGED_BRIE increment_item_quality(item) - return if item.name == AGED_BRIE - if item.sell_in < 11 && item.quality < 50 - increment_item_quality(item) - end - if item.sell_in < 6 && item.quality < 50 + when BACKSTAGE_PASS + if item.sell_in >= 11 increment_item_quality(item) + elsif (6...11).cover?(item.sell_in) + increment_item_quality(item, 2) + elsif item.sell_in < 6 + increment_item_quality(item, 3) end else - if item.quality > 0 && item.name != SULFURAS + if item.quality > 0 item.quality = item.quality - 1 end end @@ -34,23 +36,19 @@ class GildedRose def update_quality() @items.each do |item| + return if item.name == SULFURAS + first_step(item) - if item.name != SULFURAS - item.sell_in = item.sell_in - 1 - end + item.sell_in = item.sell_in - 1 if item.sell_in < 0 if item.name == AGED_BRIE - if item.quality < 50 - increment_item_quality(item) - end + increment_item_quality(item) else if item.name == BACKSTAGE_PASS item.quality = 0 else if item.quality > 0 - if item.name != SULFURAS - item.quality = item.quality - 1 - end + item.quality = item.quality - 1 end end end