2022-05-01 21:50:12 +03:00
<!-- Code generated by gomarkdoc. DO NOT EDIT -->
# channels
```go
2024-04-28 00:20:22 +03:00
import "go.neonxp.ru/extra/channels"
2022-05-01 21:50:12 +03:00
```
Функции работы над каналами
## Index
- [func FanIn[T any ](chans ...chan T ) chan T](< #func-fanin>)
- [func FanOut[T any ](in chan T, workers int ) []chan T](< #func-fanout>)
## func FanIn
```go
func FanIn[T any](chans ...chan T) chan T
```
FanIn сливает несколько каналов в один
## func FanOut
```go
func FanOut[T any](in chan T, workers int) []chan T
```
FanOut раскидывает очередь канала на несколько каналов равномерно
# collections
```go
2024-04-28 00:20:22 +03:00
import "go.neonxp.ru/extra/collections"
2022-05-01 21:50:12 +03:00
```
Функции работы над обобщенными коллекциями
## Index
- [func Merge[T utils.Sortable[T]](s1, s2 []T) []T](< #func-merge>)
- [func MergeScalar[T utils.Scalar ](s1, s2 []T ) []T](< #func-mergescalar>)
## func Merge
```go
func Merge[T utils.Sortable[T]](s1, s2 []T) []T
```
Merge стабильное слияние двух слайсов
## func MergeScalar
```go
func MergeScalar[T utils.Scalar](s1, s2 []T) []T
```
MergeScalar стабильное слияние двух слайсов скаляров
# levenshtein
```go
2024-04-28 00:20:22 +03:00
import "go.neonxp.ru/extra/levenshtein"
2022-05-01 21:50:12 +03:00
```
Пакет с функциями получения редакторских правок по Левенштейну
## Index
- [type Edit ](<#type-edit> )
- [func Levenshtein[T comparable ](s1, s2 []T, cost EditCost[T] ) []Edit](< #func-levenshtein>)
- [func String(s1, s2 string) []Edit](< #func-string>)
- [func Strings(s1, s2 []string) []Edit](< #func-strings>)
- [type EditCost ](<#type-editcost> )
- [type EditType ](<#type-edittype> )
## type Edit
Edit редакторская правка описывающее одно действие над исходной последовательностью
```go
type Edit struct {
Type EditType // Тип правки: Вставка/Замена/Удаление
Idx1 int // Индекс элемента из первой последовательности
Idx2 int // Индекс элемента из второй последовательности
}
```
### func Levenshtein
```go
func Levenshtein[T comparable](s1, s2 []T, cost EditCost[T]) []Edit
```
Levenshtein возвращает последовательность правок для превращения последовательности элементов s1 в s2 с учетом стоимостей операций возвращаемых функцией cost TODO в алгоритме не предусмотрена экономия памяти ¯\\\_\(ツ\)\_/¯
### func String
```go
func String(s1, s2 string) []Edit
```
String возвращает последовательность правок для превращения строки s1 в строку s2
### func Strings
```go
func Strings(s1, s2 []string) []Edit
```
Strings возвращает последовательность правок для превращения слайса строк s1 в слайс строк s2
## type EditCost
EditCost функция возвращающая стоимость действия t над элементами from\, to
```go
type EditCost[T comparable] func(t EditType, from *T, to *T) int
```
## type EditType
EditType тип правки
```go
type EditType int
```
```go
const (
Insert EditType = iota // Вставка
Replace // Замена
Delete // Удаление
)
```
# math
```go
2024-04-28 00:20:22 +03:00
import "go.neonxp.ru/extra/math"
2022-05-01 21:50:12 +03:00
```
Пакет с математическими функциями над обобщенными типами
## Index
- [func Max[T utils.Sortable[T]](a ...T) T](< #func-max>)
- [func MaxScalar[T utils.Scalar ](a ...T ) T](< #func-maxscalar>)
- [func Min[T utils.Sortable[T]](a ...T) T](< #func-min>)
- [func MinScalar[T utils.Scalar ](a ...T ) T](< #func-minscalar>)
## func Max
```go
func Max[T utils.Sortable[T]](a ...T) T
```
Max возвращает максимальное из переданных Sortable значений
## func MaxScalar
```go
func MaxScalar[T utils.Scalar](a ...T) T
```
MaxScalar возвращает максимальное из переданных скалярных значений
## func Min
```go
func Min[T utils.Sortable[T]](a ...T) T
```
Min возвращает минимальное из переданных Sortable значений
## func MinScalar
```go
func MinScalar[T utils.Scalar](a ...T) T
```
MinScalar возвращает минимальное из переданных скалярных значений
# subseq
```go
2024-04-28 00:20:22 +03:00
import "go.neonxp.ru/extra/subseq"
2022-05-01 21:50:12 +03:00
```
Пакет с функциями получения подпоследовательностей \(например\, подстроки\)
## Index
- [func MaxSubsequence(s1, s2 string) string ](<#func-maxsubsequence> )
- [func MaxSubset[T comparable ](s1, s2 []T ) []T](< #func-maxsubset>)
- [func MaxSubsetSequence[T comparable ](s1, s2 []T ) []T](< #func-maxsubsetsequence>)
- [func MaxSubstring(s1, s2 string) string ](<#func-maxsubstring> )
## func MaxSubsequence
```go
func MaxSubsequence(s1, s2 string) string
```
MaxSubsequence возвращает максимальную общую подпоследовательность символов
## func MaxSubset
```go
func MaxSubset[T comparable](s1, s2 []T) []T
```
## func MaxSubsetSequence
```go
func MaxSubsetSequence[T comparable](s1, s2 []T) []T
```
## func MaxSubstring
```go
func MaxSubstring(s1, s2 string) string
```
MaxSubstring возвращаает максимальную общую подстроку
# utils
```go
2024-04-28 00:20:22 +03:00
import "go.neonxp.ru/extra/utils"
2022-05-01 21:50:12 +03:00
```
Всякое разное
## Index
- [func Ptr[T any ](t T ) *T](< #func-ptr>)
- [type Scalar ](<#type-scalar> )
- [type Sortable ](<#type-sortable> )
## func Ptr
```go
func Ptr[T any](t T) *T
```
Ptr получение указателя от произвольного значения\, например\, ToPtr\(true\) \-\> \*bool\(true\)
## type Scalar
Scalar соответствует скалярам над которыми определены операции сравнения
```go
type Scalar interface {
// contains filtered or unexported methods
}
```
## type Sortable
Sortable соответствует типам над которыми определена операция Less
```go
type Sortable[T any] interface {
Less(T) bool
}
```
Generated by [gomarkdoc ](<https://github.com/princjef/gomarkdoc> )