extra/doc.md

279 lines
6.6 KiB
Markdown
Raw Normal View History

2022-05-01 21:50:12 +03:00
<!-- Code generated by gomarkdoc. DO NOT EDIT -->
# channels
```go
import "go.neonxp.dev/extra/channels"
```
Функции работы над каналами
## 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
import "go.neonxp.dev/extra/collections"
```
Функции работы над обобщенными коллекциями
## 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
import "go.neonxp.dev/extra/levenshtein"
```
Пакет с функциями получения редакторских правок по Левенштейну
## 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
import "go.neonxp.dev/extra/math"
```
Пакет с математическими функциями над обобщенными типами
## 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
import "go.neonxp.dev/extra/subseq"
```
Пакет с функциями получения подпоследовательностей \(например\, подстроки\)
## 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
import "go.neonxp.dev/extra/utils"
```
Всякое разное
## 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>)