Forwarded from Timur
✅Задачка по Go
📚Условие:
Напишите функцию, которая принимает список
из этого списка. Домен — это часть адреса после символа
🔍Нюанс:
Если эту задачу решать на
самому писать (что я и сделал).
💡Решение:
Сверху есть картинка кода реализации структуры данных Set.
И так же есть картинка с решением задачи.
👁🗨Пример:
«
»
#task #go
📚Условие:
Напишите функцию, которая принимает список
email-адресов и возвращает уникальные домены из этого списка. Домен — это часть адреса после символа
@.🔍Нюанс:
Если эту задачу решать на
Golang, то структуру данных Set придётсясамому писать (что я и сделал).
💡Решение:
И так же есть картинка с решением задачи.
👁🗨Пример:
«
["user1@example.com", "user2@test.com", "user3@example.com", "user4@sample.com"]»
{"example.com", "test.com", "sample.com"}#task #go
Forwarded from Timur
✅Задача на
📚Дано целое
квадратных чисел, сумма которых равна
💡Идеальный квадрат - это целое число, равное квадрату
целого числа (например, 1, 4, 9 и 16).
💡Подсказка:
Для решение задачи, можно использовать
алгоритм .
👁🗨Пример №1:
«
»
// 12 = 4 + 4 + 4
👁🗨Пример №2:
«
»
// 13 = 4 + 9
#task #go
Go «Perfect Squares»📚Дано целое
число n, верните наименьшее число идеальных квадратных чисел, сумма которых равна
n.💡Идеальный квадрат - это целое число, равное квадрату
целого числа (например, 1, 4, 9 и 16).
💡Подсказка:
алгоритм
<<Динамическое программирование>>👁🗨Пример №1:
«
n = 12»
3// 12 = 4 + 4 + 4
👁🗨Пример №2:
«
n = 13»
2// 13 = 4 + 9
#task #go
Forwarded from Timur
🟢Алгоритм сортировки слиянием (
📚Описание:
Сортировка слиянием — это один из эффективных алгоритмов
сортировки, основанный на принципе разделяй и властвуй.
Алгоритм состоит из двух этапов:
1. Разделение массива на подмассивы
2. Слияние подмассивов в отсортированном порядке
Предположим, у нас есть массив:
- Разделяем массив на 2 части
- И так рекурсивно делим массив до одного элемента в нём
- Дальше Соединяем обратно
📉Сложность:
⌚️Время:
💾Память:
#algorithms #go
Merge Sort) на Golang 📚Описание:
Сортировка слиянием — это один из эффективных алгоритмов
сортировки, основанный на принципе разделяй и властвуй.
Алгоритм состоит из двух этапов:
1. Разделение массива на подмассивы
mergeSort().2. Слияние подмассивов в отсортированном порядке
mergeTwoSlice().Предположим, у нас есть массив:
[5, 3, 8, 6, 2, 7, 4, 1].- Разделяем массив на 2 части
left = [5, 3, 8, 6]; right = [2, 7, 4, 1]- И так рекурсивно делим массив до одного элемента в нём
- Дальше Соединяем обратно
[5] и [3] -> [3, 5], [8] и [6] -> [6, 8] и т.д📉Сложность:
⌚️Время:
O(n log n)💾Память:
O(n)#algorithms #go
Forwarded from Timur
✅Алгоритм
💡Объяснение:
Принцип работы основан на методологии "Разделяй и властвуй".
🔵Алгоритм имеет 3️⃣ этапа:
2. Мы должны выбрать pivot element (опорный элемент), есть много вариантов как мы
будем выбирать этот элемент, но мы воспользуемся самым простым, а именно будем брать
последний элемент массива.
3. Берём pivot и все элементы которые меньше pivot, располагаем слева от pivot,
все элементы которые больше pivot располагаем справа.
🔄И повторяем действия 2 и 3 пункт рекурсивно,
до тех пор пока массив не будет отсортирован.
⚙️Уточнение:
параметры
👁🗨Пример:
«
»
📉Сложность:
⌚️Время:
#algorithms #go
QuickSort(Быстрая сортировка) на Golang 💡Объяснение:
📚QuickSort - это алгоритм быстрой сортировки элементов в массиве.Принцип работы основан на методологии "Разделяй и властвуй".
🔵Алгоритм имеет 3️⃣ этапа:
1. На вход поступает не отсортированный массив. 2. Мы должны выбрать pivot element (опорный элемент), есть много вариантов как мы
будем выбирать этот элемент, но мы воспользуемся самым простым, а именно будем брать
последний элемент массива.
3. Берём pivot и все элементы которые меньше pivot, располагаем слева от pivot,
все элементы которые больше pivot располагаем справа.
🔄И повторяем действия 2 и 3 пункт рекурсивно,
до тех пор пока массив не будет отсортирован.
⚙️Уточнение:
параметры
maxIndex и minIndex это диапазон сортировки массива.slice - можно воспринимать как array, просто в golang slice это динамический массив.👁🗨Пример:
«
[9, 12, 9, 2, 17, 1, 6]»
[1, 2, 6, 9, 9, 12, 17]📉Сложность:
⌚️Время:
O(n log n)#algorithms #go
Forwarded from Timur
🟢Алгоритм
⚙️Суть алгоритма:
💡Начинаем с того что в
принимаем не отсортированный массив. Потом
идёт проверка если массив пустой или имеет только
1 элемент, мы считаем его отсортированным и завершаем
работу функции (или возвращаем передаваемый массив, если
реализация не через указатель). Дальше пробегаемся по
всему массиву и на каждой итерации первого цикла, мы
вызываем 2 цикл, который уже от текущего элемента
до нулевого элемента(то есть начало массива). И при
этом сравниваем текущий элемент с предыдущим, и
если текущей элемент окажется меньше предыдущего, то меняем местами
их в массиве, в противном случаи выходим из 2 цикла, и так до конца всего
массива. На выходи получаем отсортированный массив.
📉Сложность:
⌚️Время:
💾Память:
#algorithms #go
Insertion Sort(Сортировка вставки) на Golang ⚙️Суть алгоритма:
💡Начинаем с того что в
function insertionSort мы принимаем не отсортированный массив. Потом
идёт проверка если массив пустой или имеет только
1 элемент, мы считаем его отсортированным и завершаем
работу функции (или возвращаем передаваемый массив, если
реализация не через указатель). Дальше пробегаемся по
всему массиву и на каждой итерации первого цикла, мы
вызываем 2 цикл, который уже от текущего элемента
(*(nums[i])) до нулевого элемента(то есть начало массива). И при
этом сравниваем текущий элемент с предыдущим, и
если текущей элемент окажется меньше предыдущего, то меняем местами
их в массиве, в противном случаи выходим из 2 цикла, и так до конца всего
массива. На выходи получаем отсортированный массив.
📉Сложность:
⌚️Время:
O(n**2)💾Память:
O(1)#algorithms #go
✅Задача для
📚Напишите функцию, которая принимает
массив строк в качестве аргумента и
возвращает отсортированный массив,
содержащий те же строки, упорядоченные от
самой короткой к самой длинной.
👁🗨Пример:
«
»
#task #go
Golang:📚Напишите функцию, которая принимает
массив строк в качестве аргумента и
возвращает отсортированный массив,
содержащий те же строки, упорядоченные от
самой короткой к самой длинной.
👁🗨Пример:
«
["Telescopes", "Glasses", "Eyes", "Monocles"]»
["Eyes", "Glasses", "Monocles", "Telescopes"]#task #go
👍2
Forwarded from Timur
🟢Предобработка текстовых данных и создание
мешка слов
📚Напишите функцию, которая принимает список текстовых
строк и возвращает мешок слов (Bag of Words) в виде
словаря, где ключи — это уникальные слова, а значения —
их частота встречаемости в текстах. Функция должна выполнять
базовую предобработку текста: приведение к нижнему регистру,
удаление знаков препинания и стоп-слов.
👁🗨Пример:
«
»
#task #go
мешка слов
(Bag of Words) на Go📚Напишите функцию, которая принимает список текстовых
строк и возвращает мешок слов (Bag of Words) в виде
словаря, где ключи — это уникальные слова, а значения —
их частота встречаемости в текстах. Функция должна выполнять
базовую предобработку текста: приведение к нижнему регистру,
удаление знаков препинания и стоп-слов.
👁🗨Пример:
«
[]string{
"I love data science!",
"Data science is amazing.",
"Machine learning is a part of data science."
}»
map[
amazing:1 data:3 learning:1
love:1 machine:1 part:1 science:3
]#task #go
📦 go-logger-lib — лёгкая и удобная библиотека для логирования в Go.
✅ Простая интеграция
✅ Настраиваемые уровни логов
✅ Поддержка вывода в консоль и файл
🔗 GitHub: github.com/Freyzan2006/go-logger-lib
#go #golang #lib
✅ Простая интеграция
✅ Настраиваемые уровни логов
✅ Поддержка вывода в консоль и файл
🔗 GitHub: github.com/Freyzan2006/go-logger-lib
#go #golang #lib
✅ gRPC и Go (Golang)
📚Если REST уже стал привычным инструментом, самое время познакомиться с gRPC — быстрым и строгим способом общения сервисов между собой
Что такое gRPC?
gRPC — это RPC-фреймворк от Google, который:
* использует HTTP/2
* передаёт данные через Protocol Buffers
* отлично подходит для микросервисов
* быстрее и компактнее REST + JSON
⚙️Базовый флоу работы с gRPC в Go:
1️⃣Описываем контракт в
2️⃣ Генерируем код:
3️⃣ Реализуем server (структура + методы)
4️⃣ Поднимаем gRPC-сервер
5️⃣ Пишем client и вызываем методы как обычные функции
Пример RPC-метода:
Когда стоит выбирать
✔️ микросервисы
✔️ высокая нагрузка
✔️ строгие контракты между сервисами
✔️ внутренняя коммуникация
#web #backend #go
📚Если REST уже стал привычным инструментом, самое время познакомиться с gRPC — быстрым и строгим способом общения сервисов между собой
Что такое gRPC?
gRPC — это RPC-фреймворк от Google, который:
* использует HTTP/2
* передаёт данные через Protocol Buffers
* отлично подходит для микросервисов
* быстрее и компактнее REST + JSON
⚙️Базовый флоу работы с gRPC в Go:
1️⃣Описываем контракт в
.proto2️⃣ Генерируем код:
protoc --go_out=. --go-grpc_out=. service.proto
3️⃣ Реализуем server (структура + методы)
4️⃣ Поднимаем gRPC-сервер
5️⃣ Пишем client и вызываем методы как обычные функции
Пример RPC-метода:
service UserService {
rpc GetUser (UserRequest) returns (UserResponse);
}Когда стоит выбирать
gRPC?✔️ микросервисы
✔️ высокая нагрузка
✔️ строгие контракты между сервисами
✔️ внутренняя коммуникация
#web #backend #go
🤔1