package codewars;
//--https://www.codewars.com/kata/55f5efd21ad2b48895000040/train/java
import java.util.*;
public class MaxSumDigits{
private static Boolean valid(long num, int maxsm){
String str = String.valueOf(num);
for(int i = 0; i <= str.length() - 4; i++){
int sum = 0;
for(int j = i; j < i+4; j++){
sum += str.charAt(j) - '0';
if(sum > maxsm){
return false;
}
}
}
return true;
}
public static long[] maxSumDig(long nmax, int maxsm){
List<Long> list = new ArrayList<Long>();
for(long i = 1000; i <= nmax; i++){
if(MaxSumDigits.valid(i, maxsm)){
list.add(i);
}
}
long sum = 0;
for(Long x : list){
sum += x;
}
long mean = sum / list.size();
long nearest = 0;
if(list.contains(means)){
nearest = mean;
}else{
for(int i=0; i<list.size(); i++){
long temp = list.get(i);
if(temp < mean){
continue;
}else{
nearest = temp - mean > mean - list.get(i - 1) ? list.get(i - 1) : temp;
break;
}
}
}
return new long[]{list.size(), nearest, sum};
}
}