private void OnRunAsynchronouslyWithVoidClick(object sender, RoutedEventArgs e) { using (Cursors.Wait.Bind(() => this.Cursor)) { this.Results.Text = string.Empty; BigInteger?value = null; if ((value = this.GetValue()) != null) { using (var stream = File.Create("output.txt")) { CollatzConjecture.CollatzReturningVoidAsync(value.Value, stream); this.Results.Text = stream.Length.ToString(); } } } }
private void OnRunSynchronouslyClick(object sender, RoutedEventArgs e) { using (Cursors.Wait.Bind(() => this.Cursor)) { this.Results.Text = string.Empty; BigInteger?value = null; if ((value = this.GetValue()) != null) { using (var writer = new StringWriter()) { CollatzConjecture.Collatz(value.Value, writer); this.Results.Text = MainWindow.GetLastSequenceValues(writer, 5); } } } }
public static int Steps(int number) { if (number <= 0) { throw new ArgumentException(); } if (number == 1) { return(0); } if (number % 2 == 0) { return(1 + CollatzConjecture.Steps(number / 2)); } else { return(1 + CollatzConjecture.Steps(3 * number + 1)); } }
// POST api/collatz public CollatzGetResponseMessage Post([FromBody] CollatzGetRequestMessage request) { var response = new CollatzGetResponseMessage { Value = request.Value }; BigInteger value = BigInteger.Zero; if (BigInteger.TryParse(request.Value, out value)) { response.Time = new Action( () => { if (request.PauseTime > 0) { Thread.Sleep(request.PauseTime); } response.Iterations = CollatzConjecture.Collatz(value); }).Time(); } return(response); }
public void Zero_steps_for_one() { Assert.Equal(0, CollatzConjecture.Steps(1)); }
public void Negative_value_is_an_error() { Assert.Throws <ArgumentException>(() => CollatzConjecture.Steps(-15)); }
public void Zero_is_an_error() { Assert.Throws <ArgumentException>(() => CollatzConjecture.Steps(0)); }
public void Large_number_of_even_and_odd_steps() { Assert.Equal(152, CollatzConjecture.Steps(1000000)); }
public void Even_and_odd_steps() { Assert.Equal(9, CollatzConjecture.Steps(12)); }
public void Divide_if_even() { Assert.Equal(4, CollatzConjecture.Steps(16)); }
public void Zero_is_an_error() { Assert.Throws <ArgumentOutOfRangeException>(() => CollatzConjecture.FindNumSteps(0)); }
public uint SampleTest(uint n) => CollatzConjecture.Hotpo(n);