/// <summary> /// https://projecteuler.net/problem=68 /// </summary> /// <param name="arguments"></param> /// <returns></returns> public static Result Magic5GonRing(Problem arguments) { var n = arguments.ListOfNumbers; var ringSize = arguments.IntNumber; var sideLength = 3; var ring = UtilityMath.GetPentagonalRing(n, sideLength, ringSize); // traverse ring in circular index from smaller outer node // if iendex go: n, 0, 1,..., n-2, n-1 var index = new int[ringSize]; var v = 0; index[0] = ringSize - 1; for (var i = 1; i < ringSize; i++) { index[i] = v; v++; } var builder = new StringBuilder(); foreach (var i in index) { var side = ring[i]; foreach (var d in side) { builder.Append(d.ToString()); } } string answer = builder.ToString(); var message = string.Format("The maximum 16-digit string for a \"magic\" 5-gon ring is {0}.", 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); }