🧠 Алгоритм Флойда Уоршелла.

☝️ В данном коде реализован алгоритм Флойда-Уоршелла для нахождения кратчайших путей между всеми парами вершин взвешенного ориентированного графа.

⚙️ Алгоритм работает следующим образом:
1. Инициализируются расстояния между всеми парами вершин как веса ребер графа.
2. Проход по всем вершинам графа.
3. Для каждой пары вершин (i, j) проход по всем вершинам графа.
4. Если путь от вершины i до вершины j через вершину k короче текущего пути, то обновляется расстояние.
5. После выполнения алгоритма в матрице distances будут содержаться кратчайшие расстояния между всеми парами вершин.

🧑‍💻 Алгоритм имеет алгоритмическую сложность O(V^3), где V - количество вершин в графе.
В данном случае алгоритм работает с матрицей смежности, поэтому сложность будет O(V^3).

Код: GitLab 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👋 Пишем программу, которая генерирует QR код📝.

🔎 Программа запрашивает у пользователя ввод URL-адреса, на основе которого будет сгенерирован QR код.

📖 Затем код создает битовую матрицу, используя библиотеку ZXing, и заполняет её.

📝 Белый фон и чёрные пиксели конвертируются в изображение QR кода и сохраняются в файл "qrcode.png".

⚡️ В конце, код выводит сообщение о том, что QR код был успешно сгенерирован и сохранен в файл.

Код: GitLab 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Halloween😄

🪨 Игра "Виселица", где игрок должен угадать слово, вводя по одной букве.

У игрока есть ограниченное количество попыток, и каждая неправильная попытка добавляет часть "повешенного человечка" к выводу.
Игра продолжается, пока игрок не угадывает слово или не совершает слишком много ошибок .

Код: GitLab 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🧑‍💻 Алгоритм Форда-Фалкерсона для нахождения максимального потока в графе.

⭐️Здесь представлен пример графа, в котором веса ребер обозначают пропускную способность. Вы можете изменить граф, вызовы функции и другие параметры согласно вашим потребностям.

⚙️ Алгоритм работает в несколько итераций. На каждой итерации алгоритм производит поиск увеличивающего пути в остаточной сети, который может быть найден с помощью поиска в ширину (алгоритм BFS).
🔃 Затем алгоритм обновляет пропускные способности ребер по этому пути и наращивает максимальный поток. Процесс повторяется до тех пор, пока не будет найден увеличивающий путь (или не будет больше такого пути).

💡 Алгоритм Форда-Фалкерсона имеет временную сложность O(V E^2), где V - количество вершин в графе, а E - количество ребер.
В худшем случае, когда алгоритм выполняется полное количество итераций, временная сложность становится O(V^2 E), что может быть довольно затратно для больших графов.

Код: GitLab 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🧠 Сортировка слиянием

📖В данном примере мы создаем класс MergeSort с двумя методами: mergeSort для сортировки массива слиянием и merge для объединения отсортированных частей массива.
📺В методе main мы создаем исходный массив, вызываем mergeSort для его сортировки и выводим отсортированный массив на экран.

ℹ️Алгоритм сортировки слиянием имеет сложность O(n log n), где n - длина массива. В данном коде на Java реализован алгоритм сортировки слиянием, поэтому его временная сложность также остается O(n log n).

Код: GitLab 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
💪 Конференция Яндекса YaTalks 2023.

🧠 В 2023 году YaTalks пройдёт 5 и 6 декабря в Москве, Белграде и онлайн.

📖 Тема этого года — явления, которые меняют мир и двигают его вперёд.
Пригласили более сотни спикеров, которые будут читать доклады о разработке, управлении и карьере в IT.

⭐️5 декабря — день YaTalks 2023 с хардовыми техническими докладами.

🔹 Андрей Мелихов, ведущий разработчик из Yandex Cloud. Объяснит, с какими проблемами и вызовами пришлось столкнуться, когда выпускали DataLens в опенсорс.

🔹 Никита Илясов, СТО Яндекс Еды и Маркета Деливери. Расскажет, как объединяли Delivery Club и Яндекс Еду.

🔹 Алексей Гусаков, технический директор Яндекс Поиска. Покажет, как инженеры управляют временем — и делают наш мир быстрее.

⭐️6 декабря — день, когда спикеры YaTalks 2023 рассказывают про управление и обучение.

🔹 Галина Юзефович, литературный критик, преподаватель, онлайн-платформа «Страдариум». Расскажет, как новые технологии меняют литературу и какие книги почитать об этой трансформации.

🔹 Евгений Кот, VP of Engineering из Rarible. Объяснит, почему сеньору и менеджеру сложно выбрать вектор для развития и как надо строить карьеру.

💥 Всё это — бесплатно, так что переходите на сайт, изучайте программу и регистрируйтесь!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👩‍💻 GPT-4

💡OpenAi провела мероприятие для разработчиков, на котором анонсировала улучшения в своих моделях. GPT-3.5 и GPT-4 прокачали, выпустили обновлённую версию GPT-4 Turbo, которому наконец рассказали, что произошло в мире и интернете в период с сентября 2021 до апреля 2023.

👍 GPT-4 Turbo быстрее предшественника, а также он способен анализировать больше информации за один запрос. Теперь он может обработать 128 000 токенов, что приблизительно эквивалентно более 300 страницам текста. Сами токены для API станут дешевле в 2-3 раза.

💻 Помимо этого, OpenAi анонсировала своеобразный конструктор чат-ботов на основе GPT-моделей. В скором можно будет гибко кастомизировать нейросеть под свои нужды, а также делиться созданными моделями с другими пользователями.
Обновления обещают раскатать для всех в течение нескольких недель.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👋 Напишем многопоточное приложение, которое моделирует работу нескольких супермаркетов. Каждый супермаркет создает список случайных чеков (сумм продаж) и передает их в налоговую службу для подсчета общей выручки.

🧠 Будем использовать:

🎛Многопоточность - класс ExecutorService и методы awaitTermination() и shutdown() используются для управления потоками выполнения.

🗂Коллекции - список bills в классе Supermarket используется для хранения чеков (сумм продаж).

Код: GitLab 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
💡Быстрая сортировка (QuickSort)

☝️Этот алгоритм использует стратегию "разделяй и властвуй".
Он выбирает опорный элемент, разбивает массив на две части - элементы, меньшие опорного и элементы, большие опорного. Затем он рекурсивно сортирует каждую из этих частей. В среднем случае сложность алгоритма O(n log n), но в худшем случае может достигать O(n^2).
✏️O(n log n)О(n логарифм n)” означает, что сложность алгоритма
составляет O(n log n), где "n" - размер входных данных.
Это означает, что время выполнения алгоритма будет увеличиваться пропорционально n и логарифму от n.

Код: QuickSort 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🧠 Insertion Sort

ℹ️ Сортировка вставками. Этот алгоритм проходит по массиву, вставляя каждый элемент на свое место в уже отсортированной части массива. Он имеет лучшую сложность, чем сортировки пузырьком и выбором - O(n^2) в худшем случае и O(n) в лучшем случае.


📖 Selection Sort

ℹ️ Сортировка выбором. Этот алгоритм проходит по массиву, находит минимальный элемент и меняет его местами с первым элементом. Затем он находит следующий минимальный элемент и меняет его местами со вторым элементом, и так далее. Сложность алгоритма также O(n^2), что делает его неэффективным для больших массивов.


☝️Выбор между сортировкой вставками, пузырьком и сортировкой выбором, зависит от конкретной ситуации. В целом, сортировка вставками обычно более эффективна на почти отсортированных данных, но сортировка выбором может быть более эффективна на больших массивах данных. Сортировка пузырьком обычно менее эффективна, чем обе эти сортировки.

⭐️Более эффективные алгоритмы сортировки, сортировка (QuickSort) и сортировка слиянием (MergeSort). В большинстве случаев, рекомендуется использовать эти алгоритмы вместо сортировки вставками, пузырьком или сортировки выбором.

💡Для выбора между этими алгоритмами, нужно оценить особенности конкретных данных и использовать более эффективные алгоритмы, такие как QuickSort или MergeSort, если это возможно.

Код: 👩‍💻
Insertion Sort
Selection Sort
Bubble Sort
MergeSort
QuickSort
Please open Telegram to view this post
VIEW IN TELEGRAM
Алгоритм RSA 😎

⭐️Основан на использовании двух больших простых чисел и математических операций с ними. Он используется для шифрования и подписи данных в криптографии.

📖 Алгоритм RSA работает следующим образом:

⭐️Генерация ключей: сначала выбираются два больших простых числа p и q. Затем вычисляется их произведение n = p * q, которое называется модулем. Также выбирается число e, которое является взаимно простым с числом (p-1)*(q-1). Эти числа (n, e) составляют открытый ключ. Затем вычисляется число d, которое является обратным к числу e по модулю (p-1)*(q-1). Число d является секретным ключом.

⭐️Шифрование: для шифрования сообщения m сначала оно преобразуется в число, меньшее n. Затем вычисляется зашифрованное сообщение c = m^e mod n.

⭐️Расшифрование: для расшифрования зашифрованного сообщения c сначала вычисляется исходное сообщение m = c^d mod n.

⚙️Алгоритм обладает высокой стойкостью к взлому благодаря трудности факторизации больших чисел на простые множители. Однако он также требует больших вычислительных ресурсов и может быть уязвим к атакам, связанным с криптоанализом или использованием слабых ключей. Поэтому важно правильно выбирать параметры алгоритма при генерации ключей.

Код: Генерация ключей 👩‍💻
Код:
Шифрование и расшифровка 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👋Класс HashSet

Это одна из реализаций интерфейса Set.
🔹Он использует хэширование для хранения элементов, что обеспечивает высокую эффективность операций добавления, удаления и поиска элементов.
🔹Класс HashSet не гарантирует порядок элементов, итерация по множеству может осуществляться в произвольном порядке.

💡Интерфейс Set и класс HashSet часто используются для хранения уникальных элементов, например, для фильтрации дубликатов в коллекциях, проверки уникальности значений и других задач, связанных с управлением множеством элементов.

Код: GitLab 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
😐Программа для учета расходов.

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

⚡️Предлагается ввести данные о своих доходах и зарплате, а затем управлять своими расходами.

Код: GitLab 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
💡Интерфейс Deque

🧑‍💻 Интерфейс Deque, используется для создания коллекции, которая представляет собой двустороннюю очередь элементов. Он расширяет интерфейсы Queue и Collection и определяет методы для работы с очередью, такие как добавление элемента в начало или конец очереди, удаление элемента из начала или конца очереди, проверка наличия элемента и т.д.

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

☝️Использование интерфейса Deque может быть полезным при работе с потоками данных, когда необходимо управлять порядком обработки элементов с обеих сторон или обрабатывать элементы в порядке приоритета.

⚡️Методы:

📖Добавление элементов:
🔸 void addFirst(E e): Добавляет элемент в начало очереди.
🔸 void addLast(E e): Добавляет элемент в конец очереди.

Удаление элементов:
🔸 boolean offerFirst(E e): Добавляет элемент в начало очереди и возвращает true, если удалось, иначе false.
🔸 boolean offerLast(E e): Добавляет элемент в конец очереди и возвращает true, если удалось, иначе false.
🔸 E removeFirst(): Удаляет и возвращает первый элемент, выбрасывая исключение, если очередь пуста.
🔸 E removeLast(): Удаляет и возвращает последний элемент, выбрасывая исключение, если очередь пуста.
🔸 E pollFirst(): Удаляет и возвращает первый элемент, возвращая null, если очередь пуста.
🔸 E pollLast(): Удаляет и возвращает последний элемент, возвращая null, если очередь пуста.
🔸 E getFirst(): Возвращает первый элемент без удаления, выбрасывая исключение, если очередь пуста.
🔸 E getLast(): Возвращает последний элемент без удаления, выбрасывая исключение, если очередь пуста.
🔸 E peekFirst(): Возвращает первый элемент без удаления, возвращая null, если очередь пуста.
🔸 E peekLast(): Возвращает последний элемент без удаления, возвращая null, если очередь пуста.

❗️Другие методы:
🔸 boolean contains(Object o): Проверяет, содержит ли очередь указанный элемент.
🔸 int size(): Возвращает количество элементов в очереди.
🔸 boolean isEmpty(): Проверяет, пуста ли очередь.

Код: GitLab 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🧑‍💻 Напишем функцию, которая проверяет каждый ход в игре крестики-нолики.

🗄Функция принимает текущее состояние поля в виде двумерного массива.
🔸Если игрок 'X' выиграл - везвращаем 'Х won', если выиграл игрок 'О', то 'O won'.
🔸Если никто не выиграл - 'Next.
🔸Если поле полностью заполнено, но никто не выиграл - 'Game over'.


✍️Функция solution, которая проверяет текущее состояние игры в крестики-нолики и возвращает соответствующий результат в зависимости от выигрыша, продолжения игры или окончания.

Код: GitLab 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🧠Алгоритм Бойера-Мура.

💻Алгоритм применяется для поиска подстроки в строке.

❗️Его эффективность особенно проявляется в случаях, когда искомая подстрока длиннее или сопоставима по длине с самой строкой, в которой производится поиск.

📖 Алгоритм часто используется в текстовых редакторах, поисковых системах, базах данных, компиляторах и в программном обеспечении для обработки текстов и анализа данных.

Код: GitLab 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🧑‍💻 Отправка HTTP-запросов (GET, POST, DELETE) с использованием стандартных классов Java для работы с сетью.🌐

💡Для выполнения HTTP-запросов используем классы HttpURLConnection, URL, BufferedReader, OutputStream и InputStreamReader из пакета java.net.

🗄 Сначала устанавливаем соединение с сервером, указываем тип запроса (GET, POST, DELETE) и настраивает необходимые параметры запроса.

⚡️После этого для запроса GET создается объект URL, через который происходит установка соединения.
Полученный ответ считывается построчно с
использованием BufferedReader и добавляется в буфер для дальнейшего использования.

⚡️Для запроса POST устанавливается флаг setDoOutput(true), чтобы разрешить вывод данных в соединение. После этого отправляются данные в формате JSON через OutputStream.
После отправки данных читается ответ сервера и выводится на экран.

⚡️Для запроса DELETE устанавливается метод запроса, который затем выполняется, и получается код ответа сервера.

🧠 Здесь мы отправляем HTTP-запросы без использования сторонних библиотек, прямо с помощью встроенных средств Java для работы с HTTP.

Код: GitLab (в README есть описание) 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
☃️Всех с наступающим Новым Годом!

✈️Пусть каждый из вас, открывая новую страницу в календаре, находит невероятные возможности для реализации своих мечт и целей.

🧑‍💻Пусть каждый день приносит радость, а каждый труд - удовлетворение от результатов.

🏡Желаю не только радости и отдыха, но и набраться сил для покорения новых вершин в грядущем году!🌲
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩4😍2🤝21🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Всем привет! 👋

🎚️ Сегодня, 1 марта стартовал пятый сезон
«Тренировки по алгоритмам 5.0» от Яндекс 💸

💜 Как устроены Тренировки 😎 и что получат участники:

📣 Обновлённые лекции по алгоритмам.

👥 Собеседования в прямом эфире.

🎁 Сертификат о прохождении Тренировок.

👥 Персональные тренировки для топ-200.

👥 Пробное алгоритмическое собеседование для топ-200.


Записывайтесь по 🧠ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩2