combination

package
v0.4.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 3, 2024 License: MIT Imports: 6 Imported by: 0

README

Combination

Go doc

Combination 包是一个实用的工具,提供了一系列用于生成和处理组合的函数,以帮助开发者处理复杂的组合问题。

特性

泛型类型

Minotaur 中,我们的组合函数是泛型类型,这意味着它们可以处理任意类型的元素,为开发者提供了灵活性,使得这个包可以在各种不同的场景和应用中使用。

算法描述

我们的组合函数使用了特定的算法,以便快速地生成和处理组合。这些算法被设计为能够处理各种复杂的组合问题,以确保结果的准确性。

易于使用

Combination 包的设计目标是使得开发者可以轻松地使用它。我们提供了清晰的文档和指南,帮助开发者理解和使用我们的组合函数。

用途

Combination 包可以在处理任何涉及到组合的问题时使用。无论是在数据分析、机器学习、算法设计,还是在其他需要处理组合的场景中,Combination 包都能够提供帮助。

我们鼓励开发者探索 Combination 包的可能用途,并分享他们的经验和发现。

Documentation

Overview

Package combination 包提供了一些实用的组合函数。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Combination

type Combination[T Item] struct {
	// contains filtered or unexported fields
}

Combination 用于从多个匹配器内提取组合的数据结构

func NewCombination

func NewCombination[T Item](options ...Option[T]) *Combination[T]

NewCombination 创建一个新的组合器

func (*Combination[T]) AddMatcher

func (slf *Combination[T]) AddMatcher(name string, matcher *Matcher[T]) *Combination[T]

AddMatcher 添加一个匹配器

func (*Combination[T]) Best

func (slf *Combination[T]) Best(items []T) (name string, result []T)

Best 从一组数据中提取符合匹配器规则的最佳组合

func (*Combination[T]) Combinations

func (slf *Combination[T]) Combinations(items []T) (result [][]T)

Combinations 从一组数据中提取所有符合匹配器规则的组合

func (*Combination[T]) CombinationsToName

func (slf *Combination[T]) CombinationsToName(items []T) (result map[string][][]T)

CombinationsToName 从一组数据中提取所有符合匹配器规则的组合,并返回匹配器名称

func (*Combination[T]) NewMatcher

func (slf *Combination[T]) NewMatcher(name string, options ...MatcherOption[T]) *Combination[T]

NewMatcher 添加一个新的匹配器

func (*Combination[T]) RemoveMatcher

func (slf *Combination[T]) RemoveMatcher(name string) *Combination[T]

RemoveMatcher 移除一个匹配器

func (*Combination[T]) Worst

func (slf *Combination[T]) Worst(items []T) (name string, result []T)

Worst 从一组数据中提取符合匹配器规则的最差组合

type Item

type Item interface {
}

type Matcher

type Matcher[T Item] struct {
	// contains filtered or unexported fields
}

Matcher 用于从一组数据内提取组合的数据结构

func NewMatcher

func NewMatcher[T Item](options ...MatcherOption[T]) *Matcher[T]

NewMatcher 创建一个新的匹配器

func (*Matcher[T]) AddFilter

func (slf *Matcher[T]) AddFilter(filter func(items []T) [][]T)

AddFilter 添加一个筛选器

  • 筛选器用于对组合进行筛选,返回一个二维数组,每个数组内的元素都是一个组合

func (*Matcher[T]) Best

func (slf *Matcher[T]) Best(items []T) []T

Best 从一组数据中提取符筛选器规则的最佳组合

func (*Matcher[T]) Combinations

func (slf *Matcher[T]) Combinations(items []T) [][]T

Combinations 从一组数据中提取所有符合筛选器规则的组合

func (*Matcher[T]) Worst

func (slf *Matcher[T]) Worst(items []T) []T

Worst 从一组数据中提取符筛选器规则的最差组合

type MatcherOption

type MatcherOption[T Item] func(matcher *Matcher[T])

MatcherOption 匹配器选项

func WithMatcherContinuity

func WithMatcherContinuity[T Item, Index generic.Number](getIndex func(item T) Index) MatcherOption[T]

WithMatcherContinuity 通过匹配连续的组合创建匹配器

  • index: 用于获取组合中元素的索引值,用于判断是否连续

func WithMatcherEvaluation

func WithMatcherEvaluation[T Item](evaluate func(items []T) float64) MatcherOption[T]

WithMatcherEvaluation 设置匹配器评估函数

  • 用于对组合进行评估,返回一个分值的评价函数
  • 通过该选项将覆盖匹配器的默认(WithEvaluation)评估函数

func WithMatcherIntervalLength

func WithMatcherIntervalLength[T Item](min, max int) MatcherOption[T]

WithMatcherIntervalLength 通过匹配长度区间的组合创建匹配器

  • min: 组合的最小长度,表示需要匹配的组合最小数量
  • max: 组合的最大长度,表示需要匹配的组合最大数量

func WithMatcherLeastLength

func WithMatcherLeastLength[T Item](length int) MatcherOption[T]

WithMatcherLeastLength 通过匹配最小长度的组合创建匹配器

  • length: 组合的长度,表示需要匹配的组合最小数量

func WithMatcherLength

func WithMatcherLength[T Item](length int) MatcherOption[T]

WithMatcherLength 通过匹配长度的组合创建匹配器

  • length: 组合的长度,表示需要匹配的组合数量

func WithMatcherMostLength

func WithMatcherMostLength[T Item](length int) MatcherOption[T]

WithMatcherMostLength 通过匹配最大长度的组合创建匹配器

  • length: 组合的长度,表示需要匹配的组合最大数量

func WithMatcherNCarryIndependentM

func WithMatcherNCarryIndependentM[T Item, E generic.Ordered](n, m int, getType func(item T) E) MatcherOption[T]

WithMatcherNCarryIndependentM 通过匹配 N 携带独立 M 的组合创建匹配器

  • n: 组合中元素的数量,表示需要匹配的组合数量,n 的类型需要全部相同
  • m: 组合中元素的数量,表示需要匹配的组合数量,m 的类型无需全部相同
  • getType: 用于获取组合中元素的类型,用于判断是否相同

func WithMatcherNCarryM

func WithMatcherNCarryM[T Item, E generic.Ordered](n, m int, getType func(item T) E) MatcherOption[T]

WithMatcherNCarryM 通过匹配 N 携带 M 的组合创建匹配器

  • n: 组合中元素的数量,表示需要匹配的组合数量,n 的类型需要全部相同
  • m: 组合中元素的数量,表示需要匹配的组合数量,m 的类型需要全部相同
  • getType: 用于获取组合中元素的类型,用于判断是否相同

func WithMatcherSame

func WithMatcherSame[T Item, E generic.Ordered](count int, getType func(item T) E) MatcherOption[T]

WithMatcherSame 通过匹配相同的组合创建匹配器

  • count: 组合中相同元素的数量,当 count <= 0 时,表示相同元素的数量不限
  • getType: 用于获取组合中元素的类型,用于判断是否相同

type Option

type Option[T Item] func(*Combination[T])

Option 组合器选项

func WithEvaluation

func WithEvaluation[T Item](evaluate func(items []T) float64) Option[T]

WithEvaluation 设置组合评估函数

  • 用于对组合进行评估,返回一个分值的评价函数
  • 通过该选项将设置所有匹配器的默认评估函数为该函数
  • 通过匹配器选项 WithMatcherEvaluation 可以覆盖该默认评估函数
  • 默认的评估函数将返回一个随机数

type Validator added in v0.0.25

type Validator[T Item] struct {
	// contains filtered or unexported fields
}

Validator 用于对组合进行验证的校验器

func NewValidator added in v0.0.25

func NewValidator[T Item](options ...ValidatorOption[T]) *Validator[T]

NewValidator 创建一个新的校验器

func (*Validator[T]) Validate added in v0.0.25

func (slf *Validator[T]) Validate(items []T) bool

Validate 校验组合是否符合要求

type ValidatorOption added in v0.0.25

type ValidatorOption[T Item] func(validator *Validator[T])

func WithValidatorHandle added in v0.0.25

func WithValidatorHandle[T Item](handle func(items []T) bool) ValidatorOption[T]

WithValidatorHandle 通过特定的验证函数对组合进行验证

func WithValidatorHandleContinuous added in v0.0.25

func WithValidatorHandleContinuous[T Item, Index generic.Integer](getIndex func(item T) Index) ValidatorOption[T]

WithValidatorHandleContinuous 校验组合成员是否连续

func WithValidatorHandleContinuousNot added in v0.0.25

func WithValidatorHandleContinuousNot[T Item, Index generic.Integer](getIndex func(item T) Index) ValidatorOption[T]

WithValidatorHandleContinuousNot 校验组合成员是否不连续

func WithValidatorHandleGroupContinuous added in v0.0.25

func WithValidatorHandleGroupContinuous[T Item, E generic.Ordered, Index generic.Integer](getType func(item T) E, getIndex func(item T) Index) ValidatorOption[T]

WithValidatorHandleGroupContinuous 校验组合成员是否能够按类型分组并且连续

func WithValidatorHandleGroupContinuousN added in v0.0.25

func WithValidatorHandleGroupContinuousN[T Item, E generic.Ordered, Index generic.Integer](n int, getType func(item T) E, getIndex func(item T) Index) ValidatorOption[T]

WithValidatorHandleGroupContinuousN 校验组合成员是否能够按分组为 n 组类型并且连续

func WithValidatorHandleLength added in v0.0.25

func WithValidatorHandleLength[T Item](length int) ValidatorOption[T]

WithValidatorHandleLength 校验组合的长度是否符合要求

func WithValidatorHandleLengthMax added in v0.0.25

func WithValidatorHandleLengthMax[T Item](max int) ValidatorOption[T]

WithValidatorHandleLengthMax 校验组合的长度是否小于等于指定的最大值

func WithValidatorHandleLengthMin added in v0.0.25

func WithValidatorHandleLengthMin[T Item](min int) ValidatorOption[T]

WithValidatorHandleLengthMin 校验组合的长度是否大于等于指定的最小值

func WithValidatorHandleLengthNot added in v0.0.25

func WithValidatorHandleLengthNot[T Item](length int) ValidatorOption[T]

WithValidatorHandleLengthNot 校验组合的长度是否不等于指定的值

func WithValidatorHandleLengthRange added in v0.0.25

func WithValidatorHandleLengthRange[T Item](min, max int) ValidatorOption[T]

WithValidatorHandleLengthRange 校验组合的长度是否在指定的范围内

func WithValidatorHandleNCarryIndependentM added in v0.0.25

func WithValidatorHandleNCarryIndependentM[T Item, E generic.Ordered](n, m int, getType func(item T) E) ValidatorOption[T]

WithValidatorHandleNCarryIndependentM 校验组合成员是否匹配 N 携带独立的 M 的组合

  • n: 组合中元素的数量,表示需要匹配的组合数量,n 的类型需要全部相同
  • m: 组合中元素的数量,表示需要匹配的组合数量,m 的类型无需全部相同
  • getType: 用于获取组合中元素的类型,用于判断是否相同

func WithValidatorHandleNCarryM added in v0.0.25

func WithValidatorHandleNCarryM[T Item, E generic.Ordered](n, m int, getType func(item T) E) ValidatorOption[T]

WithValidatorHandleNCarryM 校验组合成员是否匹配 N 携带相同的 M 的组合

  • n: 组合中元素的数量,表示需要匹配的组合数量,n 的类型需要全部相同
  • m: 组合中元素的数量,表示需要匹配的组合数量,m 的类型需要全部相同
  • getType: 用于获取组合中元素的类型,用于判断是否相同

func WithValidatorHandleTypeLength added in v0.0.25

func WithValidatorHandleTypeLength[T Item, E generic.Ordered](length int, getType func(item T) E) ValidatorOption[T]

WithValidatorHandleTypeLength 校验组合成员类型数量是否为指定的值

func WithValidatorHandleTypeLengthMax added in v0.0.25

func WithValidatorHandleTypeLengthMax[T Item, E generic.Ordered](max int, getType func(item T) E) ValidatorOption[T]

WithValidatorHandleTypeLengthMax 校验组合成员类型数量是否小于等于指定的最大值

func WithValidatorHandleTypeLengthMin added in v0.0.25

func WithValidatorHandleTypeLengthMin[T Item, E generic.Ordered](min int, getType func(item T) E) ValidatorOption[T]

WithValidatorHandleTypeLengthMin 校验组合成员类型数量是否大于等于指定的最小值

func WithValidatorHandleTypeLengthNot added in v0.0.25

func WithValidatorHandleTypeLengthNot[T Item, E generic.Ordered](length int, getType func(item T) E) ValidatorOption[T]

WithValidatorHandleTypeLengthNot 校验组合成员类型数量是否不等于指定的值

func WithValidatorHandleTypeLengthRange added in v0.0.25

func WithValidatorHandleTypeLengthRange[T Item, E generic.Ordered](min, max int, getType func(item T) E) ValidatorOption[T]

WithValidatorHandleTypeLengthRange 校验组合成员类型数量是否在指定的范围内

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL