package org.murex.dojo; import java.util.function.Function; /** * Created by mkobeissi on 09/09/2015. */ public class NamesScore { public final int ASCII_OFFSET = 64; private final Function<String[],String []> sorter; private NamesScore(Function<String[], String[]> sorter) { this.sorter = sorter; } public static NamesScore namesScore() { return namesScore(Sorters.defaultSorter()); } public static NamesScore namesScore(Function<String[],String []> sorter) { return new NamesScore(sorter); } public int calculate(String[] names) { int result = 0; for (int i = 0; i < names.length; ++i) { result += alphabetScore(names[i]) * positionAt(i); } return result; } public String[] sort(String[] names) { return sorter.apply(names); } public int alphabetScore(String name) { int score = 0; for(int i=0;i<name.length();i++){ score+= name.charAt(i) - ASCII_OFFSET; } return score; } public int positionAt(int index) { return index + 1; } }