package main type Item struct { name string sellIn, quality int } func UpdateQualityBrie(item *Item) { defer func() { item.sellIn = item.sellIn - 1 }() if item.quality == 50 { return } if item.quality == 49 && item.sellIn <= 0 { item.quality = 50 } if item.sellIn > 0 { item.quality++ } if item.sellIn <= 0 { item.quality += 2 } } func UpdateQuality(items []*Item) { for i := 0; i < len(items); i++ { if items[i].name == "Sulfuras, Hand of Ragnaros" { continue } if items[i].name == "Aged Brie" { UpdateQualityBrie(items[i]) continue } if items[i].name != "Backstage passes to a TAFKAL80ETC concert" { if items[i].quality > 0 { items[i].quality = items[i].quality - 1 } } else { if items[i].quality < 50 { items[i].quality = items[i].quality + 1 if items[i].name == "Backstage passes to a TAFKAL80ETC concert" { if items[i].sellIn < 11 { if items[i].quality < 50 { items[i].quality = items[i].quality + 1 } } if items[i].sellIn < 6 { if items[i].quality < 50 { items[i].quality = items[i].quality + 1 } } } } } items[i].sellIn = items[i].sellIn - 1 if items[i].sellIn < 0 { if items[i].name != "Aged Brie" { if items[i].name != "Backstage passes to a TAFKAL80ETC concert" { if items[i].quality > 0 { items[i].quality = items[i].quality - 1 } } else { items[i].quality = items[i].quality - items[i].quality } } else { if items[i].quality < 50 { items[i].quality = items[i].quality + 1 } } } } }