Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/1: Рейтинг темы: голосов - 1, средняя оценка - 5.00
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3

Совместное создание игры

08.01.2025, 12:45. Показов 45210. Ответов 942
Метки нет (Все метки)

 Комментарий администратора 
Обсуждение вынесено из темы Ищу человека для совместного изучения программирования


Цитата Сообщение от Royal_X Посмотреть сообщение
Вот на моем неигровом ноуте последний UE без проблем запускается и не тормозит даже.
ок.
если ТС готов варганить со мной сапера, то я сделаю ещё одну попытку его(пожалуй 4 версию) установить и испытать.

собсно что нужно: формально отображать некие графические модели на экране в нужном его месте нужного масштаба,
для теста сойдут спрайты - а потом можно и анимированные модели голых девочек,
на усмотрение геймдиза))

и больше ничаво.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.01.2025, 12:45
Ответы с готовыми решениями:

Для чего создан язык С++?
Для чего создан язык С++????

создан массив
создан массив автовладельцев, для каждого известны Ф.И.О., номер, адрес...,Выяснить есть ли автовладельцы у которых имеются больше 1-ой...

Теория игр, массивы
Есть задание (прикрепил его в виде файла к сообщению). Есть решение для 12-ого варианта на BORLANDC, у меня 2-ой. Я изменил в начале...

942
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
19.02.2025, 15:38
Цитата Сообщение от Royal_X Посмотреть сообщение
не давай готовую картинку
И дать 16 разноцветных квадратов)
1
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
19.02.2025, 16:04
Создаем фирму "Simple little programs". У неё не будет конкурентов.
1
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
19.02.2025, 19:13
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Создаем фирму "Simple little programs".
Такого я не придумаю точно.
В видео присутствуют ненормативная лексика.
Super Bunny Man
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
19.02.2025, 19:52
SmallEvil, любая говно-игра прикольна, если это мультиплеер. Но одиночная игра была бы скучной.
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
20.02.2025, 23:31
gunslinger, XLAT, SmallEvil, CoderHuligan, я взял картинку и раздробил её на куски 32 х 32. Высота и ширина оригинальной картинки делились на 32, поэтому без проблем создал куски. Получилось 384 куска, которые во вложении. Куски я не вращал. Названия кусков рандомные.

Задание: склеить куски, восстановить оригинальную картинку и выложить ее на форуме.

Разрешено использовать что угодно, WinAPI, Qt, wxWidgets, SFML, SDL, OpenCV, VCL и т.д.
Вложения
Тип файла: zip images.zip (829.1 Кб, 27 просмотров)
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
21.02.2025, 22:42
Цитата Сообщение от Royal_X Посмотреть сообщение
Получилось 384 куска
кажется, склеивать столько маленьких кусков будет сложновато. По крайней мере, у меня не получилось. Вот 96 кусков 160х150 смог склеить, но вот куски 32х32 слишком малы.
Написал прогу для склеивания, но есть несколько проблем.
Во-первых, тайл, который должен быть в верхнем левом углу нужно указать вручную. Сколько не попытался вычислить данный тайл автоматически, не получилось.
Во-вторых, с квадратными сетками проблем нет, но если оригинальное изображение были разделено по прямоугольной сетке (когда количество столбцов и рядов отличается), то иногда прога берет неверное количество столбцов...

Одним словом, задача оказалась нелегкой. Не знаю, будут ли у вас интересные идеи.
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
22.02.2025, 01:39  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
будут ли у вас интересные идеи.
1.
зоны кусочка пазла:
- левая
- правая
- верхняя
- нижняя

2.
каждая зона это матрица W x S
- S сторона квадрата
- W толщина зоны, где W >= 1 пиксель

3.
далее как в шахматах - комбинаторика.

4.
делаем оценку каждой пары зон
- одна к 383 * 4

5.
сортируем оценки

6.
стыкуем в том месте, где они самые высокие.

7.
готово.

8.
для самых хитрожопых вычислителей всегда найдется такой рисунок в "горошек", который не вычисляется.

9.
итого, рисунок должен иметь качество "вычисляемости".
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
22.02.2025, 02:40
XLAT, не все так просто, как кажется. Попробуй написать прогу, поймёшь, что всё не так уж легко.

Сравнить края кусков несложно. Я написал код для этого за 10 мин где-то.
Например, допустим нужно сравнить восточный край одного куска с западным краем второго куска. Тут просто вычисляется среднее арифметическое квадратов расстояний цветов пикселей (смысла вычислять квадратные корни нет). Таким образом, идеальное совпадение это 0, полное несовпадение это 4*255^2 (умножаем на 4 канала rgba).
Это все отлично работает.

У меня проблемы с определением левого верхнего куска. Когда он известен, остальные куски собирать не сложно. Я пытался его найти, путем перебора всех кусков, выбирая тот, у которого не находится ни северный, ни западный сосед с хорошим совпадением, но не всегда работает этот метод.

Также проблема с определением размеров сетки. Если она квадратная, то все просто. Но допустим, 384 куска это 24 * 12. Как это определить, что именно там 24 * 16, а не 32 * 12, например? Использую я один способ, но он зависит от константной величины - порога соответствия, который я ввел в коде. Но для разных изображений этот порог должен быть разным, поэтому не всегда работает.
1
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
22.02.2025, 09:47
У меня пока голова другими задачами забита, а то бы подключился. Может быть потом. Тут, думаю, не важно с какого тайла начать. Сравниваем по сторонам с оценкой граничных пикселей в каком-то диапазоне "весов". Когда все тайлы склеены, то первый угловой тайл найдется сам.
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
22.02.2025, 13:21  [ТС]
3
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
22.02.2025, 14:37
XLAT, у меня несколько вопросов:
- какое предназначение верхней левой консольки? Показывает команды, но не пишет от кого идут. Тем более, в левой правой консольке все это уже есть, но реализовано получше - там уже показывает принадлежность команд к конкретным клиентам.
- всё работает на одном ПК или оно может работать по всей LAN сети или даже через инет?
- может ли сервер вырубать клиентов?

Добавлено через 31 минуту
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Тут, думаю, не важно с какого тайла начать.
Да, не важно, с какого начать. Но если начать с верхнего левого, то будет удобнее при создании массива. Поэтому начинаю в левого верхнего угла. Но я сам понимаю, что такой подход неверный. Потому что нужно вручную задать, какой тайл соответствует верхнему левому куску.

Сейчас у меня такой код. Но, очевидно, его нужно полностью поменять. Мне этот код не нравится. Нужно придумать что-то получше.

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// Определяем размеры сетки. Количество стобцов и рядов берем по максимуму.
    int gridCols = images.size(); 
    int gridRows = images.size();
 
    // Создаем карту расположения изображений
    QList<QList<int>> imageGrid(gridRows, QList<int>(gridCols, -1));
 
    QList<int> usedIndices;
 
    // Первое изображение помещаем в левый верхний угол и начинаем именно с него.
    imageGrid[0][0] = 0;
    usedIndices.push_back(0);
 
    // Заполняем карту
    for (int i = 0; i < gridRows; ++i)
        for (int j = 0; j < gridCols; ++j)
        {
            if (i == 0 && j == 0) continue; // Пропускаем первый элемент
 
            // Ищем изображение, которое лучше всего подходит для текущей позиции
            int bestFit = -1;
            double bestScore = std::numeric_limits<double>::max();
 
            for (int k = 0; k < images.size(); ++k)
            {
                if (usedIndices.contains(k)) continue; // Пропускаем уже использованные изображения
 
                double score = 0;
 
                // Сравниваем с верхним соседом (N)
                if (i > 0 && imageGrid[i-1][j] != -1)
                    score += averageN(images[k], images[imageGrid[i-1][j]]);
 
                // Сравниваем с левым соседом (W)
                if (j > 0 && imageGrid[i][j-1] != -1)
                    score += averageW(images[k], images[imageGrid[i][j-1]]);
 
                // Сравниваем с нижним соседом (S), если он уже заполнен
                if (i < gridRows - 1 && imageGrid[i+1][j] != -1)
                    score += averageS(images[k], images[imageGrid[i+1][j]]);
 
                // Сравниваем с правым соседом (E), если он уже заполнен
                if (j < gridCols - 1 && imageGrid[i][j+1] != -1)
                    score += averageE(images[k], images[imageGrid[i][j+1]]);
 
                if (score < bestScore)
                {
                    bestScore = score;
                    bestFit = k;
                }
            }
 
            if (i == 0 && bestScore > 3000.0)
            {
                gridCols = j;
                gridRows /= j;
                break;
            }
 
            imageGrid[i][j] = bestFit;
            usedIndices.push_back(bestFit);
        }
Проблема в том, что этот код начинает постепенно размещать куски, начиная с верхнего левого. Но, наверное, нужно создать граф, а потом уже заниматься размещением.
1
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
22.02.2025, 15:58
Насколько понял, все куски перемешаны и надо определить что к чему подходит.
Такая идея. Создаем массив структур. В структуре есть 4 массива. Первый массив содержит верхнюю скан-линию пикселей изображения, 2 массив нижнюю, 3 - левый столбец, 4 - правый. И для каждого массива определяем bool что данная сторона обработана. Это чтобы не обрабатывать изображения целиком. То есть сперва подготавливаем и заполняем структуры. Потом заполняем ими массив. Ну и соответственно затем взяв первую структуру проходим по массиву и ищем похожие скан линии и столбцы. Если нашли подходящую, склеиваем оба изображения и отмечаем, что стороны обработаны. Далее ищем следующую сторону первого изображения и так до 4 стороны. Далее переходим к следующему изображению.
После того как прошли весь массив проверяем все ли стороны всех фрагментов обработаны, и прямоугольное ли изображение получилось, если всё ок, то заканчиваем.
1
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
22.02.2025, 18:06
Цитата Сообщение от Royal_X Посмотреть сообщение
Не знаю, будут ли у вас интересные идеи.
Технически не вижу никаких трудностей.
Сравнивать смежные части(край в один пиксель) и сортировать их по схожести(разница в цвете RGB).
Писать код, как то лень.
1
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
22.02.2025, 18:09  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
какое предназначение верхней левой консольки?
верхнюю консолька это рудимент, который можно отключить -mwindows
в данном месте выполняет роль окна логов от пула потоков с играми.

Цитата Сообщение от Royal_X Посмотреть сообщение
Показывает команды, но не пишет от кого идут
у меня дела пошли в гору, когда я вышел подумать, а что я хочу видеть в логе...
можно в логе вывести такое кол-во инфы, которое даже Айнштайн своим моском не переварит.

Цитата Сообщение от Royal_X Посмотреть сообщение
не пишет от кого идут
тест не отражает игровую среду - на одном компе обычно будет запущен только один клиент.
по идее тестировщику без разницы что от кого идет - главное чтобы не было индикаций ошибок.

Цитата Сообщение от Royal_X Посмотреть сообщение
всё работает на одном ПК или оно может работать по всей LAN сети или даже через инет?
больше, чем на одном пк, пока не тестировал.

Цитата Сообщение от Royal_X Посмотреть сообщение
может ли сервер вырубать клиентов?
клиент может посылать на сервер любые команды,
здесь я воображаю хацкерский клиент, желающий угробить сервер, но задача сервера выжить...

сервер может посылать на клиент любые команды, клиент их будет принимать все
и далее либо игнорить, либо фильтровать и выполнять...

сервер не может заставить клиент выполнить команду(и наоборот), которая не прописана в holderRPC.

выше правило можно расширить на исполняемые текстовые скрипты ...

Цитата Сообщение от Royal_X Посмотреть сообщение
может ли сервер вырубать клиентов?
т.е. такая команда должна быть прописана в holderRPC.

Цитата Сообщение от Royal_X Посмотреть сообщение
у меня несколько вопросов:
у меня щас вопрос такой,
можно ли запустить 2000 клиентов на одном ПК,
разумеется, облегчив их от всякого огл и т.п.?
и в связи с этим - какой лог мне будет нужен?
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
22.02.2025, 19:25
SmallEvil, ты пишешь как CoderHuligan, а именно, абстрактными терминами, которые мне ничем не помогут. Я же написал, что я столкнулся с конкретной проблемой. Даже не то чтобы столкнулся с проблемой, но дошел до того момента, что нужно найти самое верное решение и только потом продолжить.

Внимательно прочтите это: никаких проблем со сравнениями пикселей у меня нет, я все это уже написал, причем в первый же день, когда решил начать этот проект. Написал всё это за 10 мин (потратил столько времени на настройку проекта, реализацию загрузки изображений с папки и все прочее). А сейчас даже реализован процесс склеивания и отображения цельного изображения.
Т.е. для каждого куска я могу без проблем определить, какой кусок ему больше подходит слева, справа, сверху и снизу.

Вопрос: ну а дальше-то что?

1. Как определить, сколько кусков должно быть в ширину, и сколько кусков в высоту? Если известно, что оригинальное изображение квадратное, то тогда проблем нет. Но ведь первоначальное изображение может быть прямоугольным.
2. Как составить двумерный массив с индексами кусков, расположенных в правильном порядке? Потому что я уже написал код, который берет такой массив и выводит цельное изображение на экран.

Примечание: ответы на эти вопросы у меня есть, и даже написан код по этим проблемам. Но он мне не устраивает, из-за того, что работает коряво. Поэтому хочу услышать разные мнения.

Цитата Сообщение от XLAT Посмотреть сообщение
можно ли запустить 2000 клиентов на одном ПК
мне кажется, можно запустить столько клиентов, сколько серверный ПК выдержит
1
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
22.02.2025, 20:22
Цитата Сообщение от Royal_X Посмотреть сообщение
SmallEvil, ты пишешь как CoderHuligan, а именно, абстрактными терминами, которые мне ничем не помогут
Так где абстрактность? В скобочках вполне не абстрактные разъяснения.

Цитата Сообщение от Royal_X Посмотреть сообщение
Т.е. для каждого куска я могу без проблем определить, какой кусок ему больше подходит слева, справа, сверху и снизу.
Отлично.

Цитата Сообщение от Royal_X Посмотреть сообщение
1. Как определить, сколько кусков должно быть в ширину, и сколько кусков в высоту? Если известно, что оригинальное изображение квадратное, то тогда проблем нет. Но ведь первоначальное изображение может быть прямоугольным.
2. Как составить двумерный массив с индексами кусков, расположенных в правильном порядке? Потому что я уже написал код, который берет такой массив и выводит цельное изображение на экран.
Не понял вопроса, если есть совпадение по стороне, то "клеишь две части".
Первой присваиваешь парный индекс, (0, 0), следующей, которую "клеишь" в зависимости к какому краю, допустим к верхнему (-1,0).
using index_type = unsigned; // индексы наших кусочков [0, N-1], N - количество кусочков
set<<pair<int,int>, index_type>> map_of_parts;
Сортировать по сначала по X, потом по Y.
Так в наборе будут идти кусочки ряд за рядом.
Сколько будет в ряду кусочков, ты и сам можешь узнать.

Добавлено через 3 минуты
С X и Y, разберешься. Я тут напутал в примере.
Первый индекс у меня отвечает за строки, то есть за Y.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
22.02.2025, 20:48
Цитата Сообщение от SmallEvil Посмотреть сообщение
Не понял вопроса, если есть совпадение по стороне, то "клеишь две части".
например, есть 384 куска, полученных путем разделения изображения сеткой 16 * 24 (16 кусков в ширину и 24 куска в высоту). Но как определить, что именно 16 * 24, а не:
1 384
2 192
3 128
4 96
6 64
8 48
12 32
24 16
32 12
48 8
64 6
96 4
128 3
192 2
384 1

Цитата Сообщение от SmallEvil Посмотреть сообщение
если есть совпадение по стороне
для каждой стороны одного куска всегда находится какая-нибудь сторона другого куска. Напиши поподробней о совпадении.

В моей реализации, идеальное совпадение это 0 (прям когда все пиксели совпадают), а худшее совпадение это 260100.
Я вот перебираю и ищу, с какой стороной это значение меньше всего.
Конечно, можно представить переменную Порог и если значение выше этого порога, то значит считаем, что эта сторона не должна ни с кем склеиваться. Именно это я и делал в своем коде. Но данный подход корявый, потому что для одного изображения значение порога норм, но для другого - нет, и нужно брать другой порог...
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
22.02.2025, 21:02
Цитата Сообщение от SmallEvil Посмотреть сообщение
если есть совпадение по стороне, то "клеишь две части".
Более того, делать выводы по двум сторонам - это неправильно. Нужно и остальные стороны проверять.
Например, представь, что есть такое изображение



И допустим мы проверяем верхний левый кусок, а именно его правую сторону, на соответствие. Если мы будем искать всего по двум сторонам, то может быть так, что мы во время проверки столкнемся с куском, который сейчас отображен в верхнем правом углу. Проверка покажет, что правая сторона нашего куска идеально совпадает с левой стороной верхнего правого куска. Однако, правильный кусок это верхний посередине. Т.е. я это к тому, что проверять нужно все стороны и только потом делать выводы.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
22.02.2025, 21:22
Цитата Сообщение от Royal_X Посмотреть сообщение
Если мы будем искать всего по двум сторонам, то может быть так, что мы во время проверки столкнемся с куском, который сейчас отображен в верхнем правом углу.
Да, и будет несколько идеальных или хороших совпадения по той стороне.
И где то будет ""косяк".
Значит нужно подбирать до тех пор, пока косяков не будет.
Сколько может быть вариантов? В плохом случае, наверное много.

Добавлено через 1 минуту
Вообще, на пазлах пишется сколько кусков 200*80, например.

Добавлено через 2 минуты
А может и нет)) Но там есть картинка.

Добавлено через 1 минуту
Цитата Сообщение от Royal_X Посмотреть сообщение
Т.е. я это к тому, что проверять нужно все стороны и только потом делать выводы.
Да. Всем возможным парам сторон нужно дать характеристику и по ней отсортировать.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6289 / 3013 / 1051
Регистрация: 01.06.2021
Сообщений: 11,311
22.02.2025, 22:03
Цитата Сообщение от SmallEvil Посмотреть сообщение
Вообще, на пазлах пишется сколько кусков 200*80, например.
Если сделать так, то это очень упростит задачу.
Но ведь с автоматическим определением было бы интереснее. Я вчера даже написал код для авто определения, но опять же все зависит от некой магической константы для порога совпадения, поэтому не всегда размер определяется правильно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.02.2025, 22:03

Решение матричных игр. Есть у кого такая программа написанная уже...
Требуется программа по решению матричных игр... С выбором размера матрицы и выдачей решения... Может кто смогёт такую сбатцать?

Запуск приложений(старых игр) в оконном режиме
День добрый, подскажите, хотелось бы реализовать свое желание запуска старых игр windo`вых(типа StarCraft) в оконном режиме, с чего начать,...

Алгоритм календаря игр (например в футболе)
необходимо составить календарь футбольных матчей, допустим есть 6 команд char *teams = {&quot;TEAM A&quot;,&quot;TEAM B&quot;,&quot;TEAM...

Движок для игр
Всем привет!!!, хотел узнать возможно ли создать движок на C++ чтобы экспортировать модели из 3ds max а после в самом движке можно было...

Выбор IDE для создания 2D игр
Здравствуйте. Задача сделать пака 2ух – мерные драчки загружая в проект анимацию-как удар(ы) и реакция на удар...(лучше всего секвенцию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
800
Закрытая тема Создать тему
Новые блоги и статьи
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов • Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp • Смежный проект:. . .
22. Подключение слоя системной динамики (потоковые диффуры): экономические метрики модели
anaschu 17.06.2026
Апдейт модели: финансовый контур, разделение затрат Продолжаю развивать модель рабочего коллектива на AnyLogic. В этот раз работа шла над агентом Экономика — финансовым SD-слоем модели. Задача:. . .
[golang] Insert Delete GetRandom O(1) (Leetcode: 380)
alhaos 16.06.2026
Insert Delete GetRandom O(1) Сложность: Medium Источник: LeetCode 380 Задача Реализовать структуру данных RandomizedSet, которая поддерживает следующие операции за O(1) в среднем:
Свет в конце тоннеля
kumehtar 16.06.2026
Поймал себя на одной мысли. Раньше мне всегда казалось неправильным жить без чёткого понимания, куда всё идёт. Будто я иду по дороге судьбы, но не знаю, куда она ведёт. А раз не знаю — значит,. . .
[golang] Реализация стека с поддержкой получения минимального элемента за O(1)
alhaos 16.06.2026
Min Stack Сложность: Medium Источник: LeetCode 155 Задача: Реализовать стек который поддерживает push, pop, top и получение минимального элемента за O(1). Методы:
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru