Мне нужно создать программу, которая смешивает порядок слов в текстовом поле, когда я нажимаю кнопку, но порядок должен быть точно определен. Пользователь помещает предложение в текстовое поле, так что предложение отличается каждый раз. Порядок должен быть смешан с четными и нечетными числами. Допустим, что предложение "сегодня - прекрасный день". Теперь у нас есть 5 слов, и они должны быть смешаны нечетными числами и четными числами, поэтому порядок похож на этот "день сегодня красивый", потому что четные числа и нечетные числа идут вместе. сегодня [0], [2] и день [4] эти слова имеют четные числа, и они смешиваются друг с другом от самого большого до самого маленького, так что он идет от 4 до 0. То же самое с нечетными числами, но четными номерами имеют приоритет ( они должны быть первыми: 4,2,0,3,1). Может ли кто-нибудь дать мне пример того, как я могу это сделать?
Вы можете использовать LINQ-power:
string text = "today is a beautiful day";
var mixedWords = text.Split() // split by white-spaces
.Select((word, index) => new { word, index }) // select anonymous type
.GroupBy(x => x.index % 2) // remainder groups to split even and odd indices
.OrderBy(xg => xg.Key) // order by even and odd, even first
.SelectMany(xg => xg // SelectMany flattens the groups
.OrderByDescending(x => x.index) // order by index descending
.Select(x => x.word)); // select words from the anonymous type
string newText = string.Join(" ", mixedWords); // "day a today beautiful is"