31 lines
615 B
Plaintext
31 lines
615 B
Plaintext
class PriorityQueue {
|
|
has tasks = []
|
|
|
|
method insert (Number priority { _ >= 0 }, task) {
|
|
for n in range(tasks.len, priority) {
|
|
tasks[n] = []
|
|
}
|
|
tasks[priority].append(task)
|
|
}
|
|
|
|
method get { tasks.first { !.is_empty } -> shift }
|
|
method is_empty { tasks.all { .is_empty } }
|
|
}
|
|
|
|
var pq = PriorityQueue()
|
|
|
|
[
|
|
[3, 'Clear drains'],
|
|
[4, 'Feed cat'],
|
|
[5, 'Make tea'],
|
|
[9, 'Sleep'],
|
|
[3, 'Check email'],
|
|
[1, 'Solve RC tasks'],
|
|
[9, 'Exercise'],
|
|
[2, 'Do taxes'],
|
|
].each { |pair|
|
|
pq.insert(pair...)
|
|
}
|
|
|
|
say pq.get while !pq.is_empty
|