Составьте программу, реализующую алгоритм Крускала для вычисления минимальной суммарной длины дорожек в парке аттракционов. Дорожки должны быть проложены таким образом, чтобы между любыми двумя аттракционами существовал маршрут.
Программа должна считывать со стандартного потока ввода количество аттракционов и их координаты. При этом координаты каждого аттракциона задаются парой целых чисел (в декартовой системе).
Программа должна выводить в стандартный поток вывода минимальную суммарную длину дорожек с точностью до двух знаков после запятой.
Например, для входных данных
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
  👍7❤5🔥1🥰1
  «Посмотри-и-скажи» — это последовательность чисел, начинающаяся следующим образом:
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
  👍6❤3🥰1
  HTTP-фреймворк Go с высокой производительностью для создания микросервисов.
@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍14🔥7❤1👎1
  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
  🔥13👍5❤1
  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
  👍10❤3🔥1
  conc - позиционирется как “better structured concurrency for go”
Пакет поможет сократить кучу шаблонного кода
#golang
https://github.com/sourcegraph/conc
@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍9🔥3❤2
  Он прост в развертывании и мониторинге и готов к внедрению в ваш пайплайн в виде статического бинаря, Docker-образа или бессерверной функции.
Небольшой конфиг на yml и полетели
@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍10❤1🔥1
  Одной из главных фишек языка Go является удобная работа с конкурентностью. Однако, в больших проектах всё равно возникают некоторые проблемы:
▪утечка горутин
▪некорректная обработка паник в горутинах
▪плохая читаемость кода
▪необходимость писать повторяющийся код из раза в раз
Как указывает автор библиотеки в своей статье, он часто сталкивается с ошибками при работе с горутинами, что побудило его создать новую библиотеку conc.
▪Читать дальше
@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍13🤔4❤1👎1🔥1
  Даны два числа. Определить цифры, входящие в запись как первого, так и второго числа. Программа получает на вход два числа.
Гарантируется, что цифры в числах не повторяются. Числа в пределах от 0 до 10000. Программа должна вывести цифры, которые имеются в обоих числах, через пробел. Цифры выводятся в порядке их нахождения в первом числе.
Пример: Ввод: 564 8954 Вывод: 5 4
package main
    import "fmt"
    func main(){
        var a, b, x , y int
        fmt.Scan(&a, &b)
        j:=10000
        for a > 0{
            x = a / j
            a = a % j
            y = b
            for y > 0 && x > 0{
                if y%10 == x {
                    fmt.Print(x, " ")
                    
                }
                y = y/10
            }
            j = j/10
        }
    }Вариант2
package main
import "fmt" 
import "strconv"
func main() {
var (
    sum  string
    a, b int
)
for true {
    fmt.Println("Enter two nums 0 <= num <= 10000")
    fmt.Scan(&a, &b)
    if a < 0 || a > 10000 || b < 0 || b > 10000 {
        fmt.Println("Enter correct nums")
        continue
    } else {
        break
    }
}
for _, n := range strconv.Itoa(a) {
    for _, k := range strconv.Itoa(b) {
        if n == k {
            sum += string(n) + " "
        }
    }
}
fmt.Println(sum)
}
👉 Пишите свое решение в комментариях👇
@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍5🔥3❤1👎1
  #проектирование_систем
Бесплатная книга по системному проектированию
Бесплатная книга от ByteByteGo.
📚 книга
@Golang_google
Бесплатная книга по системному проектированию
Бесплатная книга от ByteByteGo.
📚 книга
@Golang_google
👍12❤4🔥1🤔1
  Полнофункциональный веб-фреймворк для Golang, вдохновленный Django.
@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  😁13👍11🔥3🤯2🤬2❤1👎1
  Описание задачи
Разработать микросервис для работы с балансом пользователей (баланс, зачисление/списание/перевод средств).
Сервис должен предоставлять HTTP API и принимать/отдавать запросы/ответы в формате JSON. Дополнительно реализовать методы конвертации баланса и получение списка транзакций. Полное описание в TASK.
Реализация
▪Следование дизайну REST API.
▪Подход "Чистой Архитектуры" и техника внедрения зависимости.
▪Работа с фреймворком gin-gonic/gin.
▪Работа с СУБД Postgres с использованием библиотеки sqlx и написанием SQL запросов.
▪Конфигурация приложения - библиотека viper.
▪Запуск из Docker.
▪Unit/Интеграционное - тестирование уровней обработчикоов, бизнес-логики и взаимодействия с БД с помощью моков - библиотеки testify, mock.
📌 Github
@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  ❤16👍8👎3🔥3😁3
  Небольшая библиотека webview для C/C++/Go для создания современных кроссплатформенных графических интерфейсов.
@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍7❤4🔥3
  Пакет oauth2 содержит реализацию клиента для спецификации OAuth 2.0.
@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍13❤2🔥2🤔1
  Pixie - это удобный инструмент мониторинга с открытым исходным кодом для приложений Kubernetes.
@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍6❤2🔥1
  Задача с leetcode. Контейнер с наибольшим количеством воды
Дан целочисленный массив height длины n. Нарисовано n вертикальных линий, две конечные точки i-й линии равны (
Верните максимальное количество воды, которое может храниться в контейнере. Обратите внимание, что вы не можете наклонять контейнер.
Пример 1 (картинка):
Ввод:
Объяснение: Вышеуказанные вертикальные линии представлены массивом
Пример 2:
Ввод:
Решение:
Пишите свое решение в комментариях👇
@Golang_google
  
  
  
  
  
Дан целочисленный массив height длины n. Нарисовано n вертикальных линий, две конечные точки i-й линии равны (
i, 0) и (i, height[i]). Найдите две линии, которые вместе с осью абсцисс образуют контейнер, содержащий наибольшее количество воды. Верните максимальное количество воды, которое может храниться в контейнере. Обратите внимание, что вы не можете наклонять контейнер.
Пример 1 (картинка):
Ввод:
height = [1,8,6,2,5,4,8,3,7]
Вывод: 49 Объяснение: Вышеуказанные вертикальные линии представлены массивом
[1,8,6,2,5,4,8,3,7]. В этом случае максимальная площадь воды (синяя секция), которую может содержать контейнер, составляет 49.Пример 2:
Ввод:
 height = [1,1]
Вывод: 1Решение:
func maxArea(height []int) int {
    var maxArea int = 0
    var i int = 0
    var j int = len(height)-1
    var result int = 0
    
    for i < j {        
        if(height[i] <= height[j]) {
            result = height[i] * (j-i)
            i++
        } else {
            result = height[j] * (j-i)
            j--
        }
                
        if(result > maxArea) {
            maxArea = result
        }
    }
    return maxArea
}Пишите свое решение в комментариях👇
@Golang_google
👍10❤2🔥1
  📌 Задача с leetcode. Max Area of Island
Максимальная площадь острова
Сложность: Средняя
Условие задачи: Условие задачи:
Дан двумерный массив размера m x n. "1" отвечает за сушу, "0" - за океан. Необходимо опеределить максмимальную площадь острова из островов, расположенных на карте.
Островом считается территория, образованная из "1", расположенных сверху, справа, снизу и слева относительно друг друга.
Пример:
Ввод: grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,0,0,0,0,0,1,1,0,0,0,0]]
Вывод: 6
Ввод: grid = [[0,0,0,0,0,0,0,0]]
Вывод: 0
Решение
Временная сложность:
Пространственная сложность:
Пишите свое решение в комментариях👇
@Golang_google
  
  
  
  
  
Максимальная площадь острова
Сложность: Средняя
Условие задачи: Условие задачи:
Дан двумерный массив размера m x n. "1" отвечает за сушу, "0" - за океан. Необходимо опеределить максмимальную площадь острова из островов, расположенных на карте.
Островом считается территория, образованная из "1", расположенных сверху, справа, снизу и слева относительно друг друга.
Пример:
Ввод: grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,0,0,0,0,0,1,1,0,0,0,0]]
Вывод: 6
Ввод: grid = [[0,0,0,0,0,0,0,0]]
Вывод: 0
Решение
func maxAreaOfIsland(grid [][]int) int {
 rows := len(grid)
 if rows == 0 {
  return 0
 }
 cols := len(grid[0])
 var dfs func(grid [][]int, x, y, r, c, area int) int
 dfs = func(grid [][]int, x, y, r, c, area int) int {
  if x < 0 || y < 0 || x >= r || y >= c || grid[x][y] != 1 {
   return area
  }
  grid[x][y] = 2
  return 1 + dfs(grid, x+1, y, r, c, area) + dfs(grid, x, y+1, r, c, area) + dfs(grid, x-1, y, r, c, area) + dfs(grid, x, y-1, r, c, area)
 }
 maxArea := 0
 for i := 0; i < rows; i++ {
  for j := 0; j < cols; j++ {
   area := dfs(grid, i, j, rows, cols, 0)
   maxArea = int(math.Max(float64(area), float64(maxArea)))
  }
 }
 return maxArea
}Временная сложность:
O(N*M)Пространственная сложность:
O(1)Пишите свое решение в комментариях👇
@Golang_google
👍14🔥5👎2❤1
  📌 Задача с Leetcode. Поиск в двумерной матрице
Сложность: Средняя
Условие задачи: напишите эффективный алгоритм для поиска наличия нужного числа в двумерной матрице, которая имеет следующие свойства:
▪ в строке элементы отсортированы по возрастанию (слева - направо);
▪ в столбце элементы отсортированы по возрастанию (снизу - вверх).
Пример:
Ввод:
Вывод:
Решение:
Временная сложность:
Пространственная сложность:
Пишите свое решение в комментариях👇
@Golang_google
Сложность: Средняя
Условие задачи: напишите эффективный алгоритм для поиска наличия нужного числа в двумерной матрице, которая имеет следующие свойства:
▪ в строке элементы отсортированы по возрастанию (слева - направо);
▪ в столбце элементы отсортированы по возрастанию (снизу - вверх).
Пример:
Ввод:
matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5Вывод:
trueРешение:
func searchMatrix(matrix [][]int, target int) bool {
    m, n := len(matrix), len(matrix[0])
    i, j := 0, n-1
    for i < m && j >= 0 {
        if matrix[i][j] == target {
            return true
        }
        if matrix[i][j] < target {
            i++
        } else {
            j--
        }
    }
    return false
}Временная сложность:
O(m + n)Пространственная сложность:
O(1)Пишите свое решение в комментариях👇
@Golang_google
👍7❤5🔥1🥰1