Skip to content

Instantly share code, notes, and snippets.

@uliwitness
Last active December 7, 2018 20:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save uliwitness/98fc8e7c31cf43ba7e465fa2562836e8 to your computer and use it in GitHub Desktop.
Save uliwitness/98fc8e7c31cf43ba7e465fa2562836e8 to your computer and use it in GitHub Desktop.
SchedulerTestApp
//
// main.swift
// SchedulerTestApp
//
// Created by Uli Kusterer on 07.12.18.
// Copyright © 2018 Uli Kusterer. All rights reserved.
//
import Foundation
class Task: CustomDebugStringConvertible {
var name: String
var priority: Int
var unitsToDo: Int
var unitsDone: Int = 0
var requires: Task?
var done: Bool {
get { return unitsDone >= unitsToDo }
}
init(_ name: String, priority: Int, unitsToDo: Int, requires: Task? = nil) {
self.name = name
self.priority = priority
self.unitsToDo = unitsToDo
}
var debugDescription: String {
get {
return "Task<\(name)>{ (\(unitsDone)/\(unitsToDo)) @ \(priority) <-- \(requires?.name ?? "*") }"
}
}
}
class Worker {
var name: String
var currentTask: Task?
init(_ name: String) {
self.name = name
}
func process() {
if let currentTask = currentTask {
currentTask.unitsDone += 1
print("\(name): \(currentTask)")
if currentTask.unitsDone >= currentTask.unitsToDo {
self.currentTask = nil
}
} else {
print("\(name): --")
}
}
}
let tasks = [ "A": Task("A", priority: 1000, unitsToDo: 61), "B": Task("B", priority: 900, unitsToDo: 62), "C": Task("C", priority: 800, unitsToDo: 63), "D": Task("D", priority: 700, unitsToDo: 64), "E": Task("E", priority: 600, unitsToDo: 65), "F": Task("F", priority: 500, unitsToDo: 66) ]
tasks["A"]!.requires = tasks["C"]
tasks["F"]!.requires = tasks["C"]
tasks["B"]!.requires = tasks["A"]
tasks["D"]!.requires = tasks["A"]
tasks["E"]!.requires = tasks["B"]
tasks["E"]!.requires = tasks["D"]
tasks["E"]!.requires = tasks["F"]
var pendingTasks = tasks.values
var unitsTaken: Int = 0
func availableTasks() -> [Task] {
return pendingTasks.filter { $0.unitsDone == 0 && ($0.requires == nil || ($0.requires?.done ?? false)) }.sorted(by: { $0.priority < $1.priority })
}
print("pendingTasks = \(pendingTasks)")
var workers = [ Worker("Worker 1"), Worker("Worker 2"), Worker("Worker 3") ]
while true {
unitsTaken += 1
workers.forEach { $0.process() }
var currentTasks = availableTasks()
print("currentTasks = \(currentTasks)")
workers.forEach { worker in
if worker.currentTask == nil {
worker.currentTask = currentTasks.popLast()
}
}
if workers.filter({ $0.currentTask != nil }).count == 0 {
break;
}
}
print("Done after \(unitsTaken) units.")
pendingTasks = [Task<E>{ (0/65) @ 600 <-- F }, Task<F>{ (0/66) @ 500 <-- C }, Task<B>{ (0/62) @ 900 <-- A }, Task<A>{ (0/61) @ 1000 <-- C }, Task<D>{ (0/64) @ 700 <-- A }, Task<C>{ (0/63) @ 800 <-- * }]
Worker 1: --
Worker 2: --
Worker 3: --
currentTasks = [Task<C>{ (0/63) @ 800 <-- * }]
Worker 1: Task<C>{ (1/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (2/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (3/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (4/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (5/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (6/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (7/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (8/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (9/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (10/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (11/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (12/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (13/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (14/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (15/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (16/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (17/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (18/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (19/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (20/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (21/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (22/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (23/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (24/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (25/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (26/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (27/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (28/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (29/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (30/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (31/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (32/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (33/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (34/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (35/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (36/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (37/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (38/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (39/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (40/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (41/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (42/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (43/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (44/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (45/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (46/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (47/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (48/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (49/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (50/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (51/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (52/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (53/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (54/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (55/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (56/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (57/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (58/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (59/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (60/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (61/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (62/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = []
Worker 1: Task<C>{ (63/63) @ 800 <-- * }
Worker 2: --
Worker 3: --
currentTasks = [Task<F>{ (0/66) @ 500 <-- C }, Task<A>{ (0/61) @ 1000 <-- C }]
Worker 1: Task<A>{ (1/61) @ 1000 <-- C }
Worker 2: Task<F>{ (1/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (2/61) @ 1000 <-- C }
Worker 2: Task<F>{ (2/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (3/61) @ 1000 <-- C }
Worker 2: Task<F>{ (3/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (4/61) @ 1000 <-- C }
Worker 2: Task<F>{ (4/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (5/61) @ 1000 <-- C }
Worker 2: Task<F>{ (5/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (6/61) @ 1000 <-- C }
Worker 2: Task<F>{ (6/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (7/61) @ 1000 <-- C }
Worker 2: Task<F>{ (7/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (8/61) @ 1000 <-- C }
Worker 2: Task<F>{ (8/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (9/61) @ 1000 <-- C }
Worker 2: Task<F>{ (9/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (10/61) @ 1000 <-- C }
Worker 2: Task<F>{ (10/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (11/61) @ 1000 <-- C }
Worker 2: Task<F>{ (11/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (12/61) @ 1000 <-- C }
Worker 2: Task<F>{ (12/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (13/61) @ 1000 <-- C }
Worker 2: Task<F>{ (13/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (14/61) @ 1000 <-- C }
Worker 2: Task<F>{ (14/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (15/61) @ 1000 <-- C }
Worker 2: Task<F>{ (15/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (16/61) @ 1000 <-- C }
Worker 2: Task<F>{ (16/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (17/61) @ 1000 <-- C }
Worker 2: Task<F>{ (17/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (18/61) @ 1000 <-- C }
Worker 2: Task<F>{ (18/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (19/61) @ 1000 <-- C }
Worker 2: Task<F>{ (19/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (20/61) @ 1000 <-- C }
Worker 2: Task<F>{ (20/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (21/61) @ 1000 <-- C }
Worker 2: Task<F>{ (21/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (22/61) @ 1000 <-- C }
Worker 2: Task<F>{ (22/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (23/61) @ 1000 <-- C }
Worker 2: Task<F>{ (23/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (24/61) @ 1000 <-- C }
Worker 2: Task<F>{ (24/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (25/61) @ 1000 <-- C }
Worker 2: Task<F>{ (25/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (26/61) @ 1000 <-- C }
Worker 2: Task<F>{ (26/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (27/61) @ 1000 <-- C }
Worker 2: Task<F>{ (27/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (28/61) @ 1000 <-- C }
Worker 2: Task<F>{ (28/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (29/61) @ 1000 <-- C }
Worker 2: Task<F>{ (29/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (30/61) @ 1000 <-- C }
Worker 2: Task<F>{ (30/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (31/61) @ 1000 <-- C }
Worker 2: Task<F>{ (31/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (32/61) @ 1000 <-- C }
Worker 2: Task<F>{ (32/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (33/61) @ 1000 <-- C }
Worker 2: Task<F>{ (33/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (34/61) @ 1000 <-- C }
Worker 2: Task<F>{ (34/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (35/61) @ 1000 <-- C }
Worker 2: Task<F>{ (35/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (36/61) @ 1000 <-- C }
Worker 2: Task<F>{ (36/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (37/61) @ 1000 <-- C }
Worker 2: Task<F>{ (37/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (38/61) @ 1000 <-- C }
Worker 2: Task<F>{ (38/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (39/61) @ 1000 <-- C }
Worker 2: Task<F>{ (39/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (40/61) @ 1000 <-- C }
Worker 2: Task<F>{ (40/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (41/61) @ 1000 <-- C }
Worker 2: Task<F>{ (41/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (42/61) @ 1000 <-- C }
Worker 2: Task<F>{ (42/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (43/61) @ 1000 <-- C }
Worker 2: Task<F>{ (43/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (44/61) @ 1000 <-- C }
Worker 2: Task<F>{ (44/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (45/61) @ 1000 <-- C }
Worker 2: Task<F>{ (45/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (46/61) @ 1000 <-- C }
Worker 2: Task<F>{ (46/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (47/61) @ 1000 <-- C }
Worker 2: Task<F>{ (47/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (48/61) @ 1000 <-- C }
Worker 2: Task<F>{ (48/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (49/61) @ 1000 <-- C }
Worker 2: Task<F>{ (49/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (50/61) @ 1000 <-- C }
Worker 2: Task<F>{ (50/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (51/61) @ 1000 <-- C }
Worker 2: Task<F>{ (51/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (52/61) @ 1000 <-- C }
Worker 2: Task<F>{ (52/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (53/61) @ 1000 <-- C }
Worker 2: Task<F>{ (53/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (54/61) @ 1000 <-- C }
Worker 2: Task<F>{ (54/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (55/61) @ 1000 <-- C }
Worker 2: Task<F>{ (55/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (56/61) @ 1000 <-- C }
Worker 2: Task<F>{ (56/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (57/61) @ 1000 <-- C }
Worker 2: Task<F>{ (57/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (58/61) @ 1000 <-- C }
Worker 2: Task<F>{ (58/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (59/61) @ 1000 <-- C }
Worker 2: Task<F>{ (59/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (60/61) @ 1000 <-- C }
Worker 2: Task<F>{ (60/66) @ 500 <-- C }
Worker 3: --
currentTasks = []
Worker 1: Task<A>{ (61/61) @ 1000 <-- C }
Worker 2: Task<F>{ (61/66) @ 500 <-- C }
Worker 3: --
currentTasks = [Task<D>{ (0/64) @ 700 <-- A }, Task<B>{ (0/62) @ 900 <-- A }]
Worker 1: Task<B>{ (1/62) @ 900 <-- A }
Worker 2: Task<F>{ (62/66) @ 500 <-- C }
Worker 3: Task<D>{ (1/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (2/62) @ 900 <-- A }
Worker 2: Task<F>{ (63/66) @ 500 <-- C }
Worker 3: Task<D>{ (2/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (3/62) @ 900 <-- A }
Worker 2: Task<F>{ (64/66) @ 500 <-- C }
Worker 3: Task<D>{ (3/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (4/62) @ 900 <-- A }
Worker 2: Task<F>{ (65/66) @ 500 <-- C }
Worker 3: Task<D>{ (4/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (5/62) @ 900 <-- A }
Worker 2: Task<F>{ (66/66) @ 500 <-- C }
Worker 3: Task<D>{ (5/64) @ 700 <-- A }
currentTasks = [Task<E>{ (0/65) @ 600 <-- F }]
Worker 1: Task<B>{ (6/62) @ 900 <-- A }
Worker 2: Task<E>{ (1/65) @ 600 <-- F }
Worker 3: Task<D>{ (6/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (7/62) @ 900 <-- A }
Worker 2: Task<E>{ (2/65) @ 600 <-- F }
Worker 3: Task<D>{ (7/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (8/62) @ 900 <-- A }
Worker 2: Task<E>{ (3/65) @ 600 <-- F }
Worker 3: Task<D>{ (8/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (9/62) @ 900 <-- A }
Worker 2: Task<E>{ (4/65) @ 600 <-- F }
Worker 3: Task<D>{ (9/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (10/62) @ 900 <-- A }
Worker 2: Task<E>{ (5/65) @ 600 <-- F }
Worker 3: Task<D>{ (10/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (11/62) @ 900 <-- A }
Worker 2: Task<E>{ (6/65) @ 600 <-- F }
Worker 3: Task<D>{ (11/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (12/62) @ 900 <-- A }
Worker 2: Task<E>{ (7/65) @ 600 <-- F }
Worker 3: Task<D>{ (12/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (13/62) @ 900 <-- A }
Worker 2: Task<E>{ (8/65) @ 600 <-- F }
Worker 3: Task<D>{ (13/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (14/62) @ 900 <-- A }
Worker 2: Task<E>{ (9/65) @ 600 <-- F }
Worker 3: Task<D>{ (14/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (15/62) @ 900 <-- A }
Worker 2: Task<E>{ (10/65) @ 600 <-- F }
Worker 3: Task<D>{ (15/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (16/62) @ 900 <-- A }
Worker 2: Task<E>{ (11/65) @ 600 <-- F }
Worker 3: Task<D>{ (16/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (17/62) @ 900 <-- A }
Worker 2: Task<E>{ (12/65) @ 600 <-- F }
Worker 3: Task<D>{ (17/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (18/62) @ 900 <-- A }
Worker 2: Task<E>{ (13/65) @ 600 <-- F }
Worker 3: Task<D>{ (18/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (19/62) @ 900 <-- A }
Worker 2: Task<E>{ (14/65) @ 600 <-- F }
Worker 3: Task<D>{ (19/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (20/62) @ 900 <-- A }
Worker 2: Task<E>{ (15/65) @ 600 <-- F }
Worker 3: Task<D>{ (20/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (21/62) @ 900 <-- A }
Worker 2: Task<E>{ (16/65) @ 600 <-- F }
Worker 3: Task<D>{ (21/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (22/62) @ 900 <-- A }
Worker 2: Task<E>{ (17/65) @ 600 <-- F }
Worker 3: Task<D>{ (22/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (23/62) @ 900 <-- A }
Worker 2: Task<E>{ (18/65) @ 600 <-- F }
Worker 3: Task<D>{ (23/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (24/62) @ 900 <-- A }
Worker 2: Task<E>{ (19/65) @ 600 <-- F }
Worker 3: Task<D>{ (24/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (25/62) @ 900 <-- A }
Worker 2: Task<E>{ (20/65) @ 600 <-- F }
Worker 3: Task<D>{ (25/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (26/62) @ 900 <-- A }
Worker 2: Task<E>{ (21/65) @ 600 <-- F }
Worker 3: Task<D>{ (26/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (27/62) @ 900 <-- A }
Worker 2: Task<E>{ (22/65) @ 600 <-- F }
Worker 3: Task<D>{ (27/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (28/62) @ 900 <-- A }
Worker 2: Task<E>{ (23/65) @ 600 <-- F }
Worker 3: Task<D>{ (28/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (29/62) @ 900 <-- A }
Worker 2: Task<E>{ (24/65) @ 600 <-- F }
Worker 3: Task<D>{ (29/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (30/62) @ 900 <-- A }
Worker 2: Task<E>{ (25/65) @ 600 <-- F }
Worker 3: Task<D>{ (30/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (31/62) @ 900 <-- A }
Worker 2: Task<E>{ (26/65) @ 600 <-- F }
Worker 3: Task<D>{ (31/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (32/62) @ 900 <-- A }
Worker 2: Task<E>{ (27/65) @ 600 <-- F }
Worker 3: Task<D>{ (32/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (33/62) @ 900 <-- A }
Worker 2: Task<E>{ (28/65) @ 600 <-- F }
Worker 3: Task<D>{ (33/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (34/62) @ 900 <-- A }
Worker 2: Task<E>{ (29/65) @ 600 <-- F }
Worker 3: Task<D>{ (34/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (35/62) @ 900 <-- A }
Worker 2: Task<E>{ (30/65) @ 600 <-- F }
Worker 3: Task<D>{ (35/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (36/62) @ 900 <-- A }
Worker 2: Task<E>{ (31/65) @ 600 <-- F }
Worker 3: Task<D>{ (36/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (37/62) @ 900 <-- A }
Worker 2: Task<E>{ (32/65) @ 600 <-- F }
Worker 3: Task<D>{ (37/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (38/62) @ 900 <-- A }
Worker 2: Task<E>{ (33/65) @ 600 <-- F }
Worker 3: Task<D>{ (38/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (39/62) @ 900 <-- A }
Worker 2: Task<E>{ (34/65) @ 600 <-- F }
Worker 3: Task<D>{ (39/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (40/62) @ 900 <-- A }
Worker 2: Task<E>{ (35/65) @ 600 <-- F }
Worker 3: Task<D>{ (40/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (41/62) @ 900 <-- A }
Worker 2: Task<E>{ (36/65) @ 600 <-- F }
Worker 3: Task<D>{ (41/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (42/62) @ 900 <-- A }
Worker 2: Task<E>{ (37/65) @ 600 <-- F }
Worker 3: Task<D>{ (42/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (43/62) @ 900 <-- A }
Worker 2: Task<E>{ (38/65) @ 600 <-- F }
Worker 3: Task<D>{ (43/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (44/62) @ 900 <-- A }
Worker 2: Task<E>{ (39/65) @ 600 <-- F }
Worker 3: Task<D>{ (44/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (45/62) @ 900 <-- A }
Worker 2: Task<E>{ (40/65) @ 600 <-- F }
Worker 3: Task<D>{ (45/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (46/62) @ 900 <-- A }
Worker 2: Task<E>{ (41/65) @ 600 <-- F }
Worker 3: Task<D>{ (46/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (47/62) @ 900 <-- A }
Worker 2: Task<E>{ (42/65) @ 600 <-- F }
Worker 3: Task<D>{ (47/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (48/62) @ 900 <-- A }
Worker 2: Task<E>{ (43/65) @ 600 <-- F }
Worker 3: Task<D>{ (48/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (49/62) @ 900 <-- A }
Worker 2: Task<E>{ (44/65) @ 600 <-- F }
Worker 3: Task<D>{ (49/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (50/62) @ 900 <-- A }
Worker 2: Task<E>{ (45/65) @ 600 <-- F }
Worker 3: Task<D>{ (50/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (51/62) @ 900 <-- A }
Worker 2: Task<E>{ (46/65) @ 600 <-- F }
Worker 3: Task<D>{ (51/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (52/62) @ 900 <-- A }
Worker 2: Task<E>{ (47/65) @ 600 <-- F }
Worker 3: Task<D>{ (52/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (53/62) @ 900 <-- A }
Worker 2: Task<E>{ (48/65) @ 600 <-- F }
Worker 3: Task<D>{ (53/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (54/62) @ 900 <-- A }
Worker 2: Task<E>{ (49/65) @ 600 <-- F }
Worker 3: Task<D>{ (54/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (55/62) @ 900 <-- A }
Worker 2: Task<E>{ (50/65) @ 600 <-- F }
Worker 3: Task<D>{ (55/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (56/62) @ 900 <-- A }
Worker 2: Task<E>{ (51/65) @ 600 <-- F }
Worker 3: Task<D>{ (56/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (57/62) @ 900 <-- A }
Worker 2: Task<E>{ (52/65) @ 600 <-- F }
Worker 3: Task<D>{ (57/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (58/62) @ 900 <-- A }
Worker 2: Task<E>{ (53/65) @ 600 <-- F }
Worker 3: Task<D>{ (58/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (59/62) @ 900 <-- A }
Worker 2: Task<E>{ (54/65) @ 600 <-- F }
Worker 3: Task<D>{ (59/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (60/62) @ 900 <-- A }
Worker 2: Task<E>{ (55/65) @ 600 <-- F }
Worker 3: Task<D>{ (60/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (61/62) @ 900 <-- A }
Worker 2: Task<E>{ (56/65) @ 600 <-- F }
Worker 3: Task<D>{ (61/64) @ 700 <-- A }
currentTasks = []
Worker 1: Task<B>{ (62/62) @ 900 <-- A }
Worker 2: Task<E>{ (57/65) @ 600 <-- F }
Worker 3: Task<D>{ (62/64) @ 700 <-- A }
currentTasks = []
Worker 1: --
Worker 2: Task<E>{ (58/65) @ 600 <-- F }
Worker 3: Task<D>{ (63/64) @ 700 <-- A }
currentTasks = []
Worker 1: --
Worker 2: Task<E>{ (59/65) @ 600 <-- F }
Worker 3: Task<D>{ (64/64) @ 700 <-- A }
currentTasks = []
Worker 1: --
Worker 2: Task<E>{ (60/65) @ 600 <-- F }
Worker 3: --
currentTasks = []
Worker 1: --
Worker 2: Task<E>{ (61/65) @ 600 <-- F }
Worker 3: --
currentTasks = []
Worker 1: --
Worker 2: Task<E>{ (62/65) @ 600 <-- F }
Worker 3: --
currentTasks = []
Worker 1: --
Worker 2: Task<E>{ (63/65) @ 600 <-- F }
Worker 3: --
currentTasks = []
Worker 1: --
Worker 2: Task<E>{ (64/65) @ 600 <-- F }
Worker 3: --
currentTasks = []
Worker 1: --
Worker 2: Task<E>{ (65/65) @ 600 <-- F }
Worker 3: --
currentTasks = []
Done after 195 units.
Program ended with exit code: 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment