Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 11.01.2025
Сообщений: 4

За один ход увеличить или уменьшить любой элемент массива на 1, всего таких операций можно сделать не больше K

11.01.2025, 17:09. Показов 5786. Ответов 77
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан список A из N чисел, а также число K. Можно за один ход увеличить или уменьшить любой элемент массива на 1, всего таких операций можно сделать не больше K раз.
Какая макс. длина может быть у какого-то подотрезка, в которым все элементы одинаковые?

В первой строке два числа - N и K. Во второй строке N чисел, i-тый элемент равен A[i].

Ограничения:
1 ≤ N ≤ 100 000
0 ≤ K ≤ 1 000 000 000
0 ≤ A[i] ≤ 100 000 000

Ввод:
11 7
3 5 8 9 2 7 6 5 3 9 7

Вывод:
4

Объяснение:
Можно выбрать отрезок 2-7-6-5. Выполним операцию 4 раза на первом элементе, тогда получаем 6-7-6-5. Выполним операцию 1 раз на втором элементе, итого 5 операции, получаем 6-6-6-5. Выполним операцию на последнем элементе, итого 6 операции, получаем 6-6-6-6. Все элементы одинаковы, значит размер отрезка (4) подходит. Можно показать, что больше такого отрезка, с длиной больше 4, нет.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.01.2025, 17:09
Ответы с готовыми решениями:

За один ход любое одно из чисел уменьшить на любой степень двойки
Своя игра Петя и Маша, ходят по очереди, играют в такую математическую игру: Задано несколько натуральных чисел. За один ход...

Описать ход выполнения таких операций
С Microsoft Access вообще не знаком, но попался такое задание. Описать ход выполнения следующих операций: 1. установки цвета написания...

Как можно увеличить или уменьшить изображения в Image с помощью TrackBar-а?
Добрый ноч форум! Подскажите пожалуйсто как можно увеличить или уменшить изображения в Image с помошию TrackBar -а? Добавлено...

77
1963 / 819 / 114
Регистрация: 01.10.2012
Сообщений: 4,761
Записей в блоге: 2
11.01.2025, 20:02
Не вижу ничего интересного. Ну просто пытаемся сделать одинаковые элементы для каждого, в примере для 3, 5, 8 и.т.д. и выбираем наилучший. Основная проверка

C++
1
2
3
4
5
6
7
8
9
10
int Make( const int * src, int len, int & k )
{
 int i;
 for (i = 1; i < len; ++i) {
   int diff = abs(src[i] - src[0]);
   if (diff > k) break;
   k -= diff;
 }
 return i;
}
И аналогично цикл для поверки справа налево (осталось k)

Добавлено через 12 минут

Не по теме:

Да, и простите мое умничанье, но они говорят

I_have_a_question

0
0 / 0 / 0
Регистрация: 11.01.2025
Сообщений: 4
11.01.2025, 20:07  [ТС]
А разве асимптотика не будет O(n2) ? Или я что-то не так понял?


Не по теме:

Да, знаю, но I_have_a_question было слишком длинным, пришлось сократить. i_have_questions тоже было слишком длинным, так что пришлось грамматику сломать, хехе.

0
1963 / 819 / 114
Регистрация: 01.10.2012
Сообщений: 4,761
Записей в блоге: 2
11.01.2025, 22:02
Цитата Сообщение от i_have_question Посмотреть сообщение
А разве асимптотика не будет O(n2) ? Или я что-то не так понял?
Не о том думаете. Просто так не выходит, пример

5 3 3 2 3 3 5

При k = 5 и поиске "от двойки" будет макс = 4 (хоть вперед хоть назад). Но есть макс больше = 5. Придется еще перебрать все "средние" диапазоны

Не по теме:

I've_a_question

0
0 / 0 / 0
Регистрация: 11.01.2025
Сообщений: 4
11.01.2025, 22:24  [ТС]
И я не совсем понял. То есть, для каждого элемента, мы находим макс. длину подотрезка с началом (или концом) в этом элементе, так? Но это же будет долго работать, или...?

Добавлено через 20 минут
Что-то в таком духе?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    for (int i = 0; i < n; i++) { // проходим по всем числам в массиве
 
        int left = k; // сколько операции осталось
        int cnt = 0; // сколько эл-ов получилось сделать одинаковыми
        for (int j = i; j < n; j++) { // проходим по элематам, правее нашего
            int operation = abs(a[i] - a[j]); // сколько операции нужно, чтобы сделать a[j] в a[i]
            left -= operation;
            if (left < 0) break; // если мы сделали больше К операции, прекращаем цикл
            cnt++; // иначе этот элемент подходит, увеличиваем длину подотрезка и идем дальше
        }
        ans = max(ans, cnt); // обновляем ответ
 
        // делаем тоже самое, только влево
        left = k, cnt = 0;
        for (int j = i; j >= 0; j--) {
            left -= abs(a[i] - a[j]);
            if (left < 0) break;
            cnt++;
        }
        ans = max(ans, cnt);
    }
0
1963 / 819 / 114
Регистрация: 01.10.2012
Сообщений: 4,761
Записей в блоге: 2
12.01.2025, 04:30
Цитата Сообщение от i_have_question Посмотреть сообщение
Что-то в таком духе?
Не совсем, см пример выше. Для каждого проверяемого (индекс base) находите "левого" (left) и потом (поиском вправо) все диапазоны что начинаются от left до base включительно

Цитата Сообщение от i_have_question Посмотреть сообщение
Но это же будет долго работать
У Вас еще "ни кола ни двора", алгоритма нет - а Вы уже летите что-то оптимизировать
0
0 / 0 / 0
Регистрация: 11.01.2025
Сообщений: 4
12.01.2025, 12:18  [ТС]
Цитата Сообщение от Igor3D Посмотреть сообщение
Для каждого проверяемого (индекс base) находите "левого" (left) и потом (поиском вправо) все диапазоны что начинаются от left до base включительно
То есть как-то так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    for (int i = 0; i < n; i++) { // проходим по всем числам в массиве
            
        int operations = k; // сколько операции осталось
        int current_segment = 0; // длина текущего отрезка
        int base = a[i]; // число, к которому будем приравнивать все элементы отрезка
        
        for (int left = i; left >= 0; left--) { // перебираем все индексы, левее нашего
            int use = abs(a[left] - base); // сколько операции нужно для этого элемента
            operations -= use;
            if (operations < 0) break; // если мы потратили слишком много операции, выходим из цикла
            current_segment++; // иначе увеличиваем размер отрезка
        }
    
        for (int right = i; right < n; right++) { // делаем тоже самое, только справа
            int use = abs(a[right] - base);
            operations -= use;
            if (operations < 0) break;
            current_segment++;
        }
        
        ans = max(ans, current_segment); // обновляем ответ
    }

Или надо третий цикл (
C++
1
for (int right = i; right < n; right++)
) вложить во второй (
C++
1
for (int left = i; left >= 0; left--)
) ?
0
1963 / 819 / 114
Регистрация: 01.10.2012
Сообщений: 4,761
Записей в блоге: 2
12.01.2025, 19:19
Долго объяснять, проще написать

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
using Range = std::pair<int, int>;  // индексы начала и конца
 
// ищем макс индекс справа, начиная с from
int FindRight( const std:vector<int> & src, int base, int from, int & k )
{
 while (from < src.size()) {
   int diff = abs(src[base] - src[from]);
   if (diff > k) break;
   k -= diff;
   ++from;
 }
 return from;
}
 
Range FindMaxRange( const std:vector<int> & src, int base, int k )
{
 Range R(base, base + 1);
 
// ищем левую границу
  while (R.first > 0) {
   int diff = abs(src[base] - src[R.first - 1]);
   if (diff > k) break;
   k -= diff;
   --R.first; 
 }
 
// пытаемся идти вправо
 R.second = FindRight(src, base, base + 1, k); 
 
// фиксируем макс
 Range maxR = R;
 
// пробуем все диапазоны начиная с левого
 while (R.first < base) {
  k += abs(src[base] - src[R.first]);
  R.second = FindRight(src, base, R.second, k);
  if (R.second - R.first > maxR.second - maxR.first)
   maxR = R;
  ++R.first;
 } 
 return maxR;
}
Писал здесь, возможны ошибки
0
698 / 572 / 75
Регистрация: 20.09.2014
Сообщений: 3,699
12.01.2025, 20:33
Вопрос №1: Допустим есть некий подотрезок. Как определить, по какому числу b нужно выровнять все числа, чтобы затратить минимум операций? Ответ: нужно взять медиану последовательности чисел. (Что-то я пока не могу сообразить, как доказать.)

Вопрос №2: Как рассчитать то самое минимальное число потраченных операций для подотрезка, рассмотренного в вопросе №1? Ответ: нужно просуммировать числа, превышающие медиану, и вычесть из них все числа, меньше медианы. (Это просто доказывается.)

Как обычно, применяем динамическое программирование:

У нас уже есть некий оптимальный подотрезок длины m с медианой b. Мы просто добавляем новый элемент слева или справа от этого подотрезка, если это возможно. Допустим слева элемент c, а справа - d. Выбираем наиболее близкий элемент к медиане. Нужно научиться считать скользящую медиану и скользящую сумму отклонений. Ничего сложного в этом вроде нет.

Добавлено через 3 минуты
Доказательство про медиану методом гугления:
Медиана обладает свойством минимальности. Его суть заключается в том, что сумма абсолютных отклонений значений х, от медианы представляет собой минимальную величину по сравнению с отклонением X от любой другой величины
0
698 / 572 / 75
Регистрация: 20.09.2014
Сообщений: 3,699
13.01.2025, 09:28
Вопрос №3. Как вычислять скользящую медиану? ("Скользящая" - это не совсем корректное слово, но я думаю понятное, правильнее говорить о медиане нарастающей последовательности.)
Обычно медиана вычисляется так: элементы сортируются по возрастанию или убыванию, из исходной последовательности A получается последовательность B. При нечётном числе элементов за медиану берётся средний элемент B[(m-1)/2], который делит все числа на две равные части. При чётном числе элементов в середине массива берутся два элемента, берётся среднее значение этих двух чисел. В нашей же задаче можно брать любое целое число между этими двумя числами, без разницы. Для простоты можно брать элемент B[m/2-1] или B[m/2].
Если у нас уже имеется отсортированная последовательность B, то новый элемент слева или справа, наиболее близкий к медиане по значению, вставляется в порядке возрастания (убывания). Нужно обратить внимание, что добавление одного элемента приводит к смене чётности. Самая простая вставка имеет сложность O(N), но можно догнаться до O(log N).

Вопрос №4. Как вычислять отклонение от медианы для нарастающей последовательности? В общем случае это делается так: для тех чисел, которые больше медианы, отклонение равно (A[i] - b), где b - наше медианное число, для чисел, которые меньше медианы, отклонение равно (b - A[j]). Итого сумма отклонений равна для нечётного числа элементов sum{(A[i] - b)} + sum{(b - A[j])}. Так как чисел слева и справа от медианы равное количество, то b сокращается и остаётся sum{A[i]} - sum{A[j]}. Для чётного числа элементов следует не забыть про отклонение самих медианных чисел, поэтому появляется дополнительная сумма в конце выражения sum{A[i]} - sum{A[j]} + B[m/2] - B[m/2-1] (формула для возрастающей последовательности B).
Думаю, понятно, как при наращивании последовательности наращивать такую сумму? Это чуть сложнее, чем кажется. Нужно очень аккуратно изучить вопрос, как делать безошибочные пересчёты сумм при изменении чётности числа m.

Задачка интересная, заставит подумать.
0
Модератор
10361 / 5647 / 3396
Регистрация: 17.08.2012
Сообщений: 17,237
13.01.2025, 23:38
Mikhaylo, медиана в том смысле, в котором Вы её здесь описали (сдаётся мне, что Вы взяли вот это определение из богомерзкой Википедии) совершено не подходит для решения данной задачи. Здесь подходит 1-медиана (корявенькое определение в том же богомерзком месте), она же геометрический центр: Википедия - Геометрический центр. Так что, ничего сортировать не нужно. Однако, следует учесть, что для данного случая (евклидова одномерного дискретного пространства) 1-медиан может быть две, а не одна.
0
698 / 572 / 75
Регистрация: 20.09.2014
Сообщений: 3,699
14.01.2025, 08:36
Спасибо. Но для задачи это лишнее. Для чётного числа элементов m число медиан равно (B[m/2] - B[m/2-1] + 1). Для нечётного числа m определяется лишь одна медиана. Это для целочисленного одномерного пространства.

Покажите, как без сортировки определить медиану.
0
Модератор
10361 / 5647 / 3396
Регистрация: 17.08.2012
Сообщений: 17,237
14.01.2025, 20:12
Сортировка? Да зачем она здесь? Для наглядности? Чтобы была? Я не знаю...

Фактически, искомая медиана, как бы она не называлась - это центр масс (рассматриваемых в данный момент) точек с одинаковыми массами (например, с единичными массами).

Замечание: искомая медиана может не совпадать ни с одной точкой.

То, что центр масс определить просто - это только так кажется. Его НИКАК нельзя определить, к примеру, как некое среднее арифметическое, или как какую-то центральную точку в отсортированном массиве точек.

Первый способ.

Есть рекуррентный алгоритм Вайсфельда, описан в Википедии по ссылке выше. Позволяет определить центр тяжести с любой наперёд заданной точностью (может быть, подойдёт точность ε=1). Для данного случая это будет выглядеть так:

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
y_{i+1}=\frac{\sum _{\begin{cases}1\leq j\leq m \\ x_j\neq y_i  \end{cases}}{\frac {x_j}{x_j-y_i}}}{\sum _{\begin{cases}1\leq j\leq m \\ x_j\neq y_i  \end{cases}}{\frac {1}{x_j-y_i}}}<br />

Критерий окончания вычислений: | yi+1 - yi | < ε

Замечу, что в данном случае все "y" должно быть вещественными, иначе во время вычислений возможно зацикливание алгоритма. После окончания вычислений найденное значение "y" нужно будет округлить.

Второй способ.

Прямиком из геометрии и сопромата. Взято из книги Гашков С. Б., "Центры тяжести и геометрия" - М.: МЦНМО, 2015 (ISBN 978-5-4439-0145-9, УДК 511.2, ББК 22.131, Г24), страница 4:

Центр масс конечной системы материальных точек

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

Аксиома 0. У любой конечной системы точек центр масс существует и определен однозначно.

Аксиома 1. Центр масс точки совпадает с ней.

Аксиома 2. Центр масс системы двух точек с массами mi делит отрезок, их соединяющий, в отношении m1 : m2 и расположен ближе к большей массе (если они равны, то он находится посередине).

Аксиома 3. Если множество точек M разбито на два непересекающихся подмножества Mi с суммарными массами mi и центрами масс Ai, i = 1, 2, то центр масс множества M совпадает с центром масс системы из двух точек Ai с массами mi.

Этих аксиом достаточно, чтобы вычислить центр масс любого конечного множества точек Ai с массами mi, i = 1, ..., n. Для этого можно заменить с помощью аксиомы 3 точки A1, A2 на одну точку A1,2 с массой m1+m2, определив положение точки A1,2 с помощью аксиомы 2. Если n > 2, то к полученному (n-1)-точечному множеству {A1,2, A3, ..., An} применяем тот же прием и т. д., пока не получим одну точку A1,2,...,n с массой m1+...+mn, которая согласно аксиоме 1 является центром масс системы точек Ai, i = 1, ..., n.
Скорее всего, есть ещё какие-нибудь способы вычислить искомую медиану, но лень искать. Направление поиска понятно, если Вам интересно - можете поискать ещё что-нибудь.

С моей точки зрения, второй способ удобнее, он позволяет просто определять искомую медиану "на лету", по мере поступления точек. Хотя, с другой стороны, и первый способ тоже позволяет добавлять точки по мере поступления.

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

... Ну вот никак не могу понять ход Ваших мыслей... Любопытство меня прямо-таки раздирает. Где в этой задаче, чёрт возьми, требуется сортировка?
0
30 / 24 / 7
Регистрация: 22.02.2019
Сообщений: 104
14.01.2025, 20:52
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Покажите, как без сортировки определить медиану.
Динамическую медиану можно вычислять с помощью дерева порядковой статистики(кажется так оно у Кормена называлось).
А если это дерево вдобавок ещё сумеет подсчитать сумму элементов на отрезке за O(LogN), то должно получиться решение за O(NLogN).
1
698 / 572 / 75
Регистрация: 20.09.2014
Сообщений: 3,699
15.01.2025, 07:32
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Сортировка? Да зачем она здесь? Для наглядности? Чтобы была? Я не знаю...
Нам нужно пересчитывать медиану в связи с нарастанием последовательности чисел. Сортировка такой последовательности - тривиальное дело. Вряд ли алгоритм Вайсфельда с этим справится быстрее.
0
Модератор
10361 / 5647 / 3396
Регистрация: 17.08.2012
Сообщений: 17,237
15.01.2025, 10:04
Цитата Сообщение от Mikhaylo Посмотреть сообщение
нужно пересчитывать медиану
Формулу для искомой медианы напишите. Подумайте. И получится алгоритм Вайсфельда.
Цитата Сообщение от Mikhaylo Посмотреть сообщение
в связи с нарастанием последовательности чисел
Можно корректировать уже посчитанную медиану по мере поступления чисел, не пересчитывая медиану целиком заново и ничего не сортируя.
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Сортировка такой последовательности - тривиальное дело
Зачем делать что-то ненужное, пусть даже оно и тривиальное? Сортировка, вообще-то, штука не такая уж и тривиальная, если к ней подходить серьёзно. И обязательно требует машинного времени.
0
698 / 572 / 75
Регистрация: 20.09.2014
Сообщений: 3,699
15.01.2025, 10:15
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Формулу для искомой медианы напишите. Подумайте. И получится алгоритм Вайсфельда.
Формулы-то нет. Есть точный алгоритм с сортировкой.

Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Можно корректировать уже посчитанную медиану по мере поступления чисел, не пересчитывая медиану целиком заново и ничего не сортируя.
Сложность алгоритма Вайсфельда O(N*K), где K - количество итераций. Этот момент вызывает вопрос.
Эпсилон =1 - это некорректно для нашей задачи, для точного ответа надо гораздо меньше.
Ведь не факт, что за несколько итераций ошибка не накопится до величины больше 1.
0
Модератор
10361 / 5647 / 3396
Регистрация: 17.08.2012
Сообщений: 17,237
15.01.2025, 11:42
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Есть точный алгоритм с сортировкой.
Увы, но нет такого алгоритма.
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Сложность алгоритма Вайсфельда O(N*K)
Да, если ситать, что K - это априори неизвестное количество уточнений значения "y".
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Эпсилон =1 - это некорректно для нашей задачи
Я и не утверждал, что обязательно должно быть ε=1. По условиям задачи, все числа целые, и, может быть, достаточно будет уточнить "y" с точностью до целого, то есть, с точностью ε=1. К тому же, Nmax всего-то 100000, и ошибка усечения при, например, 10000000000 итераций на наборе из 100000 чисел (это будет O(N2)) в диапазоне [0...100000000] для машинного представления вещественных чисел, если даже ошибка усечения будет не 2-53 а, например, 2-40, не сможет быть больше 10-2.
0
698 / 572 / 75
Регистрация: 20.09.2014
Сообщений: 3,699
15.01.2025, 12:48
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Увы, но нет такого алгоритма.
Сортируем по возрастанию/убыванию. Медиана - это средний элемент отсортированного массива. Такой алгоритм (упрощённо).

Цитата Сообщение от Cyborg Drone Посмотреть сообщение
По условиям задачи, все числа целые, и, может быть, достаточно будет уточнить "y" с точностью до целого, то есть, с точностью ε=1.
В условиях неопределенности неясно, когда наступает это самое "достаточно", ведь то целое число, к которому сходится расчет, неизвестно. Эпсилон - это не ошибка расчёта, а всего лишь абстрактный критерий останова. Эпсилон единица - это величина, насколько в последней итерации будет уточнена медиана, это число не говорит ничего о том, насколько медиана могла бы быть уточнена в пределе.
Эпсилон может быть 0.001 и этого может быть в некоторых случаях недостаточно.
0
1963 / 819 / 114
Регистрация: 01.10.2012
Сообщений: 4,761
Записей в блоге: 2
15.01.2025, 14:05
Пусть найдено решение для массива напр 10 элементов. Легко увеличить этот массив так чтобы решение осталось тем же. Самое простое - дополнить чередующимися a и b (a - b > k). Отсюда вывод: анализ всего массива, медианы и.т.п. здесь не проходит.

Как оптимизировать - была такая мысль. Посчитаем и сохраним все "расстояния" (разницы) до первого эл-та (нарастают) и до последнего эл-та (убывают). Тогда можно относительно быстро находить расстояния между любой парой элементов. И относительно быстро искать подходящее в сортированных массивах. Но "скольжение" все равно остается, выигрыш неясен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.01.2025, 14:05
Помогаю со студенческими работами здесь

Элементы массива уменьшить на 20, умножить на последний элемент и увеличить на число В
Помогите решить задачу, пожалуйста. Сама задача: &quot;Дан массив. Все его элементы уменьшить на 20, затем умножить на последний элемент,...

Элементы массива: увеличить в 2 раза, уменьшить на число А, разделить на первый элемент
Дан массив. Все его элементы: а) увеличить в 2 раза; б) уменьшить на число А; в) разделить на первый элемент.

Если последний элемент массива положителен, то все элементы увеличить на квадрат максимума всего массива
4 Задан одномерный массив F(N). Если последний элемент массива положителен, то все элементы увеличить на квадрат ...

Если последний элемент массива положителен, то все элементы увеличить на квадрат максимума всего массива
Задан одномерный массив F(N). Если последний элемент массива положителен, то все элементы увеличить на квадрат максимума всего...

Найти максимальный по значению элемент массива и увеличить его в два раза, остальные элементы уменьшить на значение минимума последней строки массива
Ввести двумерный массив A (NxM), вывести его. Найти максимальный по значению элемент массива и увеличить его в два раза. Все остальные...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru