javascript - Dart中的任务调度算法
问题描述
创建有助于分配用户任务的应用程序。它们都在同一时间开始,并且任务需要相同的时间来完成。我想创建一个循环算法来为用户分配任务。我如何在 JS 和 Dart 中实现它
IE。
var users = ["a","b","c"]
var tasks = 10
用户将有以下任务
"a" => "1","4","7","10"
"b" => "2","5","8"
"c" => "3","6","9"
如何实现一个函数来计算哪个用户执行哪个任务编号?
解决方案
听起来像模数的微不足道的使用:
// Calls [createTask] with the numbers 1 through [taskCount].
// Assigns the created tasks to the names in a round-robin manner.
// Returns a map from names to lists of tasks.
Map<N, List<T>> roundRobin<N, T>(List<N> names, int taskCount, T createTask(int number)) {
var tasks = [for (var i = 0; i < names.length; i++) <T>[]];
for (var i = 0, j = 0; i < taskCount; i++) {
tasks[i % tasks.length].add(createTask(i + 1));
}
return {for (var i = 0; i < names.length; i++) names[i]: tasks[i]};
}
推荐阅读
- jwt - Quarkus:集成测试 - 如何模拟 OIDC?
- angular - RROR 错误:找不到带有路径的控件:formArray
- python - 如何使用 python 或 pyspark 获取带有年份的周数列表(此格式为 202114)
- discord.js - 错误提供的选项不是对象。在 Message.delete
- html - 页面转向 http 而不是 https 并且不加载导航栏
- sql - 用于 SQL 查询的弹性搜索查询
- java - 从 int[] 到 int 的不兼容转换
- javascript - 我怎样才能让我的 Discord 机器人在被提及时识别它?
- python - IndentationError: unindent does not match any external indentation level 帮我解决这个问题?
- c# - 玩家与对象碰撞后如何再次重生对象?