viaductmedia/roundrobin-scheduler

轮询锦标赛工具。Laravel 兼容。

dev-master 2021-09-08 12:02 UTC

This package is auto-updated.

Last update: 2024-09-08 19:16:36 UTC


README

您可以轻松地为锦标赛创建轮询轮次。

Laravel 兼容。

有两种方法。一个是 BergerAlgorithm($teams),它接受一个团队数组作为参数并返回一组比赛。

给定一个团队数组,例如

['Juventus', 'Milan', 'Roma', 'Napoli', 'Inter']    

该方法返回一个多级数组,其中第一级是比赛日

[
    [
        ['REST', 'Juventus'], ['Inter', 'Milan'],  ['Napoli', 'Roma']
    ],
    [
        ['Juventus', 'Milan'], ['Roma', 'REST'], ['Napoli', 'Inter']
    ],
    [
        ['Roma', 'Juventus'], ['Milan', 'Napoli'], ['REST', 'Inter']
    ],
    [
        ['Juventus', 'Napoli'], ['Inter', 'Roma'], ['REST', 'Milan']
    ],
    [
        ['Inter', 'Juventus'], ['Napoli', 'REST'], ['Roma', 'Milan']
    ]
]

如果团队数量是奇数,它会添加一个虚拟团队。

另一个是 distributeAmongRounds($teams, $rounds),它接受一个团队数组和一个期望的轮次数作为参数。我建议在提供给函数之前对团队数据集进行 shuffle()。

给定一个团队数组如下,并希望有 '3' 个轮次

['Milan', 'Roma', 'Juventus', 'Napoli', 'Inter', 'Lazio', 'Fiorentina', 'Udinese', 'Sampdoria', 'Genoa'],

该方法返回一个多级数组

[
    ['Genoa', 'Fiorentina', 'Napoli', 'Milan'],
    ['Sampdoria', 'Lazio', 'Juventus'],
    ['Udinese', 'Inter', 'Roma']
]

安装

composer require lucagentile\roundrobin-scheduler

Laravel

在 config/app.php 的 'providers' 下添加 ServiceProvider 类名称 https://laravel.net.cn/docs/5.4/providers#registering-providers

Gautile\RoundRobin\RoundRobinSchedulerServiceProvider::class

然后在 'aliases' 下添加 Facade 的别名

'RoundRobinScheduler' => Gautile\RoundRobin\Facades\RoundRobinScheduler::class,

许可证

MIT