powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
25 сообщений из 98, страница 2 из 4
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39730977
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tiskatelsql
Petro123public static class
внутри
Shocker.ProIEnumerable<T> и методы расширения. Напиши свой.
И ты уже не пользователь LINQ, а можно сказать соавтор
+1)
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39731567
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var _array = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

            var result = _array.Select((val, ind) => new { v = val, i = ind }).GroupBy(x => x.i / 3);
        }
    }
}
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39732683
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Агнец за бортом,

Однако тут не массив массивов, а массив анонимных классов
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39732740
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2,

Ну вот, теперь к Select -у поставь себе в план и GroupBy к изучению.
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735435
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
int[] range = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

var result = range
    .Select((item, index) => new { item, index })
    .GroupBy(x => x.index / 3)
    .Select(x => x.Select(y => y.item).ToArray())
    .ToArray();
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735472
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
static class Program    {

	public static IEnumerable<int[]> By3 (this int[] a){
		for(int i = 0; i < a.Length; i += 3) {
			var r = new int[a.Length - i > 3 ? 3 : a.Length - i];
			r[0] = a[i];
			if(i+1 < a.Length) r[1] = a[i+1];
			if(i+2 < a.Length) r[2] = a[i+2];
			yield return r;
		}
	}

	static void Main(string[] args)
	{
		var arr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
		foreach(var a in arr.By3()) {
			foreach(var i in a) Console.Write(i + " ");
			Console.WriteLine("");
		}
	}
}
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735523
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
закину свои 5 копеек :)
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
class Program
{
    static void Main(string[] args)
    {
        IEnumerable<int> sourceEnumerable = Enumerable.Range(0, 86);
        IEnumerable<IEnumerable<int>> split = sourceEnumerable.Splite(5);
        foreach (IEnumerable<int> bucket in split)
        {
            Console.Write("{ ");
            foreach (int i in bucket)
            {
                Console.Write($"{i:000} ");
            }
            Console.WriteLine("}");
        }
        Console.ReadKey();
    }
}

public static class EnumerableSplitter
{
    /// <summary> Разбивает перечисление на перечисления меньшего размера и возвращает пачками\корзина </summary>
    /// <param name="source">Исходное перечисление</param>
    /// <param name="bucketCapacity">Размер пачки\корзины</param>
    /// <returns>Перечисления пачек\корзин</returns>
    public static IEnumerable<IEnumerable<T>> Splite<T>(this IEnumerable<T> source, int bucketCapacity)
    {
        if (bucketCapacity < 1) throw new ArgumentOutOfRangeException(nameof(bucketCapacity));

        using (IEnumerator<T> enumerator = source.GetEnumerator())
        {
            while (enumerator.MoveNext())
            {
                yield return GetBucket(enumerator, bucketCapacity);
            }
        }
    }

    private static IEnumerable<T> GetBucket<T>(IEnumerator<T> enumerator, int bucketCapacity)
    {
        int count = 0;
        do
        {
            yield return enumerator.Current;
        }
        while (++count < bucketCapacity && enumerator.MoveNext());
    }
}
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735532
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlно заманчиво написать это одной строкой на LINQ,

...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735540
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомiskatelsqlно заманчиво написать это одной строкой на LINQ,


))
Для глупых задачек "поделить все на три" нету linq в одну строку.
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735563
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
смешно им, прост я привык хорошему...

на питоне это было бы

Код: powershell
1.
2.
3.
l = [1,2,3,4,5,6,7,8,9]

res = zip(*[iter(l)] * 3)
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735570
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlсмешно им, прост я привык хорошему...Тебе предложили несколько вариантов именно на Linq и именно в одну строку. Чем ты остался недоволен?
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735571
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЧем ты остался недоволен?

Кто сказал что я недоволен? Я так, пофлудить за компанию.
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735572
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К примеру, вот задачка, которая решается на Linq в одну строку
"Дан текст - слова из строчных английских букв. Напечатать все согласные буквы, которые входят только в одно слово."
На питоне получится?
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735573
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlЯ так, пофлудить за компанию.ты - ТС, не получится пофлудить за компанию )
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735580
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro"Дан текст - слова из строчных английских букв. Напечатать все согласные буквы, которые входят только в одно слово."

эээ, после запятой не понял...

и у меня с циферками в основном все связано. с текстом побуквенно и не приходилось никогда, так что незнаю.
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735585
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlэээ, после запятой не понял...в предложении несколько слов. Есть буквы, которые встречаются только в одном из этих слов.

iskatelsqlи у меня с циферками в основном все связано. с текстом побуквенно и не приходилось никогда, так что незнаю.А в чем разница между массивом целых чисел и массивом целых чисел, которые представляют собой коды букв?
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735587
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlсмешно им, прост я привык хорошему...тогда придума1 более жизненные задачи.
Чем "А и Б сидели на трубе".
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735591
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123тогда придума1 более жизненные задачи.
Ну это очень жизненная задача, каждый раз рисуя очередную ф-цию не отпускает ощющение что я делаю все зря, а вопрос можно решить одной хитрой строчкой...


Shocker.Pro ,

да фиг его знает, прост неестественность задачи смущает. студентов подобным гоняют, но в жизни я себе слабо представляю зачем стоит искать согласную букву...
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735598
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Для глупых задачек "поделить все на три" нету linq в одну строку.

Во первых - есть.
Во вторых - что хвостовские замашки?

iskatelsql
Код: python
1.
res = zip(*[iter(l)] * 3)





Нефига-се к "хорошему". Это весь питон такой?
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735600
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какой сакральный смысл писать код в 1 строку?
качество читаемости это не дает, производительности это, как правило, не дает, а может даже на оборот, размер файла уменьшается, но если следовать принципам Solid то он и без этого большим не будет.
я не агитирую, но мне бы хотелось понять, почему автор считает, что писать в 1 строку, это хорошо, а в 20 строк, это плохо?
с точки зрения вызова, на много будет понятнее, если будет написано

Массивы = РазбейМнеМассив(исходныйМассив, по 10 штук);
чем:
Массивы = СкройАнонимныйТип(СгруппируйЭлементыПоИндексу(ВерниЭлементыСИндексом(Исходный массив), по 10 штук))
или цепочкой
Массивы = исходныйМассив.ВерниЭлементыСИндексом.СгруппироуйЭлементы.СкройАнонимныйТип .
При этом где основной аргумент "По 10 штук"? он где то внутри выражения группировки...

и это при том, что мне нужно заранее, либо знать количество элементов, либо аллоцировать кучу массивов, или использовать группировку которая мягко говоря не быстрее, я уже молчу про то, что надо при этом еще и делить.

Если вы написали класс который решает вашу задачу, то вызов метода из этого класса будет меньше, лаконичнее и понятнее, чем цепочка Linq вызовов, которая сама по себе не как не отражает те данные, которые должна вернуть и мне как человеку незнакомому с вашим кодом придется поработать головой, чтоб понять, что вообще происходит. Сама реализация этого класса может быть на чем угодно, хоть на том же Linq. И переделать этот код будет значительно проще.
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735602
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомВо вторых - что хвостовские замашки?не дай бог нам быть тут одинаковыми).
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735605
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesно мне бы хотелось понять, почему автор считает,

В - выразительность.
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735606
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes, лаконичнее и понятнее, чем цепочка Linq вызовов,
Мало практики.

Roman Mejtesпридется поработать головой,
Вообще не лишне.


Roman MejtesИ переделать этот код будет значительно проще.
Пишите, чтоб не переделывать. Что за мания, переделывать и переопределять?
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735610
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlНу это очень жизненная задача, каждый раз рисуя очередную ф-циюобчно программист на ранг выше и ниже смотрит.
Обычно такие задачи это нижний системный уровень
iskatelsqlВобщем не суть, главное чтоб разбить массив по тройкам.
Т.е. linq не применяют, а ты его в тему вставил.
...
Рейтинг: 0 / 0
Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
    #39735617
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Т.е. linq не применяют, а ты его в тему вставил.

Вставил по двум причинам.

1 мне показалось что кроме как на нем это одной строчкой не сделать
2 я только изучаю, и примеры, которые ближе к моим задачам не лишние
...
Рейтинг: 0 / 0
25 сообщений из 98, страница 2 из 4
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]