/// <summary> /// https://projecteuler.net/problem=73 /// </summary> /// <param name="arguments"></param> /// <returns></returns> public static Result CountingFractionsInRange(Problem arguments) { var d = arguments.IntNumber; var bounds = arguments.ListOfNumbers; var begin = new UtilityMath.Fraction(bounds[0], bounds[1]); var end = new UtilityMath.Fraction(bounds[2], bounds[3]); var list = UtilityMath.GenerateFareySequence(d); var count = list.Count(fraction => fraction > begin && fraction < end); var answer = count.ToString(); var message = string.Format("The number of fractions lie between {0} and {1} in the sorted set of reduced proper fractions for d ≤ {2} is {3}.", begin.ToString(), end.ToString(), d, answer); if (Answers[arguments.Id] != answer) { message += string.Format(" => INCORRECT ({0})", Answers[arguments.Id]); } var r = new Result(arguments.Id, message) { Answer = answer }; return(r); }
/// <summary> /// https://projecteuler.net/problem=71 /// </summary> /// <param name="arguments"></param> /// <returns></returns> public static Result OrderedFractions(Problem arguments) { var integers = arguments.ListOfNumbers; var key = new UtilityMath.Fraction(integers[0], integers[1]); var d = arguments.IntNumber; var sort_list = UtilityMath.GetReducedProperFractions(d, key, true).ToList(); string answer = sort_list[0].Numerator.ToString(); var message = string.Format("The numerator of the fraction immediately to the left of {0} is {1}.", key.ToString(), answer); if (Answers[arguments.Id] != answer) { message += string.Format(" => INCORRECT ({0})", Answers[arguments.Id]); } var r = new Result(arguments.Id, message) { Answer = answer }; return(r); }