class PriorityQueue
class PriorityQueue
lib/collections/priority_queue.tya:2
PriorityQueue provides the collections/PriorityQueue standard library API.
Source
# PriorityQueue provides the collections/PriorityQueue standard library API.
class PriorityQueue
# PriorityQueue.items stores instance state.
# @type Array
items: []
# PriorityQueue.seq stores instance state.
# @type Int
seq: 0
# PriorityQueue.initialize provides the collections/PriorityQueue standard library operation.
# @param items Array items value.
# @return Self the initialized object.
initialize: items = nil ->
self.items = []
self.seq = 0
if items != nil
i = 0
while i < items.len()
priority = items[i][0]
if priority.class != Number
raise error("collections.PriorityQueue.from_array: priority must be a number")
self.items.push([priority, self.seq, items[i][1]])
self.seq = self.seq + 1
i = i + 1
# PriorityQueue.best_index provides the collections/PriorityQueue standard library operation.
# @return Int the resulting value.
best_index: ->
best = 0
i = 1
while i < self.items.len()
a = self.items[i]
b = self.items[best]
if a[0] < b[0] or a[0] == b[0] and a[1] < b[1]
best = i
i = i + 1
best
# PriorityQueue.clear provides the collections/PriorityQueue standard library operation.
# @return Nil the resulting value.
clear: ->
self.items = []
self
# PriorityQueue.empty? provides the collections/PriorityQueue standard library operation.
# @return Boolean whether the condition is true.
empty?: ->
self.items.empty?()
# PriorityQueue.from_array provides the collections/PriorityQueue standard library operation.
# @param items Array items value.
# @return Array the resulting value.
from_array: items ->
PriorityQueue(items)
# PriorityQueue.len provides the collections/PriorityQueue standard library operation.
# @return Int the resulting value.
len: ->
self.items.len()
# PriorityQueue.new provides the collections/PriorityQueue standard library operation.
# @return Self the resulting value.
new: ->
PriorityQueue(nil)
# PriorityQueue.peek provides the collections/PriorityQueue standard library operation.
# @return Any the resulting value.
peek: ->
if self.empty?()
raise error("collections.PriorityQueue.peek: empty priority queue")
self.items[self.best_index()][2]
# PriorityQueue.peek_priority provides the collections/PriorityQueue standard library operation.
# @return Any the resulting value.
peek_priority: ->
if self.empty?()
raise error("collections.PriorityQueue.peek_priority: empty priority queue")
self.items[self.best_index()][0]
# PriorityQueue.pop provides the collections/PriorityQueue standard library operation.
# @return Any the resulting value.
pop: ->
if self.empty?()
raise error("collections.PriorityQueue.pop: empty priority queue")
index = self.best_index()
entry = self.items[index]
self.remove_at(index)
entry[2]
# PriorityQueue.push provides the collections/PriorityQueue standard library operation.
# @param value String value value.
# @param priority Int priority value.
# @return Any the resulting value.
push: value, priority ->
if priority.class != Number
raise error("collections.PriorityQueue.push: priority must be a number")
self.items.push([priority, self.seq, value])
self.seq = self.seq + 1
self
# PriorityQueue.remove_at provides the collections/PriorityQueue standard library operation.
# @param index Int index value.
# @return Any the resulting value.
remove_at: index ->
next = []
i = 0
while i < self.items.len()
if i != index
next.push(self.items[i])
i = i + 1
self.items = next
# PriorityQueue.to_array provides the collections/PriorityQueue standard library operation.
# @return Array the resulting value.
to_array: ->
clone = PriorityQueue(nil)
i = 0
while i < self.items.len()
clone.items.push(self.items[i])
i = i + 1
out = []
while not clone.empty?()
idx = clone.best_index()
entry = clone.items[idx]
out.push([entry[0], entry[2]])
clone.remove_at(idx)
out
Instance Variables
items
PriorityQueue.items
lib/collections/priority_queue.tya:5
PriorityQueue.items stores instance state.
Source
# PriorityQueue.items stores instance state.
# @type Array
items: []
seq
PriorityQueue.seq
lib/collections/priority_queue.tya:9
PriorityQueue.seq stores instance state.
Source
# PriorityQueue.seq stores instance state.
# @type Int
seq: 0
Methods
best_index
PriorityQueue.best_index()
lib/collections/priority_queue.tya:29
PriorityQueue.best_index provides the collections/PriorityQueue standard library operation.
Source
# PriorityQueue.best_index provides the collections/PriorityQueue standard library operation.
# @return Int the resulting value.
best_index: ->
best = 0
i = 1
while i < self.items.len()
a = self.items[i]
b = self.items[best]
if a[0] < b[0] or a[0] == b[0] and a[1] < b[1]
best = i
i = i + 1
best
clear
PriorityQueue.clear()
lib/collections/priority_queue.tya:42
PriorityQueue.clear provides the collections/PriorityQueue standard library operation.
Source
# PriorityQueue.clear provides the collections/PriorityQueue standard library operation.
# @return Nil the resulting value.
clear: ->
self.items = []
self
empty?
PriorityQueue.empty?()
lib/collections/priority_queue.tya:48
PriorityQueue.empty? provides the collections/PriorityQueue standard library operation.
Source
# PriorityQueue.empty? provides the collections/PriorityQueue standard library operation.
# @return Boolean whether the condition is true.
empty?: ->
self.items.empty?()
from_array
PriorityQueue.from_array(items)
lib/collections/priority_queue.tya:54
PriorityQueue.from_array provides the collections/PriorityQueue standard library operation.
Source
# PriorityQueue.from_array provides the collections/PriorityQueue standard library operation.
# @param items Array items value.
# @return Array the resulting value.
from_array: items ->
PriorityQueue(items)
initialize
PriorityQueue.initialize(items = nil)
lib/collections/priority_queue.tya:14
PriorityQueue.initialize provides the collections/PriorityQueue standard library operation.
Source
# PriorityQueue.initialize provides the collections/PriorityQueue standard library operation.
# @param items Array items value.
# @return Self the initialized object.
initialize: items = nil ->
self.items = []
self.seq = 0
if items != nil
i = 0
while i < items.len()
priority = items[i][0]
if priority.class != Number
raise error("collections.PriorityQueue.from_array: priority must be a number")
self.items.push([priority, self.seq, items[i][1]])
self.seq = self.seq + 1
i = i + 1
len
PriorityQueue.len()
lib/collections/priority_queue.tya:59
PriorityQueue.len provides the collections/PriorityQueue standard library operation.
Source
# PriorityQueue.len provides the collections/PriorityQueue standard library operation.
# @return Int the resulting value.
len: ->
self.items.len()
new
PriorityQueue.new()
lib/collections/priority_queue.tya:64
PriorityQueue.new provides the collections/PriorityQueue standard library operation.
Source
# PriorityQueue.new provides the collections/PriorityQueue standard library operation.
# @return Self the resulting value.
new: ->
PriorityQueue(nil)
peek
PriorityQueue.peek()
lib/collections/priority_queue.tya:69
PriorityQueue.peek provides the collections/PriorityQueue standard library operation.
Source
# PriorityQueue.peek provides the collections/PriorityQueue standard library operation.
# @return Any the resulting value.
peek: ->
if self.empty?()
raise error("collections.PriorityQueue.peek: empty priority queue")
self.items[self.best_index()][2]
peek_priority
PriorityQueue.peek_priority()
lib/collections/priority_queue.tya:76
PriorityQueue.peek_priority provides the collections/PriorityQueue standard library operation.
Source
# PriorityQueue.peek_priority provides the collections/PriorityQueue standard library operation.
# @return Any the resulting value.
peek_priority: ->
if self.empty?()
raise error("collections.PriorityQueue.peek_priority: empty priority queue")
self.items[self.best_index()][0]
pop
PriorityQueue.pop()
lib/collections/priority_queue.tya:83
PriorityQueue.pop provides the collections/PriorityQueue standard library operation.
Source
# PriorityQueue.pop provides the collections/PriorityQueue standard library operation.
# @return Any the resulting value.
pop: ->
if self.empty?()
raise error("collections.PriorityQueue.pop: empty priority queue")
index = self.best_index()
entry = self.items[index]
self.remove_at(index)
entry[2]
push
PriorityQueue.push(value, priority)
lib/collections/priority_queue.tya:95
PriorityQueue.push provides the collections/PriorityQueue standard library operation.
Source
# PriorityQueue.push provides the collections/PriorityQueue standard library operation.
# @param value String value value.
# @param priority Int priority value.
# @return Any the resulting value.
push: value, priority ->
if priority.class != Number
raise error("collections.PriorityQueue.push: priority must be a number")
self.items.push([priority, self.seq, value])
self.seq = self.seq + 1
self
remove_at
PriorityQueue.remove_at(index)
lib/collections/priority_queue.tya:105
PriorityQueue.remove_at provides the collections/PriorityQueue standard library operation.
Source
# PriorityQueue.remove_at provides the collections/PriorityQueue standard library operation.
# @param index Int index value.
# @return Any the resulting value.
remove_at: index ->
next = []
i = 0
while i < self.items.len()
if i != index
next.push(self.items[i])
i = i + 1
self.items = next
to_array
PriorityQueue.to_array()
lib/collections/priority_queue.tya:116
PriorityQueue.to_array provides the collections/PriorityQueue standard library operation.
Source
# PriorityQueue.to_array provides the collections/PriorityQueue standard library operation.
# @return Array the resulting value.
to_array: ->
clone = PriorityQueue(nil)
i = 0
while i < self.items.len()
clone.items.push(self.items[i])
i = i + 1
out = []
while not clone.empty?()
idx = clone.best_index()
entry = clone.items[idx]
out.push([entry[0], entry[2]])
clone.remove_at(idx)
out