示例#1
0
 public static NumberWithIndex GetGreaterNumber(NumberPair pair)
 {
     if (pair.FirstNumber.Number > pair.SecondNumber.Number)
     {
         return(pair.FirstNumber);
     }
     return(pair.SecondNumber);
 }
示例#2
0
 public static bool BothNumberAreSameType(NumberPair pair)
 {
     if (CheckEvenOdd(pair.FirstNumber.Number) == CheckEvenOdd(pair.SecondNumber.Number))
     {
         return(true);
     }
     return(false);
 }
示例#3
0
        public static List <int> ProcessInput(List <string[]> inputList)
        {
            var FinalList = new List <int>();
            //var numberPair = new NumberPair();
            var  nextIndexStart = 0;
            bool nextTakeIsEven = false;

            var firstRow = 0;


            foreach (var line in inputList)
            {
                if (firstRow == 0)
                {
                    var check = CheckEvenOdd(Convert.ToInt32(line[nextIndexStart]));
                    FinalList.Add(Convert.ToInt32(line[firstRow]));
                    if (check == (int)EvenOdd.Odd)
                    {
                        nextTakeIsEven = true;
                    }
                    firstRow++;
                    continue;
                }
                var numberPair = new NumberPair();

                var numberWithIndex = new NumberWithIndex();
                numberWithIndex.Number  = Convert.ToInt32(line[nextIndexStart]);
                numberWithIndex.Index   = nextIndexStart;
                numberPair.FirstNumber  = numberWithIndex;
                numberWithIndex         = new NumberWithIndex();
                numberWithIndex.Number  = Convert.ToInt32(line[nextIndexStart + 1]);
                numberWithIndex.Index   = nextIndexStart + 1;
                numberPair.SecondNumber = numberWithIndex;

                if (nextTakeIsEven)
                {
                    if (BothNumberAreSameType(numberPair))
                    {
                        var choosenNumber = GetGreaterNumber(numberPair);
                        nextIndexStart = choosenNumber.Index;
                        FinalList.Add(choosenNumber.Number);
                    }
                    else
                    {
                        if (CheckEvenOdd(numberPair.FirstNumber.Number) == (int)EvenOdd.Even)
                        {
                            nextIndexStart = numberPair.FirstNumber.Index;
                            FinalList.Add(numberPair.FirstNumber.Number);
                        }
                        else
                        {
                            nextIndexStart = numberPair.SecondNumber.Index;
                            FinalList.Add(numberPair.SecondNumber.Number);
                        }
                    }
                    nextTakeIsEven = false;
                }
                else
                {
                    if (BothNumberAreSameType(numberPair))
                    {
                        var choosenNumber = GetGreaterNumber(numberPair);
                        nextIndexStart = choosenNumber.Index;
                        FinalList.Add(choosenNumber.Number);
                    }
                    else
                    {
                        if (CheckEvenOdd(numberPair.FirstNumber.Number) == (int)EvenOdd.Odd)
                        {
                            nextIndexStart = numberPair.FirstNumber.Index;
                            FinalList.Add(numberPair.FirstNumber.Number);
                        }
                        else
                        {
                            nextIndexStart = numberPair.SecondNumber.Index;
                            FinalList.Add(numberPair.SecondNumber.Number);
                        }
                    }
                    nextTakeIsEven = true;
                }
            }
            return(FinalList);
        }