Beispiel #1
0
        private static int SolveCase(NumbersCase gCase)
        {
            int digits = gCase.A.ToString().Length;

            int[] powers = new [] { 0, 1, 2, 3, 4, 5, 6, 7, 8 }.Select(i => (int)Math.Pow(10, i)).ToArray();
            int   result = 0;

            var matchDict = new Dictionary <int, string>();

            for (int i = gCase.A; i <= gCase.B; i++)
            {
                if (matchDict.Count > 0)
                {
                    matchDict.Clear();
                }

                //Console.Write(i);
                for (int s = 1; s < digits; s++)
                {
                    int right = i % powers[s];
                    int left  = i - right;
                    int j     = right * powers[digits - s] + left / powers[s];
                    //Console.Write(":" + j);
                    if (j >= gCase.A && j > i && j <= gCase.B && !matchDict.ContainsKey(j))
                    {
                        result++;
                        matchDict[j] = "";
                        //Console.Write("*");
                    }
                }
                //Console.WriteLine();
            }

            return(result);
        }
Beispiel #2
0
        private static NumbersCase[] ReadFile(string filepath)
        {
            string[] lines  = File.ReadAllLines(filepath);
            int      cases  = int.Parse(lines[0]);
            var      result = new NumbersCase[cases];

            for (int caseNo = 1; caseNo < lines.Length; caseNo++)
            {
                var items = lines[caseNo].Split(' ').Select(s => int.Parse(s)).ToArray();

                result[caseNo - 1] = new NumbersCase {
                    A = items[0], B = items[1]
                };
            }
            return(result);
        }