Source file heap_demo.icn |
#<p>
# This file provides a class and main program that demonstrate many
# of the features provided by the Heap class, including the ability
# to specify operations using <i>closures</i> (See lang::Closure.)
#</p>
#<p>
# Author: Steve Wampler (sbw@tapestry.tucson.az.us)
# (Based on code by Kazimir Majorinc.)
#</p>
#<p>
# <i>This file is in the public domain.</i>
#</p>
import util,lang
import collection
#<p>
# Demonstrate the Heap and Closure classes.
#</p>
class HeapDemo()
method showTriple(x)
return write("\t",x[1],", ",x[2],", ",x[3])
end
method processTriples(H)
write("Inserted:")
every showTriple(H.add([j := 1 to 5, ?0, j]))
writes("Top: ")
showTriple(H.top())
write("All generated:")
every showTriple(H.gen())
write("Get:")
while showTriple(H.get())
write("Size of heap: ", H.size())
end
method processReals(H)
write("Inserted:")
every write("\t",(1 to 5, H.add(?0)))
write("Top: ", H.top())
write("All generated:")
every write("\t",H.gen())
write("Get:")
while write("\t",H.get())
write("Size of heap: ", H.size())
end
method header(msg)
write("==============")
write(msg)
write("==============")
end
initially # demonstration and test
header("Triplets, sorted by 2nd coordinate")
processTriples(Heap(, Closure("[]",Arg,2) ))
header("Heap of reals, sorted by their own value")
processReals(Heap())
header("Heap of reals, sorted by inverse order.")
processReals(Heap(, Closure("*",-1)))
header("Heap of reals, sorted by reverse order.")
processReals(Heap(,,">"))
header("Heap of reals, minimal are those closest to 1/2.")
processReals(Heap(, heap_demo2 ))
header("Heap of reals, sorted by their own value, non-empty start")
processReals(Heap([0.2,0.3,0.1,0.5,0.4]))
end
#<p><i>Internal use only</i></p>
procedure heap_demo2(x); return abs(x-0.5); end
procedure main()
HeapDemo()
end
This page produced by UniDoc on 2021/04/15 @ 23:59:43.