Ejemplo n.º 1
0
        public AB checkAns_repeat(int _correctAns, int enteredNumbers) //O(N)
        {
            AB mAB = new AB();

            // check _A
            var enteredNumbersDigits = TearNumbersToList(enteredNumbers);
            var correctAnsNumbersDigits = TearNumbersToList(_correctAns);
            int _A_cnt = 0;
            var _A_index = new List<int>(); // for _B
            for (int i = 0; i < _digits; i++)
            {
                if (enteredNumbersDigits[i].Equals(correctAnsNumbersDigits[i]))
                {
                    _A_index.Insert(0, i); // for _B
                    _A_cnt++;
                }
            }
            mAB.A = _A_cnt;
            if (mAB.A == _digits)
            {
                mAB.B = 0;
                return mAB;
            }

            // check _B
            // remove _A numbers
            for (int i = 0; i < _A_index.Count; i++)
            {
                enteredNumbersDigits.RemoveAt(_A_index[i]);
                correctAnsNumbersDigits.RemoveAt(_A_index[i]);
            }

            // find method
            int _B_cnt = 0;
            for (int i = 0; i < enteredNumbersDigits.Count; i++)
            {
                int index = correctAnsNumbersDigits.IndexOf(enteredNumbersDigits[0]);
                if (index != -1)
                {
                    correctAnsNumbersDigits.Remove(index);
                    _B_cnt++;
                }
                enteredNumbersDigits.RemoveAt(0);
            }
            mAB.B = _B_cnt;
            return mAB;
        }
Ejemplo n.º 2
0
 public void reset() {
     _enteredNumbers = 0;
     _AB = new AB();
     _Log = new List<string>();
 }
Ejemplo n.º 3
0
 public void checkAnswer(int enteredNumbers) {
     _enteredNumbers = enteredNumbers;
     _AB = _checkAns( _correctAns , enteredNumbers);
     AddLog();
 }
Ejemplo n.º 4
0
 public BullsandCowsDelegate()
 {
     _enteredNumbers = 0;
     _AB = new AB();
     _Log = new List<string>();
 }
Ejemplo n.º 5
0
        public AB checkAns_nonrepeat(int _correctAns, int enteredNumbers) //O(N)
        {
            AB mAB = new AB();

            // check _A
            var enteredNumbersDigits = TearNumbersToList(enteredNumbers);
            var correctAnsNumbersDigits = TearNumbersToList(_correctAns);
            int _A_cnt = 0;
            var _A_index = new List<int>(); // for _B
            for (int i = 0; i < _digits; i++)
            {
                if (enteredNumbersDigits[i].Equals(correctAnsNumbersDigits[i]))
                {
                    _A_index.Insert(0, i); // for _B
                    _A_cnt++;
                }
            }
            mAB.A = _A_cnt;
            if (mAB.A == _digits)
            {
                mAB.B = 0;
                return mAB;
            }

            // check _B
            // remove _A numbers
            for (int i = 0; i < _A_index.Count; i++)
            {
                enteredNumbersDigits.RemoveAt(_A_index[i]);
                correctAnsNumbersDigits.RemoveAt(_A_index[i]);
            }
            // _B = (original amount of numbers in two sets) - (amount of numbers in the merged set)
            var enteredNumbersSet = new HashSet<int>(enteredNumbersDigits);
            var correctAnsNumbersSet = new HashSet<int>(correctAnsNumbersDigits);
            int oriAmount = enteredNumbersSet.Count + correctAnsNumbersSet.Count;
            enteredNumbersSet.UnionWith(correctAnsNumbersSet);
            mAB.B = oriAmount - enteredNumbersSet.Count;
            return mAB;
        }