assoc-heaps: removing unused and uncompleted vocab.
parent
a4dcc12b98
commit
dbd3febbf6
|
@ -1,34 +0,0 @@
|
|||
! Copyright (C) 2008 Doug Coleman.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: help.markup help.syntax io.streams.string assocs
|
||||
heaps.private ;
|
||||
IN: assoc-heaps
|
||||
|
||||
HELP: <assoc-heap>
|
||||
{ $values { "assoc" assoc } { "heap" heap } { "assoc-heap" assoc-heap } }
|
||||
{ $description "Constructs a new " { $link assoc-heap } " from two existing data structures." } ;
|
||||
|
||||
HELP: <unique-max-heap>
|
||||
{ $values { "unique-heap" assoc-heap } }
|
||||
{ $description "Creates a new " { $link assoc-heap } " where the assoc is a hashtable and the heap is a max-heap. Popping an element from the heap leaves this element in the hashtable to ensure that the element will not be processed again." } ;
|
||||
|
||||
HELP: <unique-min-heap>
|
||||
{ $values { "unique-heap" assoc-heap } }
|
||||
{ $description "Creates a new " { $link assoc-heap } " where the assoc is a hashtable and the heap is a min-heap. Popping an element from the heap leaves this element in the hashtable to ensure that the element will not be processed again." } ;
|
||||
|
||||
{ <unique-max-heap> <unique-min-heap> } related-words
|
||||
|
||||
HELP: assoc-heap
|
||||
{ $description "A data structure containing an assoc and a heap to get certain properties with better time constraints at the expense of more space and complexity. For instance, a hashtable and a heap can be combined into one assoc-heap to get a sorted data structure with O(1) lookup. Operations on assoc-heap may update both the assoc and the heap or leave them out of sync if it's advantageous." } ;
|
||||
|
||||
ARTICLE: "assoc-heaps" "Associative heaps"
|
||||
"The " { $vocab-link "assoc-heaps" } " vocabulary combines exists to synthesize data structures with better time properties than either of the two component data structures alone." $nl
|
||||
"Associative heap constructor:"
|
||||
{ $subsections <assoc-heap> }
|
||||
"Unique heaps:"
|
||||
{ $subsections
|
||||
<unique-min-heap>
|
||||
<unique-max-heap>
|
||||
} ;
|
||||
|
||||
ABOUT: "assoc-heaps"
|
|
@ -1,11 +0,0 @@
|
|||
! Copyright (C) 2008 Doug Coleman.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: assoc-heaps combinators heaps kernel tools.test ;
|
||||
|
||||
{ { { 0 "zero" } { 1 "one" } { 2 "two" } } } [
|
||||
<unique-min-heap>
|
||||
"two" 2 pick heap-push
|
||||
"zero" 0 pick heap-push
|
||||
"one" 1 pick heap-push
|
||||
heap-pop-all
|
||||
] unit-test
|
|
@ -1,29 +0,0 @@
|
|||
! Copyright (C) 2008 Doug Coleman.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: accessors assocs hashtables heaps kernel ;
|
||||
IN: assoc-heaps
|
||||
|
||||
TUPLE: assoc-heap assoc heap ;
|
||||
|
||||
C: <assoc-heap> assoc-heap
|
||||
|
||||
: <unique-min-heap> ( -- unique-heap )
|
||||
H{ } clone <min-heap> <assoc-heap> ;
|
||||
|
||||
: <unique-max-heap> ( -- unique-heap )
|
||||
H{ } clone <max-heap> <assoc-heap> ;
|
||||
|
||||
M: assoc-heap heap-push*
|
||||
pick over assoc>> key? [
|
||||
3drop f
|
||||
] [
|
||||
[ assoc>> swapd set-at ] [ heap>> heap-push* ] 3bi
|
||||
] if ;
|
||||
|
||||
M: assoc-heap heap-pop heap>> heap-pop ;
|
||||
|
||||
M: assoc-heap heap-peek heap>> heap-peek ;
|
||||
|
||||
M: assoc-heap heap-empty? heap>> heap-empty? ;
|
||||
|
||||
M: assoc-heap heap-size heap>> heap-size ;
|
|
@ -1 +0,0 @@
|
|||
Doug Coleman
|
|
@ -1 +0,0 @@
|
|||
Priority queue with fast insertion, removal of first element, and lookup of arbitrary elements by key
|
|
@ -1 +0,0 @@
|
|||
collections
|
Loading…
Reference in New Issue