The Algorithms — проект с открытым исходным кодом, созданный группой разработчиков для понимания структур данных и алгоритмов на разных языках. Любой желающий может внести свой вклад в проект или помочь решить задачу других:
1. Go
2. JavaScript
3. Python
4. Java
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Лучший способ изучить новый язык программирования — это практика. В этом репозитории собрано более 100 задач для Go. Изначально автор создал проект для своего курса, но позже добавил упражнения для всех желающих изучить этот язык:
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Инструмент GitLab CLI, написанный на Go, позволяющий работать с GitLab в командной строке.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
На строительном участке нужно создать телефонную сеть, соединяющую все бытовки. Для того, чтобы телефонные линии не мешали строительству, их решили проводить вдоль дорог. Составьте программу, реализующую алгоритм Прима для вычисления минимальной общей длины телефонных линий для указанной конфигурации участка. Граф конфигурации участка должен быть представлен в программе в виде списка инцидентности.
Программа должна считывать со стандартного потока ввода количество бытовок , количество дорог , соединяющих бытовки, и информацию об этих дорогах. При этом каждая дорога задаётся тремя целыми числами , и , где и — номера соединяемых дорогой бытовок (), а — длина дороги.
Программа должна выводить в стандартный поток вывода минимальную общую длину телефонных линий.
Например, для входных данных
7
10
0 1 200
1 2 150
0 3 100
1 4 170
1 5 180
2 5 100
3 4 240
3 6 380
4 6 210
5 6 260
программа должна выводить число
930
.Пишите свой ответ в комментариях👇
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Довольно быстрый анализатор использования диска, написанный на Go.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Здесь собрана большая коллекция вопросов и ответов на них, необходимых не только для прохождения собеседований, но и для комплексного развития кругозора.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Он работает путем рендеринга веб-страницы в изображение GIF или PNG с интерактивной картой изображений.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 12 приёмов Go, которые помогут в работе
Работая над производственными проектами, я заметил, что часто дублирую код и использую одни и те же определённые методы, не осознавая этого до тех пор, пока не перепроверю свой код.
Чтобы избавиться от этой проблемы, я собрал небольшие скрипты, которые оказалось весьма полезным для меня. Я также подумал, что они могут быть полезными и для других.
Ниже приведены некоторые полезные и универсальные фрагменты кода, случайно выбранные из моих работ, без какой-либо конкретной классификации.
▪ Читать
@Golang_google
Работая над производственными проектами, я заметил, что часто дублирую код и использую одни и те же определённые методы, не осознавая этого до тех пор, пока не перепроверю свой код.
Чтобы избавиться от этой проблемы, я собрал небольшие скрипты, которые оказалось весьма полезным для меня. Я также подумал, что они могут быть полезными и для других.
Ниже приведены некоторые полезные и универсальные фрагменты кода, случайно выбранные из моих работ, без какой-либо конкретной классификации.
▪ Читать
@Golang_google
echo "# название" >> README.md
- создание файла README.mdgit init
- инициализация репозиторияgit add README.md
- добавления файла README.md в проектgit commit -m "first commit"
- получает проиндексированный снимок состояния и выполняет его коммит в историю проектаgit remote add origin https://github.com/stanruss/название.git
- команда, которой устанавливается подключение к удаленному серверу и git репозиторию, размещающемуся на нем.git push -u origin master
- кзменения отправляются на удаленный серверgit log --oneline
- посмотреть все коммиты.git checkout .
- восстановить все.git checkout "код коммита"
- вернуть до состояния этого коммита.git checkout master
- вернуться в ветку мастер.Восстановить файлы на локальном компьютере:
```git fetch --all
git reset --hard origin/master или git reset --hard origin/<название_ветки>
```
git add text.txt
- Добавить файл в репозиторийgit rm text.txt
- Удалить файлgit status
- Текущее состояние репозитория (изменения, неразрешенные конфликты и тп)git commit -a -m "Commit description"
- Сделать коммитgit push origin
- Замерджить все ветки локального репозитория на удаленный репозиторий git push origin master
- Аналогично предыдущему, но делается пуш только ветки mastergit push origin HEAD
- Запушить текущую ветку, не вводя целиком ее названиеgit pull origin
- Замерджить все ветки с удаленного репозиторияgit pull origin master
- Аналогично предыдущему, но накатывается только ветка mastergit pull origin HEAD
- Накатить текущую ветку, не вводя ее длинное имяgit fetch origin
- Скачать все ветки с origin, но не мерджить их в локальный репозиторийgit fetch origin master
- Аналогично предыдущему, но только для одной заданной веткиgit checkout -b some_branch origin/some_branch
- Начать работать с веткой some_branch (уже существующей)git branch some_branch
- Создать новый бранч (ответвится от текущего)git checkout some_branch
- Переключиться на другую ветку (из тех, с которыми уже работаем)git branch
# звездочкой отмечена текущая ветвь - Получаем список веток, с которыми работаемgit branch -a # | grep something
- Просмотреть все существующие ветвиgit merge some_branch
- Замерджить some_branch в текущую веткуgit branch -d some_branch
- Удалить бранч (после мерджа)git branch -D some_branch
- Просто удалить бранч (тупиковая ветвь)git show d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4
- Изменения, сделанные в заданном коммитеgit push origin :branch-name
- Удалить бранч из репозитория на сервереgit reset --hard d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4
- Откатиться к конкретному коммиту и удалить последующие (хэш смотрим в «git log»)git push -f
- залить на сервер измененные коммитыgit clean -f
- Удаление untracked files#git #github #doc #cheatsheet
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
В настоящее время существует огромное количество всеразличного рода анонимных (скрытых) сетей, начиная с теоретически доказуемых (DC-сети, Queue-сети, Entropy-сети) и заканчивая практически используемыми (Tor, I2P, Mixminion).
При таком количестве реализаций было бы очень удобно обобщить структуру всех таковых систем и привести их к общим составляющим. В результате подобных действий, мы сможем не только лучше понять то, как строятся современные анонимные сети, но и то, как их можно улучшать.
▪ Читать
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Библиотека Go, упрощающая создание и очистку зависимостей на основе контейнеров для автоматизированных интеграционных/smoke тестов.
Она позволяет разработчикам программно определять контейнеры, которые следует запускать как часть теста, и очищать эти ресурсы после завершения теста.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Проект на Go для работы с Linux-контейнерами,кль управляемые искусственным интеллектом.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
https://github.com/stephenafamo/bob
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Эта библиотека предоставляет возможность взаимодействия с базами данных PostgreSQL на языке Go с помощью быстрого и эффективного драйвера, позволяющего с легкостью выполнять SQL-запросы, транзакции и массовые операции.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Вы когда-нибудь обнаруживали, что застряли в середине проекта, пытаясь решить сложную проблему? Что ж, вы не одиноки. Многие разработчики сталкиваются с такими проблемами при создании программного обеспечения, и именно в данных ситуациях пригождаются библиотеки.
Они помогают вам легко создавать сложные и трудоёмкие программы, экономя ваше время и усилия. С таким количеством библиотек может быть трудно решить, какую из них использовать. Итак, я составил список из 7 библиотек Go, которые обязательно помогут вам на вашем пути разработчика.
▪ Читать
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Составьте программу, реализующую алгоритм Крускала для вычисления минимальной суммарной длины дорожек в парке аттракционов. Дорожки должны быть проложены таким образом, чтобы между любыми двумя аттракционами существовал маршрут.
Программа должна считывать со стандартного потока ввода количество аттракционов и их координаты. При этом координаты каждого аттракциона задаются парой целых чисел (в декартовой системе).
Программа должна выводить в стандартный поток вывода минимальную суммарную длину дорожек с точностью до двух знаков после запятой.
Например, для входных данных
12
2 4
2 5
3 4
3 5
6 5
6 6
7 5
7 6
5 1
5 2
6 1
6 2
программа должна выводить число 14.83.👉 Пишите ваше решение в комментариях👇
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
«Посмотри-и-скажи» — это последовательность чисел, начинающаяся следующим образом:
1, 11, 21, 1211, 111221, 312211, 13112221, 1113213211,… (последовательность A005150 в OEIS).
Каждое последующее число генерируется из предыдущего путём конкатенации цифры, из которой состоит группа одинаковых цифр и количества цифр в этой группе, для каждой группы одинаковых цифр в числе.
Решим задачу с leetcode: https://leetcode.com/problems/count-and-say
Пример1:
Input: n = 1
Output: '1'
Пример2:
Input: n = 4
Output: '1211'
Explanation:
countAndSay(1) = '1'
countAndSay(2) = say '1' = one 1 = '11'
countAndSay(3) = say '11' = two 1's = '21'
countAndSay(4) = say '21' = one 2 + one 1 = '12' + '11' = '1211'
Ограничения:
- 1 <= n <= 30
Решение:
func countAndSay(n int) string {
dp := make([]string, n + 1)
dp[1] = '1'
var current, next string
counter := 1
for i := 2; i <= n; i++ {
current = dp[i - 1]
next = ''
counter = 1
for j := 1; j < len(current); j++ {
if current[j - 1] == current[j] {
counter++
} else {
next += strconv.Itoa(counter) + string(current[j - 1])
counter = 1
}
}
next += strconv.Itoa(counter) + current[len(current) - 1:]
dp[i] = next
}
return dp[n]
}
👉 Пишите свое решение в комментариях👇
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
HTTP-фреймворк Go с высокой производительностью для создания микросервисов.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Go-клиент для взаимодействия с OpenAI API, который поддерживает ChatGPT
GPT-3/GPT-4, DALL·E 2 и Whisper.
https://github.com/sashabaranov/go-openai
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
func foo(a []int) {
a = append(a, 7)
a[1] = 7
}
func bar(a *[]int) {
*a = append(*a, 7)
}
func main() {
a := []int{1, 2, 3, 4, 5, 6}
fmt.Printf("a[1]=%d\n", a[1])
b := a[1:3]
b[0] = 10
fmt.Printf("1. a[1]=%d\n", a[1]) // что выведет?
b = append(b, a...)
b[0] = 100
fmt.Printf("2. a[1]=%d\n", a[1]) // что выведет?
foo(a)
fmt.Printf("3. a[1]=%d\n", a[1]) // что выведет?
bar(&a)
fmt.Printf("4. a=%v\n", a) // что выведет?
}
Ответ
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
conc - позиционирется как “better structured concurrency for go”
Пакет поможет сократить кучу шаблонного кода
#golang
https://github.com/sourcegraph/conc
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM