extra/doc.md
2022-05-01 21:50:12 +03:00

278 lines
6.6 KiB
Markdown
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- 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>)