Exemple #1
0
        public static int[] GetElementForRotation(int orderIndex)
        {
            List <int> rotationElements = new List <int>();

            try
            {
                if (!SortedElements.Contains(Helper.InputArray[orderIndex - 1]) && !SortedElements.Contains(Helper.InputArray[orderIndex - 2]))
                {
                    rotationElements.Add(Helper.InputArray[orderIndex - 2]);
                    rotationElements.Add(Helper.InputArray[orderIndex - 1]);
                    rotationElements.Add(Helper.InputArray[orderIndex]);

                    return(rotationElements.ToArray());
                }

                else if (!SortedElements.Contains(Helper.InputArray[orderIndex - 1]) && !SortedElements.Contains(Helper.InputArray[orderIndex + 1]))
                {
                    rotationElements.Add(Helper.InputArray[orderIndex - 1]);
                    rotationElements.Add(Helper.InputArray[orderIndex]);
                    rotationElements.Add(Helper.InputArray[orderIndex + 1]);

                    return(rotationElements.ToArray());
                }

                else if (!SortedElements.Contains(Helper.InputArray[orderIndex]) && SortedElements.Contains(Helper.InputArray[orderIndex - 2]) || SortedElements.Contains(Helper.InputArray[orderIndex - 1]))
                {
                    return(rotationElements.ToArray());
                }

                return(rotationElements.ToArray());
            }
            catch (Exception)
            {
                if (Helper.InputArray.Count() - SortedElements.Count() < 3)
                {
                    return(rotationElements.ToArray());
                }

                if (orderIndex + 1 <= Helper.InputArray.Length)
                {
                    rotationElements.Add(Helper.InputArray[orderIndex - 1]);
                    rotationElements.Add(Helper.InputArray[orderIndex]);
                    rotationElements.Add(Helper.InputArray[orderIndex + 1]);

                    return(rotationElements.ToArray());
                }
                else
                {
                    return(rotationElements.ToArray());
                }
            }
        }
Exemple #2
0
        public static ResponseModel SortControl()
        {
            ResponseModel response;

            SortedElements.Clear();


            if (Helper.InputArray.Count() < 3)
            {
                return(response = new ResponseModel()
                {
                    IsResultTrue = false,
                    IsSortedSuccess = true
                });
            }

            for (int i = 0; i < Helper.InputArray.Length; i++)
            {
                if (i + 1 != Helper.InputArray[i])
                {
                    var con = true;
                    do
                    {
                        if (i + 1 == Helper.InputArray[i])
                        {
                            SortedElements.Add(Helper.InputArray[i]);
                            con = false;
                            break;
                        }

                        var orderIndex       = Array.IndexOf(Helper.InputArray, i + 1);
                        var rotationElements = GetElementForRotation(orderIndex);

                        if (rotationElements.Count() == 0 || rotationElements == null)
                        {
                            return(response = new ResponseModel()
                            {
                                IsResultTrue = false,
                                IsSortedSuccess = true
                            });
                        }

                        Helper.InputArray = Rotation(Helper.InputArray, rotationElements[0], rotationElements[1], rotationElements[2]);
                    } while (con);
                }
                else
                {
                    SortedElements.Add(Helper.InputArray[i]);
                }
            }

            for (int i = 0; i < SortedElements.ToArray().Length; i++)
            {
                if (SortedElements[i] != i + 1)
                {
                    return(response = new ResponseModel()
                    {
                        IsResultTrue = false,
                        IsSortedSuccess = true
                    });
                }
            }

            if (SortedElements.Count() != Helper.InputArray.Length)
            {
                return(response = new ResponseModel()
                {
                    IsResultTrue = false,
                    IsSortedSuccess = true
                });
            }

            return(response = new ResponseModel()
            {
                IsResultTrue = true,
                IsSortedSuccess = true
            });
        }