Priority queue: Difference between revisions
Content deleted Content added
m →{{header|Sidef}}: replaced "each" with "for" loop |
Added Elixir |
||
Line 906: | Line 906: | ||
5:> Make tea |
5:> Make tea |
||
</pre> |
</pre> |
||
=={{header|D}}== |
=={{header|D}}== |
||
<lang d>import std.stdio, std.container, std.array, std.typecons; |
<lang d>import std.stdio, std.container, std.array, std.typecons; |
||
Line 951: | Line 952: | ||
; etc. |
; etc. |
||
</lang> |
</lang> |
||
=={{header|Elixir}}== |
|||
{{trans|Erlang}} |
|||
<lang elixir>defmodule Priority do |
|||
def create, do: :gb_trees.empty |
|||
def insert( element, priority, queue ), do: :gb_trees.enter( priority, element, queue ) |
|||
def peek( queue ) do |
|||
{_priority, element, _new_queue} = :gb_trees.take_smallest( queue ) |
|||
element |
|||
end |
|||
def task do |
|||
items = [{3, "Clear drains"}, {4, "Feed cat"}, {5, "Make tea"}, {1, "Solve RC tasks"}, {2, "Tax return"}] |
|||
queue = Enum.reduce(items, create, fn({priority, element}, acc) -> insert( element, priority, acc ) end) |
|||
IO.puts "peek priority: #{peek( queue )}" |
|||
Enum.reduce(1..length(items), queue, fn(_n, q) -> write_top( q ) end) |
|||
end |
|||
def top( queue ) do |
|||
{_priority, element, new_queue} = :gb_trees.take_smallest( queue ) |
|||
{element, new_queue} |
|||
end |
|||
defp write_top( q ) do |
|||
{element, new_queue} = top( q ) |
|||
IO.puts "top priority: #{element}" |
|||
new_queue |
|||
end |
|||
end |
|||
Priority.task</lang> |
|||
{{out}} |
|||
<pre> |
|||
peek priority: Solve RC tasks |
|||
top priority: Solve RC tasks |
|||
top priority: Tax return |
|||
top priority: Clear drains |
|||
top priority: Feed cat |
|||
top priority: Make tea |
|||
</pre> |
|||
=={{header|Erlang}}== |
=={{header|Erlang}}== |
||
Line 3,079: | Line 3,123: | ||
true. |
true. |
||
</pre> |
</pre> |
||
=={{header|PureBasic}}== |
=={{header|PureBasic}}== |
||
The priority queue is implemented using a binary heap array and a map. |
The priority queue is implemented using a binary heap array and a map. |
||
Line 3,455: | Line 3,500: | ||
>>> </lang> |
>>> </lang> |
||
=={{header|R}}== |
=={{header|R}}== |
||
Using closures: |
Using closures: |