From 4f222d34810af4ee57372599b7cf95c117a18ee5 Mon Sep 17 00:00:00 2001 From: shanmukhanath Date: Sun, 12 Jun 2022 16:35:38 +0530 Subject: [PATCH 1/4] Flattens if conditions --- python/gilded_rose.py | 48 +++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/python/gilded_rose.py b/python/gilded_rose.py index f1d68581..d770c173 100755 --- a/python/gilded_rose.py +++ b/python/gilded_rose.py @@ -15,33 +15,33 @@ class GildedRose(object): self.update_item_quality(item) def update_item_quality(self, item): + isExpired = item.sell_in < 0 + doesDegradeQaulity = item.name != self.AGED_BRIE and item.name != self.BACKSTAGE_PASSES and item.name != self.SULFURAS - if item.name != self.AGED_BRIE and item.name != self.BACKSTAGE_PASSES: - if item.quality > 0: - - if item.name != self.SULFURAS: - self.adjust_quality(item, - self.qualityIncrease) - else: - if item.quality < 50: + if doesDegradeQaulity: + self.adjust_quality(item, - self.qualityIncrease) + + if item.name == self.AGED_BRIE: + self.adjust_quality(item, self.qualityIncrease) + + if item.name == self.BACKSTAGE_PASSES: + self.adjust_quality(item, self.qualityIncrease) + if item.sell_in < 11: self.adjust_quality(item, self.qualityIncrease) - if item.name == self.BACKSTAGE_PASSES: - if item.sell_in < 11: - self.adjust_quality(item, self.qualityIncrease) - if item.sell_in < 6: - self.adjust_quality(item, self.qualityIncrease) + if item.sell_in < 6: + self.adjust_quality(item, self.qualityIncrease) + if item.name != self.SULFURAS: item.sell_in = item.sell_in - 1 - if item.sell_in < 0: - if item.name != self.AGED_BRIE: - if item.name != self.BACKSTAGE_PASSES: - if item.quality > 0: - if item.name != self.SULFURAS: - self.adjust_quality(item, - self.qualityIncrease) - else: - item.quality = item.quality - item.quality - else: - if item.quality < 50: - self.adjust_quality(item, self.qualityIncrease) + + + if isExpired: + if doesDegradeQaulity: + self.adjust_quality(item, - self.qualityIncrease) + if item.quality == self.BACKSTAGE_PASSES: + item.quality = item.quality - item.quality + if item.quality == self.AGED_BRIE: + self.adjust_quality(item, self.qualityIncrease) # Update the quality item value if the quality value is within the range 0 to 50 def adjust_quality(self, item, quality_increase_decrease): @@ -51,7 +51,7 @@ class GildedRose(object): -class Item: +class Item: def __init__(self, name, sell_in, quality): self.name = name self.sell_in = sell_in From 83eec772c61bc81a15a183e8c7a7ce352a2a7b5c Mon Sep 17 00:00:00 2001 From: shanmukhanath Date: Sun, 12 Jun 2022 16:42:44 +0530 Subject: [PATCH 2/4] Added conjured items which degrades conjured items twice as fast as normal items --- python/gilded_rose.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/python/gilded_rose.py b/python/gilded_rose.py index d770c173..7fdd1bdd 100755 --- a/python/gilded_rose.py +++ b/python/gilded_rose.py @@ -5,6 +5,7 @@ class GildedRose(object): AGED_BRIE = "Aged Brie" BACKSTAGE_PASSES = "Backstage passes to a TAFKAL80ETC concert" SULFURAS = "Sulfuras, Hand of Ragnaros" + CONJURED = "Conjured Mana Cake" qualityIncrease = 1 def __init__(self, items): @@ -16,10 +17,11 @@ class GildedRose(object): def update_item_quality(self, item): isExpired = item.sell_in < 0 + qualityDecrease = -1 if item.name != self.CONJURED else -2 doesDegradeQaulity = item.name != self.AGED_BRIE and item.name != self.BACKSTAGE_PASSES and item.name != self.SULFURAS if doesDegradeQaulity: - self.adjust_quality(item, - self.qualityIncrease) + self.adjust_quality(item, qualityDecrease) if item.name == self.AGED_BRIE: self.adjust_quality(item, self.qualityIncrease) @@ -37,7 +39,7 @@ class GildedRose(object): if isExpired: if doesDegradeQaulity: - self.adjust_quality(item, - self.qualityIncrease) + self.adjust_quality(item, qualityDecrease) if item.quality == self.BACKSTAGE_PASSES: item.quality = item.quality - item.quality if item.quality == self.AGED_BRIE: From 409b96897e360499844a4c8add2d72c7e887eaad Mon Sep 17 00:00:00 2001 From: shanmukhanath Date: Sun, 12 Jun 2022 17:01:41 +0530 Subject: [PATCH 3/4] flatten ifs and added logic to find the quality decrease rate based on expired date and conjured items --- python/gilded_rose.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/python/gilded_rose.py b/python/gilded_rose.py index 7fdd1bdd..2f92d33d 100755 --- a/python/gilded_rose.py +++ b/python/gilded_rose.py @@ -17,14 +17,15 @@ class GildedRose(object): def update_item_quality(self, item): isExpired = item.sell_in < 0 - qualityDecrease = -1 if item.name != self.CONJURED else -2 + qualityDecrease = self.determine_degrate_quality_rate(item,isExpired) doesDegradeQaulity = item.name != self.AGED_BRIE and item.name != self.BACKSTAGE_PASSES and item.name != self.SULFURAS if doesDegradeQaulity: self.adjust_quality(item, qualityDecrease) if item.name == self.AGED_BRIE: - self.adjust_quality(item, self.qualityIncrease) + qualityIncrease = 2 if isExpired else 1 + self.adjust_quality(item, qualityIncrease) if item.name == self.BACKSTAGE_PASSES: self.adjust_quality(item, self.qualityIncrease) @@ -32,18 +33,17 @@ class GildedRose(object): self.adjust_quality(item, self.qualityIncrease) if item.sell_in < 6: self.adjust_quality(item, self.qualityIncrease) + if isExpired: + item.quality = item.quality - item.quality if item.name != self.SULFURAS: item.sell_in = item.sell_in - 1 - - if isExpired: - if doesDegradeQaulity: - self.adjust_quality(item, qualityDecrease) - if item.quality == self.BACKSTAGE_PASSES: - item.quality = item.quality - item.quality - if item.quality == self.AGED_BRIE: - self.adjust_quality(item, self.qualityIncrease) + # Logic to determine the Quality Decrease rate based on Expired date and conjured item + def determine_degrate_quality_rate(self, item, isExpired): + qualityDecrease = -1 if item.name != self.CONJURED else -2 + return qualityDecrease * 2 if isExpired else qualityDecrease + # Update the quality item value if the quality value is within the range 0 to 50 def adjust_quality(self, item, quality_increase_decrease): From 8da0c51370a271a67bf91f24334d1a48a8e3a671 Mon Sep 17 00:00:00 2001 From: shanmukhanath Date: Sun, 12 Jun 2022 17:09:12 +0530 Subject: [PATCH 4/4] consiladed blackstage passes handling logic --- python/gilded_rose.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/python/gilded_rose.py b/python/gilded_rose.py index 2f92d33d..ca9b080a 100755 --- a/python/gilded_rose.py +++ b/python/gilded_rose.py @@ -28,16 +28,20 @@ class GildedRose(object): self.adjust_quality(item, qualityIncrease) if item.name == self.BACKSTAGE_PASSES: - self.adjust_quality(item, self.qualityIncrease) - if item.sell_in < 11: - self.adjust_quality(item, self.qualityIncrease) - if item.sell_in < 6: - self.adjust_quality(item, self.qualityIncrease) - if isExpired: - item.quality = item.quality - item.quality + self.update_backstagepasses_quality(item, isExpired) if item.name != self.SULFURAS: item.sell_in = item.sell_in - 1 + + # BAckstage Passes logic to update the item quality based on number of days + def update_backstagepasses_quality(self, item, isExpired): + self.adjust_quality(item, self.qualityIncrease) + if item.sell_in < 11: + self.adjust_quality(item, self.qualityIncrease) + if item.sell_in < 6: + self.adjust_quality(item, self.qualityIncrease) + if isExpired: + item.quality = item.quality - item.quality # Logic to determine the Quality Decrease rate based on Expired date and conjured item def determine_degrate_quality_rate(self, item, isExpired):