コード例 #1
0
        public SumMemoTable Generate(Int64 maxDigits, Int64 digitRange)
        {
            var maxLinearSum = maxDigits * digitRange;
            var maxSquareSum = maxDigits * digitRange * digitRange;

            var sumMemoTable = new SumMemoTable(maxDigits, digitRange);

            _strategy = new OneDigitGeneratorStrategy(sumMemoTable);
            _strategy.Run();

            for (var i = 1; i < maxDigits; i++)
            {
                for (var j = 0; j <= digitRange; j++)
                {
                    if (j == 0)
                    {
                        _strategy = new FirstDigitZeroGeneratorStrategy(sumMemoTable, i);
                    }
                    else
                    {
                        _strategy = new FirstDigitNonZeroGeneratorStrategy(sumMemoTable, i, j);
                    }

                    _strategy.Run();
                }
            }

            return sumMemoTable;
        }
コード例 #2
0
 public OneDigitGeneratorStrategy(SumMemoTable sumMemoTable)
 {
     _sumMemoTable = sumMemoTable;
 }
コード例 #3
0
 public FirstDigitZeroGeneratorStrategy(SumMemoTable sumMemoTable, Int64 numDigits)
 {
     _sumMemoTable = sumMemoTable;
     _numDigits = numDigits;
 }
 public FirstDigitNonZeroGeneratorStrategy(SumMemoTable sumMemoTable, Int64 numDigits, Int64 firstDigit)
 {
     _sumMemoTable = sumMemoTable;
     _numDigits = numDigits;
     _firstDigit = firstDigit;
 }
コード例 #5
0
 private void GenerateTables(Int64 maxDigits, Int64 digitRange)
 {
     _sumMemoTable = new SumMemoTableGenerator().Generate(maxDigits, digitRange);
     _primeTable = new PrimeTableGenerator().Generate(_sumMemoTable.MaxSquareSum);
 }