step-sequence-generator
Version:
A step sequence generator for figure skating programs
35 lines (34 loc) • 1.42 kB
TypeScript
import { ChanceRatioMap, WeightMapType } from '../../../shared/types/roulette/chance-ratio-map.type';
type CalcItemWeightArgsType = {
currentItemAmount: number;
desirePercent: number;
totalItems: number;
};
export type ItemKeyExtractorType<S, M> = (item: S) => M;
type CountArgsType<S, M> = {
selection: S[];
chanceRatioMap: ChanceRatioMap<M>;
itemKeyExtractor: ItemKeyExtractorType<S, M>;
};
/**
* @name WeightCalculator
* @param S тип для selection
* @param M тип для ChanceRatioMap
*
* */
export declare class WeightCalculator {
/**
* count
* @param args
* @arg args.selection элементы
* @arg args.chanceRatioMap шансы на выпадение элемента в selection в процентах
* @arg args.itemKeyExtractor callback для опредления ключа для weightMap
*/
count<S, M>(args: CountArgsType<S, M>): WeightMapType<M>;
protected calcWeights<M>(groupItemCounted: Map<M, number>, chanceRatioMap: WeightMapType<M>): WeightMapType<M>;
protected calcItemWeight(args: CalcItemWeightArgsType): number;
protected calcDesireItemAmount(totalItems: number, desirePercent: number): number;
protected calcWeight(currentItemAmount: number, desireItemAmount: number): number;
protected groupAndCountItems<S, M>(selection: S[], keyExtractor: (item: S) => M): Map<M, number>;
}
export {};