首页 > 解决方案 > 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"

如何实现一个函数来计算哪个用户执行哪个任务编号?

标签: javascriptarraysdart

解决方案


听起来像模数的微不足道的使用:

// 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]};
}

推荐阅读