Array Manipulator
Здравейте, имам проблем със задача 5 оттемата за Листове.
Джъдж ми дава 58/100 точки.
Някой може ли да ми каже къде бъркам?
Ето ми и кода : https://pastebin.com/D3CaYFnn
Благодаря предварително!
Здравейте, имам проблем със задача 5 оттемата за Листове.
Джъдж ми дава 58/100 точки.
Някой може ли да ми каже къде бъркам?
Ето ми и кода : https://pastebin.com/D3CaYFnn
Благодаря предварително!
На ред 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);
Поиграх си и с твоя 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 е по-голямо от броя на елементите.