package kernel.function; import kernel.Cell; import kernel.Formula; import kernel.Grid; import kernel.LanguageEnum; import java.io.Serializable; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; abstract public class Function implements Formula, Serializable { private static final long serialVersionUID = 1L; public Map names = new HashMap<>(); public List listCells; public Function(List listCells) { this.listCells = listCells; } abstract public double eval(); public String getDevelopedFormula() { return names.get(Grid.language) + "(" + this.listCells.stream() .map(Cell::getDevelopedFormula) .collect(Collectors.joining(",")) + ")"; } public String toString() { return names.get(Grid.language) + "(" + this.listCells.stream() .map(Cell::getId) .collect(Collectors.joining(",")) + ")"; } public boolean createCycle(Cell cell) { if (!this.listCells.contains(cell)) { for (Cell currentCell : this.listCells) if (currentCell.containFormula() && currentCell.getFormula().createCycle(cell)) return true; } else return true; return false; } public List getUtilisedCells() { return this.listCells; } }