From 37f400d4b1a901e6479932864206f18b204b0244 Mon Sep 17 00:00:00 2001 From: shanmukhanath Date: Sun, 12 Jun 2022 14:16:22 +0530 Subject: [PATCH 1/6] Extract method to update the item quality --- python/gilded_rose.py | 51 +++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/python/gilded_rose.py b/python/gilded_rose.py index 4f21ea64..25588612 100755 --- a/python/gilded_rose.py +++ b/python/gilded_rose.py @@ -7,33 +7,36 @@ class GildedRose(object): def update_quality(self): for item in self.items: - if item.name != "Aged Brie" and item.name != "Backstage passes to a TAFKAL80ETC concert": - if item.quality > 0: - if item.name != "Sulfuras, Hand of Ragnaros": - item.quality = item.quality - 1 + self.update_item_quality(item) + + def update_item_quality(self, item): + if item.name != "Aged Brie" and item.name != "Backstage passes to a TAFKAL80ETC concert": + if item.quality > 0: + if item.name != "Sulfuras, Hand of Ragnaros": + item.quality = item.quality - 1 + else: + if item.quality < 50: + item.quality = item.quality + 1 + if item.name == "Backstage passes to a TAFKAL80ETC concert": + if item.sell_in < 11: + if item.quality < 50: + item.quality = item.quality + 1 + if item.sell_in < 6: + if item.quality < 50: + item.quality = item.quality + 1 + if item.name != "Sulfuras, Hand of Ragnaros": + item.sell_in = item.sell_in - 1 + if item.sell_in < 0: + if item.name != "Aged Brie": + if item.name != "Backstage passes to a TAFKAL80ETC concert": + if item.quality > 0: + if item.name != "Sulfuras, Hand of Ragnaros": + item.quality = item.quality - 1 + else: + item.quality = item.quality - item.quality else: if item.quality < 50: item.quality = item.quality + 1 - if item.name == "Backstage passes to a TAFKAL80ETC concert": - if item.sell_in < 11: - if item.quality < 50: - item.quality = item.quality + 1 - if item.sell_in < 6: - if item.quality < 50: - item.quality = item.quality + 1 - if item.name != "Sulfuras, Hand of Ragnaros": - item.sell_in = item.sell_in - 1 - if item.sell_in < 0: - if item.name != "Aged Brie": - if item.name != "Backstage passes to a TAFKAL80ETC concert": - if item.quality > 0: - if item.name != "Sulfuras, Hand of Ragnaros": - item.quality = item.quality - 1 - else: - item.quality = item.quality - item.quality - else: - if item.quality < 50: - item.quality = item.quality + 1 class Item: From 199c64de9ab8579dfcc4e4eb6e096e5c605bcd98 Mon Sep 17 00:00:00 2001 From: shanmukhanath Date: Sun, 12 Jun 2022 15:54:04 +0530 Subject: [PATCH 2/6] Added adjust_quality method to update the item quality value --- python/gilded_rose.py | 42 +++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/python/gilded_rose.py b/python/gilded_rose.py index 25588612..f1d68581 100755 --- a/python/gilded_rose.py +++ b/python/gilded_rose.py @@ -2,6 +2,11 @@ class GildedRose(object): + AGED_BRIE = "Aged Brie" + BACKSTAGE_PASSES = "Backstage passes to a TAFKAL80ETC concert" + SULFURAS = "Sulfuras, Hand of Ragnaros" + qualityIncrease = 1 + def __init__(self, items): self.items = items @@ -10,33 +15,40 @@ class GildedRose(object): self.update_item_quality(item) def update_item_quality(self, item): - if item.name != "Aged Brie" and item.name != "Backstage passes to a TAFKAL80ETC concert": + + if item.name != self.AGED_BRIE and item.name != self.BACKSTAGE_PASSES: if item.quality > 0: - if item.name != "Sulfuras, Hand of Ragnaros": - item.quality = item.quality - 1 + + if item.name != self.SULFURAS: + self.adjust_quality(item, - self.qualityIncrease) else: if item.quality < 50: - item.quality = item.quality + 1 - if item.name == "Backstage passes to a TAFKAL80ETC concert": + self.adjust_quality(item, self.qualityIncrease) + if item.name == self.BACKSTAGE_PASSES: if item.sell_in < 11: - if item.quality < 50: - item.quality = item.quality + 1 + self.adjust_quality(item, self.qualityIncrease) if item.sell_in < 6: - if item.quality < 50: - item.quality = item.quality + 1 - if item.name != "Sulfuras, Hand of Ragnaros": + 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 != "Aged Brie": - if item.name != "Backstage passes to a TAFKAL80ETC concert": + if item.name != self.AGED_BRIE: + if item.name != self.BACKSTAGE_PASSES: if item.quality > 0: - if item.name != "Sulfuras, Hand of Ragnaros": - item.quality = item.quality - 1 + if item.name != self.SULFURAS: + self.adjust_quality(item, - self.qualityIncrease) else: item.quality = item.quality - item.quality else: if item.quality < 50: - item.quality = item.quality + 1 + 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): + new_quality = item.quality + quality_increase_decrease + if new_quality >= 0 and new_quality <= 50: + item.quality = new_quality + class Item: From 9a4e29c7961ed84846075a0587b68169a94b40ef Mon Sep 17 00:00:00 2001 From: shanmukhanath Date: Sun, 12 Jun 2022 16:35:38 +0530 Subject: [PATCH 3/6] Flatterns 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 ae3d055a6d1e6921eabacb44b2d2eb1142bd9ef5 Mon Sep 17 00:00:00 2001 From: shanmukhanath Date: Sun, 12 Jun 2022 16:42:44 +0530 Subject: [PATCH 4/6] 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 9bfc90dda9c4b29a492b6527e208b67f303233ad Mon Sep 17 00:00:00 2001 From: shanmukhanath Date: Sun, 12 Jun 2022 17:01:41 +0530 Subject: [PATCH 5/6] flattern 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 8e1fa5a75cf79b5d5d13693c9f36ce237d1f22aa Mon Sep 17 00:00:00 2001 From: shanmukhanath Date: Sun, 12 Jun 2022 17:09:12 +0530 Subject: [PATCH 6/6] 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):