У меня есть список чисел, {1,2,3,4, ..., End}, где указан End.Я хочу отобразить X ближайших чисел вокруг заданного числа Find
в списке.Если x нечетно, я хочу, чтобы дополнительная цифра шла больше стороны.
Пример (базовый регистр)
End: 6
X: 2
Find: 3
Результат должен быть: {2,3,4}
Другой пример (связанный случай):
End: 6
X: 4
Find: 5
Результат должен быть: {2,3,4,5,6}
Еще один пример (нечетный случай):
End: 6
X: 3
Find: 3
Результат должен быть: {2,3,4,5}
Я предполагаю, что было бы проще просто найти начальное и конечное значение, чем на самом делесоздание списка, но мне все равно, так или иначе.
Я использую C # 4.0, если это имеет значение.
Редактировать: я могу придумать, как это сделать,но это включает в себя слишком много, если, иначе, если дела.
if (Find == 1)
{
Start = Find;
Stop = (Find + X < End ? Find + X : End);
}
else if (Find == 2)
{
if (X == 1)
{
Start = Find;
End = (Find + 1 < End ? Find + 1 : End);
}
...
}
Вы можете надеяться увидеть, куда это идет.Я предполагаю, что мне придется использовать (X% 2 == 0) для проверки четности / четности.Затем некоторые ограничения, такие как less = Find - X/2
и more = Find + X/2
.Я просто не могу определить путь наименьшего числа случаев.
Правка II: Я также должен уточнить, что я на самом деле не создаю список {1,2,3,4 ... Конец}, но, возможно, мне нужно просто начать с Find-X / 2.