Brian Schröäer <ruby.brian / gmail.com> wrote: > As I recently said, I'd like some more advanced datastructures in > ruby. So I wrote a nice priority queue extension. Maybe it's not so > nice c-code right now, because it is my first try on an extension, but > it works really good. I created quite a quick quiz solver with it ;-) Oooh nice ;) And a full blown Fibonacci Heap even. Thank you. > As I have a problem with my webspace at the moment, this first release > is mailing list only. The extension is not packaged for installation > but it is easy to build and use. > ## Usage > > require 'priority_queue' > > q = PriorityQueue.new > q.push "node1", 0 > q.puts "node2", 1 Why not "def push(priority, *args)"? That would make it easier to store multiple things in the queue. q.push distance, x, y [...] x, y = q.pop_min > q.decrease_priority("node2", -1) It should be possible to add things to the queue multiple times and access them separately. This would not work in the current version: q.push :foo, 1 q.push :foo, 100 q.decrease_priority :foo, 0 If you wrap everything into a new array when it is inserted into the queue the following would be possible: h1 = q.push 1, :foo #=> [:foo] h2 = q.push 100, :foo #=> [:foo] q.decrease_priority(0, h1) I don't know if this is better, though Viele Grüße, Levin