public void EvenValueReturnsHalf() { var startStep = new CollatzStep { Value = 24, Step = 8 }; var expectedStep = new CollatzStep { Value = 12, Step = 9 }; var actualStep = CollatzStepCalculator.Calculate(startStep); Assert.Equal(expectedStep, actualStep); }
public void OddValueReturnsTriplePlusOne() { var startStep = new CollatzStep { Value = 35, Step = 0 }; var expectedStep = new CollatzStep { Value = 106, Step = 1 }; var actualStep = CollatzStepCalculator.Calculate(startStep); Assert.Equal(expectedStep, actualStep); }
public static CollatzStep Calculate(CollatzStep input) { if (input.Value == 1) { return(input); } int nextStep = input.Step + 1; int nextValue = (input.Value % 2 == 0) ? input.Value / 2 : (input.Value * 3) + 1; return(new CollatzStep { Value = nextValue, Step = nextStep }); }