Как из числа сделать три числа внутри Select в Linq и добавить к каждому числу индекс?
На вход поступает строка, содержащая числа, разделенные запятой.
Из каждого числа n нужно получить три числа: n-1, n, n+1 . Кроме этого, к каждому из них записать индекс числа n.
Что получаем на вход:
1,2,3
Что должны получить на выход:
0 0
1 0
2 0
1 1
2 1
3 1
2 2
3 2
4 2
Смог только такую конструкции выстроить. Не понимаю каким образом преобразовать строку в число и сделать несколько математический операций n-1, n, n+1
public static void Main()
{
string n = Console.ReadLine();
var s = n.Split(",");
var result = s.SelectMany((s1, index) => s1.Select(c => $"{c} {index}"));
foreach (var x in result)
{
Console.WriteLine($"{x}");
}
}
Ответы (1 шт):
Автор решения: Дима Рейхц
→ Ссылка
Еще можно через массив чисел.
public class MainClass
{
public static void Main()
{
var numbers = Console.ReadLine().Split(',').Select(int.Parse);
var result = numbers.SelectMany((n, index) => new [] { n - 1, n, n + 1 }
.Select(n => $"{n} {index}"));
foreach (var item in result)
{
Console.WriteLine(item);
}
}
}