Софтуерно Инженерство
Loading...
+ Нов въпрос
boykopk avatar boykopk 146 Точки

На ред 52 commandArgs[0] трябва да е 1.

При проверката ти на "shift" връща с 1 елемент повече отзад.

Ако го промениш така минава без последния тест където не минава заради изискването за памет.

else if (commandArgs[0] == "shift")
                {
                    int positions = int.Parse(commandArgs[1]);
                    for (int i = 0; i < positions; i++)
                    {
                        int lastElement = numbers[0];
                        for (int j = 0; j < numbers.Count - 1; j++)
                        {
                            numbers[j] = numbers[j + 1];
                        }
                        numbers[numbers.Count - 1] = lastElement;

                    }
                }

 

За да мине и последдният тест трябва да замениш:

var commandArgs = command.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();

с

string[] commandArgs = command.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

0
19/10/2017 11:28:42
boykopk avatar boykopk 146 Точки

Поиграх си и с твоя if:

else if (commandArgs[0] == "shift")
                {
                    int number = int.Parse(commandArgs[1]);
                    if (number > numbers.Count)
                    {
                        while (number > numbers.Count)
                        {
                            number = number - numbers.Count;
                        }
                    }

                    var rem = numbers.Take(number).ToList();
                    numbers.RemoveRange(0, number);
                    numbers.AddRange(rem);
                }

Трябва да се отчетат случаите когато shift е по-голямо от броя на елементите.

0