FOP-2425-Marathon/solution/H07/src/main/java/h07/ConvertNumberToPeanoExpressionImpl.java

23 lines
717 B
Java

package h07;
import h07.peano.PeanoNumberExpression;
import h07.peano.Zero;
import h07.peano.Successor;
import org.tudalgo.algoutils.student.annotation.StudentCreationRequired;
/**
* Converts a number expression to a Peano number expression.
*/
@StudentCreationRequired
public class ConvertNumberToPeanoExpressionImpl implements ConvertNumberToPeanoExpression {
@Override
public PeanoNumberExpression convert(NumberExpression numberExpression) {
int value = numberExpression.evaluate();
if (value == 0) {
return Zero::new;
} else {
return () -> new Successor(new ConvertNumberToPeanoExpressionImpl().convert(() -> value - 1).evaluate());
}
}
}