Exemple #1
0
        private bool CheckNumber(int number, List <Digit> actualDigits)
        {
            var workingLightIndex = 0;
            var actualDigitIndex  = 0;
            var expectedDigits    = _digitEngine.ToDigits(number);

            if (expectedDigits.Count != actualDigits.Count)
            {
                while (_digitEngine.CheckDigit(actualDigits[0], 0) && actualDigitIndex + expectedDigits.Count < actualDigits.Count)
                {
                    actualDigitIndex++;
                }
            }

            if (actualDigitIndex + expectedDigits.Count != actualDigits.Count)
            {
                throw new ArgumentException();
            }

            if (expectedDigits.Count != _digitWorkingLightMasks.Count)
            {
                workingLightIndex = _digitWorkingLightMasks.Count - expectedDigits.Count;
            }

            for (var i = 0; i < expectedDigits.Count; ++i)
            {
                if (!CheckDigit(expectedDigits[i].Mask, actualDigits[actualDigitIndex + i].Mask, _digitWorkingLightMasks[workingLightIndex + i]))
                {
                    return(false);
                }
            }

            return(true);
        }
Exemple #2
0
        public List <List <Digit> > GenerateDigits(int number)
        {
            var result = new List <List <Digit> >();

            for (var i = number; i >= 0; --i)
            {
                var digits = _digitEngine.ToDigits(i);
                result.Add(digits);
            }

            return(result);
        }