diff --git a/nim/.gitignore b/nim/.gitignore new file mode 100644 index 00000000..32e1dc0f --- /dev/null +++ b/nim/.gitignore @@ -0,0 +1,3 @@ +nimcache/ +nimblecache/ +htmldocs/ diff --git a/nim/src/gildedrose.nim b/nim/src/gildedrose.nim new file mode 100644 index 00000000..69129341 --- /dev/null +++ b/nim/src/gildedrose.nim @@ -0,0 +1,35 @@ +import items + +proc updateQuality*(items: var seq[Item]) = + for i in 0 ..< items.len: + if items[i].name != "Aged Brie" and items[i].name != "Backstage passes to a TAFKAL80ETC concert": + if items[i].quality > 0: + if items[i].name != "Sulfuras, Hand of Ragnaros": + 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 + + if items[i].name != "Sulfuras, Hand of Ragnaros": + 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: + if items[i].name != "Sulfuras, Hand of Ragnaros": + 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 diff --git a/nim/src/items.nim b/nim/src/items.nim new file mode 100644 index 00000000..bb9527dd --- /dev/null +++ b/nim/src/items.nim @@ -0,0 +1,12 @@ +import strformat + +type + Item* = object + name*: string + sellIn*, quality*: int + +proc initItem*(name: string, sellIn, quality: int): Item = + Item(name: name, sellIn: sellIn, quality: quality) + +proc `$`*(item: Item): string = + &"{item.name}, {item.sellIn}, {item.quality}" diff --git a/nim/test/gilded.nim b/nim/test/gilded.nim new file mode 100644 index 00000000..fa441583 --- /dev/null +++ b/nim/test/gilded.nim @@ -0,0 +1,10 @@ +import unittest +import ../src/items +import ../src/gildedrose + +suite "Gilded Rose": + + test "foo": + var items = @[initItem("foo", 0, 0)] + items.updateQuality() + check items[0].name == "fixme"