From ee775910b2653f870b17eb8a70238cb21060c50c Mon Sep 17 00:00:00 2001 From: mgd Date: Fri, 11 Oct 2024 11:24:16 +0100 Subject: [PATCH] Ammendments to update-quality - logic of if statments changed to if not - removed min/max - Strings for Sulfuras and Backstage pass made to exactly match specification - Code structure is based more on the clojure version --- elisp/gilded-rose.el | 48 ++++++++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/elisp/gilded-rose.el b/elisp/gilded-rose.el index 6e5fed4c..bf0a87b2 100644 --- a/elisp/gilded-rose.el +++ b/elisp/gilded-rose.el @@ -4,24 +4,34 @@ (defun update-quality (items) (dolist (item items) - (if (string= (plist-get item :name) "Aged Brie") - (plist-put item :quality (min 50 (1+ (plist-get item :quality)))) - - (if (string= (plist-get item :name) "Backstage passes") - (if (> (plist-get item :sell-in) 10) - (plist-put item :quality (plist-get item :quality)) - - (if (and (<= (plist-get item :sell-in) 10) (> (plist-get item :sell-in) 5)) - (plist-put item :quality (min 50 (+ (plist-get item :quality) 2))) - - (if (and (<= (plist-get item :sell-in) 5) (> (plist-get item :sell-in) 0)) - (plist-put item :quality (min 50 (+ (plist-get item :quality) 3))) - - (plist-put item :quality 0)))) - - (if (string= (plist-get item :name) "Sulfuras") - (plist-put item :quality (plist-get item :quality)) - - (plist-put item :quality (max 0 (1- (plist-get item :quality))))))))) + (if (and (not (string= (plist-get (car item) :name) "Aged Brie")) + (not (string= (plist-get (car item) :name) "Backstage passes to a TAFKAL80ETC concert"))) + + (when (> (plist-get (car item) :quality) 0) + (when (not (string= (plist-get (car item) :name) "Sulfuras, Hand of Ragnaros")) + (setf (plist-get (car item) :quality) (1- (plist-get (car item) :quality))))) + + (when (< (plist-get (car item) :quality) 50) + (setf (plist-get (car item) :quality) (1+ (plist-get (car item) :quality))) + (when (string= (plist-get (car item) :name) "Backstage passes to a TAFKAL80ETC concert") + (when (< (plist-get (car item) :sell-in) 11) + (when (< (plist-get (car item) :quality) 50) + (setf (plist-get (car item) :quality) (1+ (plist-get (car item) :quality))))) + (when (< (plist-get (car item) :sell-in) 6) + (when (< (plist-get (car item) :quality) 50) + (setf (plist-get (car item) :quality) (1+ (plist-get (car item) :quality))))))) + + (when (not (string= (plist-get (car item) :name) "Sulfuras, Hand of Ragnaros")) + (setf (plist-get (car item) :sell-in) (1- (plist-get (car item) :sell-in)))) + + (when (< (plist-get (car item) :sell-in) 0) + (if (not (string= (plist-get (car item) :name) "Aged Brie")) + (if (not (string= (plist-get (car item) :name) "Backstage passes to a TAFKAL80ETC concert")) + (when (> (plist-get (car item) :quality) 0) + (when (not (string= (plist-get (car item) :name) "Sulfuras, Hand of Ragnaros")) + (setf (plist-get (car item) :quality) (1- (plist-get (car item) :quality))))) + (setf (plist-get (car item) :quality) 0)) + (when (< (plist-get (car item) :quality) 50) + (setf (plist-get (car item) :quality) (1+ (plist-get (car item) :quality))))))))) (provide 'gilded-rose)