Priority queue: Difference between revisions
Content added Content deleted
m (→{{header|Quackery}}: rethought insert) |
m (→{{header|Quackery}}: added remove) |
||
Line 5,449: | Line 5,449: | ||
<lang Quackery>( ***** priotity queue ***** ) |
<lang Quackery>( ***** priotity queue ***** ) |
||
[ stack ] is heap.pq ( [ --> [ ) |
[ stack ] is heap.pq ( [ --> [ ) |
||
[ stack ] is comp.pq ( [ --> [ ) |
[ stack ] is comp.pq ( [ --> [ ) |
||
[ unpack |
[ unpack |
||
comp.pq put heap.pq put ] is pq->stacks ( [ --> ) |
comp.pq put heap.pq put ] is pq->stacks ( [ --> ) |
||
[ heap.pq take comp.pq take |
[ heap.pq take comp.pq take |
||
2 pack ] is stacks->pq ( --> [ ) |
2 pack ] is stacks->pq ( --> [ ) |
||
[ heap.pq share swap peek ] is heapeek ( n --> x ) |
[ heap.pq share swap peek ] is heapeek ( n --> x ) |
||
[ heap.pq take |
[ heap.pq take |
||
swap poke heap.pq put ] is heapoke ( n x --> ) |
swap poke heap.pq put ] is heapoke ( n x --> ) |
||
[ 1+ 2 / 1 - ] is parent ( n --> n ) |
[ 1+ 2 / 1 - ] is parent ( n --> n ) |
||
[ 0 > ] is has-parent ( n --> b ) |
[ 0 > ] is has-parent ( n --> b ) |
||
[ 2 * 1+ ] is child ( n --> n ) |
[ 2 * 1+ ] is child ( n --> n ) |
||
[ child heap.pq share size < ] is has-child ( n --> b ) |
[ child heap.pq share size < ] is has-child ( n --> b ) |
||
[ 1+ ] is sibling ( n --> n ) |
[ 1+ ] is sibling ( n --> n ) |
||
[ sibling |
[ sibling |
||
heap.pq share size < ] is has-sibling ( n --> b ) |
heap.pq share size < ] is has-sibling ( n --> b ) |
||
[ comp.pq share do ] is compare ( x x --> b ) |
[ comp.pq share do ] is compare ( x x --> b ) |
||
[ 0 peek size ] is pqsize ( p --> b ) |
[ 0 peek size ] is pqsize ( p --> b ) |
||
[ swap pq->stacks |
[ swap pq->stacks |
||
Line 5,492: | Line 5,492: | ||
rot 2drop swap ] |
rot 2drop swap ] |
||
heapoke |
heapoke |
||
stacks->pq ] is topq ( p x --> p ) |
stacks->pq ] is topq ( p x --> p ) |
||
[ dup heapeek swap |
[ dup heapeek swap |
||
Line 5,506: | Line 5,506: | ||
again |
again |
||
2drop ] |
2drop ] |
||
heapoke ] is heapify.pq ( n --> ) |
heapoke ] is heapify.pq ( n --> ) |
||
[ dup pqsize 0 = if |
[ dup pqsize 0 = if |
||
Line 5,519: | Line 5,519: | ||
swap join heap.pq put |
swap join heap.pq put |
||
0 heapify.pq ] |
0 heapify.pq ] |
||
stacks->pq swap ] is frompq ( p --> p x ) |
stacks->pq swap ] is frompq ( p --> p x ) |
||
[ ]'[ 2 pack pq->stacks |
[ ]'[ 2 pack pq->stacks |
||
Line 5,525: | Line 5,525: | ||
size 2 / times |
size 2 / times |
||
[ i heapify.pq ] |
[ i heapify.pq ] |
||
stacks->pq ] is pqwith ( [ --> p ) |
stacks->pq ] is pqwith ( [ --> p ) |
||
( ***** task ***** ) |
( ***** task ***** ) |
||
[ 2 pack topq ] is insert ( p n $ --> p ) |
[ 2 pack topq ] is insert ( p n $ --> p ) |
||
[ frompq unpack ] is remove ( p --> p n $ ) |
|||
⚫ | |||
⚫ | |||
3 $ "Clear drains" insert |
3 $ "Clear drains" insert |
||
Line 5,539: | Line 5,541: | ||
2 $ "Tax return" insert |
2 $ "Tax return" insert |
||
5 times |
5 times |
||
[ remove |
|||
swap echo say ": " |
|||
swap echo say ": " |
|||
echo$ cr ] |
|||
drop</lang> |
drop</lang> |
||