September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
54
Task/Priority-queue/Phix/priority-queue.phix
Normal file
54
Task/Priority-queue/Phix/priority-queue.phix
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
integer tasklist = new_dict()
|
||||
|
||||
procedure add_task(integer priority, string desc)
|
||||
integer k = getd_index(priority,tasklist)
|
||||
if k=0 then
|
||||
putd(priority,{desc},tasklist)
|
||||
else
|
||||
sequence descs = getd_by_index(k,tasklist)
|
||||
putd(priority,append(descs,desc),tasklist)
|
||||
end if
|
||||
end procedure
|
||||
|
||||
function list_task_visitor(integer priority, sequence descs, integer /*user_data*/)
|
||||
?{priority,descs}
|
||||
return 1
|
||||
end function
|
||||
|
||||
procedure list_tasks()
|
||||
traverse_dict(routine_id("list_task_visitor"), 0, tasklist,true)
|
||||
end procedure
|
||||
|
||||
function pop_task_visitor(integer priority, sequence descs, integer rid)
|
||||
string desc = descs[1]
|
||||
descs = descs[2..$]
|
||||
if length(descs)=0 then
|
||||
deld(priority,tasklist)
|
||||
else
|
||||
putd(priority,descs,tasklist)
|
||||
end if
|
||||
call_proc(rid,{priority,desc})
|
||||
return 0
|
||||
end function
|
||||
|
||||
procedure pop_task(integer rid)
|
||||
if dict_size(tasklist)!=0 then
|
||||
traverse_dict(routine_id("pop_task_visitor"), rid, tasklist,true)
|
||||
end if
|
||||
end procedure
|
||||
|
||||
add_task(3,"Clear drains")
|
||||
add_task(4,"Feed cat")
|
||||
add_task(5,"Make tea")
|
||||
add_task(1,"Solve RC tasks")
|
||||
add_task(2,"Tax return")
|
||||
|
||||
procedure do_task(integer priority, string desc)
|
||||
?{priority,desc}
|
||||
end procedure
|
||||
|
||||
list_tasks()
|
||||
?"==="
|
||||
pop_task(routine_id("do_task"))
|
||||
?"==="
|
||||
list_tasks()
|
||||
Loading…
Add table
Add a link
Reference in a new issue