mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2025-12-12 04:12:13 +00:00
Make Scheme version work.
This commit is contained in:
parent
c0a6824275
commit
1c530189bd
@ -1,8 +1,8 @@
|
|||||||
;;; Class ITEM
|
;;; Class ITEM
|
||||||
|
|
||||||
(define-structure item
|
(define-record-type item (make-item name sell-in quality) item? name sell-in quality)
|
||||||
(name sell-in quality))
|
;; define-record-type ... SRFI-9
|
||||||
;; defines make-item, item?, item-name, item-sell-in, item-quality, set-item-name!, set-item-sell-in!, set-item-quality!
|
;; creates make-item, item?, item-name, item-sell-in, item-quality, item-name-set!, item-sell-in-set!, item-quality-set!
|
||||||
|
|
||||||
(define (item-to-string item)
|
(define (item-to-string item)
|
||||||
(string-append (item-name item)
|
(string-append (item-name item)
|
||||||
@ -11,36 +11,36 @@
|
|||||||
", "
|
", "
|
||||||
(number->string (item-quality item))))
|
(number->string (item-quality item))))
|
||||||
|
|
||||||
;;; Class GILDED-ROSE
|
;;; GILDED-ROSE
|
||||||
|
|
||||||
(define (update-quality items)
|
(define (update-quality items)
|
||||||
(for-each
|
(for-each
|
||||||
(lambda (item)
|
(lambda (item)
|
||||||
(if (and (not (string-= (item-name item) "Aged Brie"))
|
(if (and (not (string=? (item-name item) "Aged Brie"))
|
||||||
(not (string-= (item-name item) "Backstage passes to a TAFKAL80ETC concert")))
|
(not (string=? (item-name item) "Backstage passes to a TAFKAL80ETC concert")))
|
||||||
(if (> (item-quality item) 0)
|
(if (> (item-quality item) 0)
|
||||||
(if (not (string-= (item-name item) "Sulfuras, Hand of Ragnaros"))
|
(if (not (string=? (item-name item) "Sulfuras, Hand of Ragnaros"))
|
||||||
(set-item-quality! item (- (item-quality item) 1))))
|
(item-quality-set! item (- (item-quality item) 1))))
|
||||||
(cond ((< (item-quality item) 50)
|
(cond ((< (item-quality item) 50)
|
||||||
(set-item-quality! item (+ (item-quality item) 1))
|
(item-quality-set! item (+ (item-quality item) 1))
|
||||||
(if (string-= (item-name item) "Backstage passes to a TAFKAL80ETC concert")
|
(if (string=? (item-name item) "Backstage passes to a TAFKAL80ETC concert")
|
||||||
(if (< sell-in 11)
|
(if (< (item-sell-in item) 11)
|
||||||
(if (< (item-quality item) 50)
|
(if (< (item-quality item) 50)
|
||||||
(set-item-quality! item (+ (item-quality item) 1))))
|
(item-quality-set! item (+ (item-quality item) 1))))
|
||||||
(if (< sell-in 6)
|
(if (< (item-sell-in item) 6)
|
||||||
(if (< (item-quality item) 50)
|
(if (< (item-quality item) 50)
|
||||||
(set-item-quality! item (+ (item-quality item) 1))))))))
|
(item-quality-set! item (+ (item-quality item) 1))))))))
|
||||||
|
|
||||||
(if (not (string-= (item-name item) "Sulfuras, Hand of Ragnaros"))
|
(if (not (string=? (item-name item) "Sulfuras, Hand of Ragnaros"))
|
||||||
(set-item-sell-in! item (- (item-sell-in item) 1)))
|
(item-sell-in-set! item (- (item-sell-in item) 1)))
|
||||||
|
|
||||||
(if (< (item-sell-in item) 0)
|
(if (< (item-sell-in item) 0)
|
||||||
(if (not (string-= (item-name item) "Aged Brie"))
|
(if (not (string=? (item-name item) "Aged Brie"))
|
||||||
(if (not (string-= (item-name item) "Backstage passes to a TAFKAL80ETC concert"))
|
(if (not (string=? (item-name item) "Backstage passes to a TAFKAL80ETC concert"))
|
||||||
(if (> (item-quality item) 0)
|
(if (> (item-quality item) 0)
|
||||||
(if (not (string-= (item-name item) "Sulfuras, Hand of Ragnaros"))
|
(if (not (string=? (item-name item) "Sulfuras, Hand of Ragnaros"))
|
||||||
(set-item-quality! item (- (item-quality item) 1))))
|
(item-quality-set! item (- (item-quality item) 1))))
|
||||||
(set-item-quality! item (- (item-quality item) (item-quality item))))
|
(item-quality-set! item (- (item-quality item) (item-quality item))))
|
||||||
(if (< (item-quality item) 50)
|
(if (< (item-quality item) 50)
|
||||||
(set-item-quality! item (+ (item-quality item) 1))))))
|
(item-quality-set! item (+ (item-quality item) 1))))))
|
||||||
items))
|
items))
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
(display "OMGHAI!")
|
(display "OMGHAI!")
|
||||||
(newline)
|
(newline)
|
||||||
|
|
||||||
(let ((items (list (make-item "+5 Dexterity Vest" 10 20)
|
(let ((items (list (make-item "+5 Dexterity Vest" 10 20)
|
||||||
(make-item "Aged Brie" 2 0)
|
(make-item "Aged Brie" 2 0)
|
||||||
(make-item "Elixir of the Mongoose" 5 7)
|
(make-item "Elixir of the Mongoose" 5 7)
|
||||||
@ -14,16 +15,18 @@
|
|||||||
(make-item "Conjured Mana Cake" 3 6)))
|
(make-item "Conjured Mana Cake" 3 6)))
|
||||||
(days 2))
|
(days 2))
|
||||||
|
|
||||||
(define (x day)
|
(define (loop day)
|
||||||
(cond ((<= day days)
|
(cond ((< day days)
|
||||||
(display "-------- day ~a --------~%" i)
|
(display (string-append "-------- day " (number->string day) " --------"))
|
||||||
(newline)
|
(newline)
|
||||||
(display "name, sell-in, quality")
|
(display "name, sell-in, quality")
|
||||||
(newline)
|
(newline)
|
||||||
(for-each (lambda (item)
|
(for-each
|
||||||
(display (item-to-string item))
|
(lambda (item)
|
||||||
(newline))
|
(display (item-to-string item))
|
||||||
items)
|
(newline))
|
||||||
|
items)
|
||||||
|
(newline)
|
||||||
(update-quality items)
|
(update-quality items)
|
||||||
(x (- day 1)))))
|
(loop (+ day 1)))))
|
||||||
(x 0))
|
(loop 0))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user