コード例 #1
0
        /// <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);
        }