package jcgp.modules.function; import jcgp.exceptions.InvalidArgumentsException; import jcgp.population.Connection; public class Arithmetic { public static class Addition extends Function { private int arity = 2; @Override public Integer run(Connection... connections) { if (connections.length < arity) { throw new InvalidArgumentsException("Not enough connections were given."); } else { Integer arg1 = ((Integer) connections[0].getValue()); Integer arg2 = ((Integer) connections[1].getValue()); Integer result = arg1 + arg2; return result; } } @Override public int getArity() { return arity; } } public static class Subtraction extends Function { private int arity = 2; @Override public Integer run(Connection... connections) { if (connections.length < arity) { throw new InvalidArgumentsException("Not enough connections were given."); } else { Integer arg1 = ((Integer) connections[0].getValue()); Integer arg2 = ((Integer) connections[1].getValue()); Integer result = arg1 - arg2; return result; } } @Override public int getArity() { return arity; } } public static class Multiplication extends Function { private int arity = 2; @Override public Integer run(Connection... connections) { if (connections.length < arity) { throw new InvalidArgumentsException("Not enough connections were given."); } else { Integer arg1 = ((Integer) connections[0].getValue()); Integer arg2 = ((Integer) connections[1].getValue()); Integer result = arg1 * arg2; return result; } } @Override public int getArity() { return arity; } } public static class Division extends Function { private int arity = 2; @Override public Integer run(Connection... connections) { if (connections.length < arity) { throw new InvalidArgumentsException("Not enough connections were given."); } else { Integer arg1 = ((Integer) connections[0].getValue()); Integer arg2 = ((Integer) connections[1].getValue()); Integer result; if (arg2 == 0) { result = 0; } else { result = arg1 / arg2; } return result; } } @Override public int getArity() { return arity; } } }