11export class Item {
2- name : string ;
3- sellIn : number ;
4- quality : number ;
2+ name : string ;
3+ sellIn : number ;
4+ quality : number ;
55
6- constructor ( name , sellIn , quality ) {
7- this . name = name ;
8- this . sellIn = sellIn ;
9- this . quality = quality ;
10- }
6+ constructor ( name , sellIn , quality ) {
7+ this . name = name ;
8+ this . sellIn = sellIn ;
9+ this . quality = quality ;
10+ }
1111}
1212
1313export class GildedRose {
14- items : Array < Item > ;
14+ items : Array < Item > ;
1515
16- constructor ( items = [ ] as Array < Item > ) {
17- this . items = items ;
18- }
16+ constructor ( items = [ ] as Array < Item > ) {
17+ this . items = items ;
18+ }
19+
20+ updateQuality ( ) {
21+ for ( let i = 0 ; i < this . items . length ; i ++ ) {
22+ if ( this . items [ i ] . name != "Sulfuras, Hand of Ragnaros" ) {
23+ let qualityDifference = 1 ;
24+ if ( this . items [ i ] . name . includes ( "Conjured" ) ) {
25+ qualityDifference = 2 ;
26+ }
27+ if ( this . items [ i ] . sellIn <= 0 ) {
28+ qualityDifference *= 2 ;
29+ }
1930
20- updateQuality ( ) {
21- for ( let i = 0 ; i < this . items . length ; i ++ ) {
22- if ( this . items [ i ] . name != 'Aged Brie' && this . items [ i ] . name != 'Backstage passes to a TAFKAL80ETC concert' ) {
23- if ( this . items [ i ] . quality > 0 ) {
24- if ( this . items [ i ] . name != 'Sulfuras, Hand of Ragnaros' ) {
25- this . items [ i ] . quality = this . items [ i ] . quality - 1
26- }
27- }
28- } else {
29- if ( this . items [ i ] . quality < 50 ) {
30- this . items [ i ] . quality = this . items [ i ] . quality + 1
31- if ( this . items [ i ] . name == 'Backstage passes to a TAFKAL80ETC concert' ) {
32- if ( this . items [ i ] . sellIn < 11 ) {
33- if ( this . items [ i ] . quality < 50 ) {
34- this . items [ i ] . quality = this . items [ i ] . quality + 1
35- }
36- }
37- if ( this . items [ i ] . sellIn < 6 ) {
38- if ( this . items [ i ] . quality < 50 ) {
39- this . items [ i ] . quality = this . items [ i ] . quality + 1
40- }
41- }
42- }
43- }
44- }
45- if ( this . items [ i ] . name != 'Sulfuras, Hand of Ragnaros' ) {
46- this . items [ i ] . sellIn = this . items [ i ] . sellIn - 1 ;
47- }
48- if ( this . items [ i ] . sellIn < 0 ) {
49- if ( this . items [ i ] . name != 'Aged Brie' ) {
50- if ( this . items [ i ] . name != 'Backstage passes to a TAFKAL80ETC concert' ) {
51- if ( this . items [ i ] . quality > 0 ) {
52- if ( this . items [ i ] . name != 'Sulfuras, Hand of Ragnaros' ) {
53- this . items [ i ] . quality = this . items [ i ] . quality - 1
54- }
55- }
56- } else {
57- this . items [ i ] . quality = this . items [ i ] . quality - this . items [ i ] . quality
58- }
59- } else {
60- if ( this . items [ i ] . quality < 50 ) {
61- this . items [ i ] . quality = this . items [ i ] . quality + 1
62- }
63- }
64- }
31+ if ( this . items [ i ] . name != "Aged Brie" && this . items [ i ] . name != "Backstage passes to a TAFKAL80ETC concert" && this . items [ i ] . quality > 0 ) {
32+ this . items [ i ] . quality = this . items [ i ] . quality >= qualityDifference ? ( this . items [ i ] . quality - qualityDifference ) : 0 ;
6533 }
6634
67- return this . items ;
35+ if ( this . items [ i ] . name == "Aged Brie" && this . items [ i ] . quality < 50 ) {
36+ this . items [ i ] . quality = ( this . items [ i ] . quality + qualityDifference ) <= 50 ? ( this . items [ i ] . quality + qualityDifference ) : 50 ;
37+ }
38+
39+ if ( this . items [ i ] . name == "Backstage passes to a TAFKAL80ETC concert" && this . items [ i ] . quality < 50 ) {
40+ if ( this . items [ i ] . sellIn > 10 ) {
41+ this . items [ i ] . quality += qualityDifference ;
42+ } else if ( 5 < this . items [ i ] . sellIn && this . items [ i ] . sellIn <= 10 ) {
43+ this . items [ i ] . quality = ( this . items [ i ] . quality + 2 * qualityDifference ) <= 50 ? ( this . items [ i ] . quality + 2 * qualityDifference ) : 50 ;
44+ } else if ( 0 < this . items [ i ] . sellIn && this . items [ i ] . sellIn <= 5 ) {
45+ this . items [ i ] . quality = ( this . items [ i ] . quality + 3 * qualityDifference ) <= 50 ? ( this . items [ i ] . quality + 3 * qualityDifference ) : 50 ;
46+ } else {
47+ this . items [ i ] . quality = 0 ;
48+ }
49+ }
50+ this . items [ i ] . sellIn -= 1 ;
51+ }
6852 }
69- }
53+ return this . items ;
54+ }
55+ }
0 commit comments