Heap unit test fixes
parent
d481f1480c
commit
855c444ec5
|
@ -1,4 +1,4 @@
|
|||
USING: heaps.private help.markup help.syntax kernel math ;
|
||||
USING: heaps.private help.markup help.syntax kernel math assocs ;
|
||||
IN: heaps
|
||||
|
||||
ARTICLE: "heaps" "Heaps"
|
||||
|
@ -40,36 +40,40 @@ HELP: <max-heap>
|
|||
{ $see-also <min-heap> } ;
|
||||
|
||||
HELP: heap-push
|
||||
{ $values { "key" "a comparable object" } { "value" object } { "heap" } }
|
||||
{ $values { "key" "a comparable object" } { "value" object } { "heap" heap } }
|
||||
{ $description "Push an pair onto a heap. The key must be comparable with all other keys by the " { $link <=> } " generic word." }
|
||||
{ $side-effects "heap" }
|
||||
{ $see-also heap-push-all heap-pop } ;
|
||||
|
||||
HELP: heap-push-all
|
||||
{ $values { "seq" "a sequence of pairs" } { "heap" } }
|
||||
{ $description "Push a sequence of pairs onto a heap." }
|
||||
{ $see-also heap-push heap-pop } ;
|
||||
{ $values { "assoc" assoc } { "heap" heap } }
|
||||
{ $description "Push every key/value pair of an assoc onto a heap." }
|
||||
{ $side-effects "heap" }
|
||||
{ $see-also heap-push heap-pop } ;
|
||||
|
||||
HELP: heap-peek
|
||||
{ $values { "heap" } { "key" object } { "value" object } }
|
||||
{ $values { "heap" heap } { "key" object } { "value" object } }
|
||||
{ $description "Outputs the first element in the heap, leaving it in the heap." }
|
||||
{ $see-also heap-pop heap-pop* } ;
|
||||
|
||||
HELP: heap-pop*
|
||||
{ $values { "heap" } }
|
||||
{ $values { "heap" heap } }
|
||||
{ $description "Removes the first element from the heap." }
|
||||
{ $side-effects "heap" }
|
||||
{ $see-also heap-pop heap-push heap-peek } ;
|
||||
|
||||
HELP: heap-pop
|
||||
{ $values { "heap" } { "key" object } { "value" object } }
|
||||
{ $values { "heap" heap } { "key" object } { "value" object } }
|
||||
{ $description "Outputs the first element in the heap and removes it from the heap." }
|
||||
{ $side-effects "heap" }
|
||||
{ $see-also heap-pop* heap-push heap-peek } ;
|
||||
|
||||
HELP: heap-empty?
|
||||
{ $values { "heap" } { "?" "a boolean" } }
|
||||
{ $values { "heap" heap } { "?" "a boolean" } }
|
||||
{ $description "Tests if a " { $link heap } " has no nodes." }
|
||||
{ $see-also heap-length heap-peek } ;
|
||||
|
||||
HELP: heap-length
|
||||
{ $values { "heap" } { "n" integer } }
|
||||
{ $values { "heap" heap } { "n" integer } }
|
||||
{ $description "Returns the number of key/value pairs in the heap." }
|
||||
{ $see-also heap-empty? } ;
|
||||
|
|
|
@ -25,11 +25,11 @@ IN: temporary
|
|||
3 [ dup heap-pop* ] times
|
||||
] unit-test
|
||||
|
||||
[ 2 t ] [ <min-heap> 300 t pick heap-push 200 t pick heap-push 400 t pick heap-push 3 t pick heap-push 2 t pick heap-push heap-pop ] unit-test
|
||||
[ t 2 ] [ <min-heap> t 300 pick heap-push t 200 pick heap-push t 400 pick heap-push t 3 pick heap-push t 2 pick heap-push heap-pop ] unit-test
|
||||
|
||||
[ 1 t ] [ <min-heap> 300 300 pick heap-push 200 200 pick heap-push 400 400 pick heap-push 3 3 pick heap-push 2 2 pick heap-push 1 1 pick heap-push heap-pop ] unit-test
|
||||
[ t 1 ] [ <min-heap> t 300 pick heap-push t 200 pick heap-push t 400 pick heap-push t 3 pick heap-push t 2 pick heap-push t 1 pick heap-push heap-pop ] unit-test
|
||||
|
||||
[ 400 t ] [ <max-heap> 300 300 pick heap-push 200 200 pick heap-push 400 400 pick heap-push 3 3 pick heap-push 2 2 pick heap-push 1 1 pick heap-push heap-pop ] unit-test
|
||||
[ t 400 ] [ <max-heap> t 300 pick heap-push t 200 pick heap-push t 400 pick heap-push t 3 pick heap-push t 2 pick heap-push t 1 pick heap-push heap-pop ] unit-test
|
||||
|
||||
[ 0 ] [ <max-heap> heap-length ] unit-test
|
||||
[ 1 ] [ <max-heap> 1 1 pick heap-push heap-length ] unit-test
|
||||
[ 1 ] [ <max-heap> t 1 pick heap-push heap-length ] unit-test
|
||||
|
|
|
@ -92,7 +92,7 @@ PRIVATE>
|
|||
up-heap ;
|
||||
|
||||
: heap-push-all ( assoc heap -- )
|
||||
[ swap heap-push ] curry assoc-each ;
|
||||
[ swapd heap-push ] curry assoc-each ;
|
||||
|
||||
: heap-peek ( heap -- value key )
|
||||
heap-data first first2 swap ;
|
||||
|
@ -111,11 +111,3 @@ PRIVATE>
|
|||
: heap-empty? ( heap -- ? ) heap-data empty? ;
|
||||
|
||||
: heap-length ( heap -- n ) heap-data length ;
|
||||
|
||||
: heap-pop-all ( heap -- seq )
|
||||
[ dup heap-empty? not ]
|
||||
[ dup heap-pop drop ]
|
||||
[ ] unfold nip ;
|
||||
|
||||
: heap-sort ( assoc -- seq )
|
||||
<min-heap> tuck heap-push-all heap-pop-all ;
|
||||
|
|
Loading…
Reference in New Issue