@@ -20,30 +20,50 @@ public function findSafeReportsCount(array $reports, bool $applyProblemDampener
2020 foreach ($ reports as $ report ) {
2121 $ levels = explode (' ' , $ report );
2222
23- $ previousChange = '' ;
24- $ isSafeChange = true ;
25- $ dampenerUsed = false ;
23+ if ($ this ->isSafeReport ($ levels , $ applyProblemDampener )) {
24+ $ this ->safeReportsCount ++;
25+ }
26+ }
2627
27- for ($ i = 1 ; $ i < count ($ levels ); $ i ++) {
28- $ previousLevel = $ levels [$ i - 1 ];
29- $ currentLevel = $ levels [$ i ];
30- $ currentChange = $ previousLevel < $ currentLevel ? 'increase ' : 'decrease ' ;
28+ return $ this ->safeReportsCount ;
29+ }
3130
32- $ isSafeChange = $ this ->isSafeChange ($ previousLevel , $ currentLevel , $ previousChange , $ currentChange );
31+ /**
32+ * @param array $levels
33+ * @param bool $applyProblemDampener
34+ * @return bool
35+ */
36+ private function isSafeReport (array $ levels , bool $ applyProblemDampener = false ): bool
37+ {
38+ $ previousChange = '' ;
3339
34- if (!$ isSafeChange ) {
35- break ;
36- }
40+ for ($ i = 1 ; $ i < count ($ levels ); $ i ++) {
41+ $ previousLevel = $ levels [$ i - 1 ];
42+ $ currentLevel = $ levels [$ i ];
43+ $ currentChange = $ previousLevel < $ currentLevel ? 'increase ' : 'decrease ' ;
44+
45+ $ isSafeChange = $ this ->isSafeChange ($ previousLevel , $ currentLevel , $ previousChange , $ currentChange );
3746
38- $ previousChange = $ currentChange ;
47+ if (!$ isSafeChange && !$ applyProblemDampener ) {
48+ return false ;
3949 }
4050
41- if ($ isSafeChange ) {
42- $ this ->safeReportsCount ++;
51+ if (!$ isSafeChange && $ applyProblemDampener ) {
52+ for ($ j = 0 ; $ j < count ($ levels ); $ j ++) {
53+ $ levelsWithoutOneLevel = $ levels ;
54+ array_splice ($ levelsWithoutOneLevel , $ j , 1 , []);
55+ if ($ this ->isSafeReport ($ levelsWithoutOneLevel )) {
56+ return true ;
57+ }
58+ }
59+
60+ return false ;
4361 }
62+
63+ $ previousChange = $ currentChange ;
4464 }
4565
46- return $ this -> safeReportsCount ;
66+ return true ;
4767 }
4868
4969 /**
0 commit comments